关于Windows Phone 7的猜想
在发表了Windows Phone 7发布啦以后,前天晚上又看了一些Windows Phone 7的视频。
来自channel9的视频,介绍了新出的Windows Phone 7的功能,看完这个视频,第一感觉Windows Phone is awesome. 于之前的Windows Mobile PPC甚至Windows Mobile 6.5差别很大。由于没有拿到真机,也没有ROM,所以只能猜想一下。
多点触摸(Multi-touch)
Multi-touch似乎成为触摸屏移动设备的必备功能了,很多人也把之作为iPhone的制胜法宝,其实微软在很久以前就推出了Microsoft Surface支持Multi-touch。
从视频看Windows Phone7是完全支持Multi-touch的。其实之前HTC也模拟了一些Multi-touch的功能,但是只能在HTC的Today Shell里面使用,不能用于其他应用程序,所以作用不大,这次微软推出自己的Multi-touch,我想是从底层实现的,能支持任何的应用程序,在视频中演示了如何在IE上使用Multi-touch,效果还是很理想的。我想微软可以像在Windows Mobile 6.5支持Gesture的API那样通过消息来支持多点触摸。下面是iToday使用Gesture的代码。
//
// FUNCTION: ProcessGesture(HWND, UINT, WPARAM, LPARAM)
//
// PURPOSE: Handles processing of WM_GESTURE command.
//
BOOL PanelManager::ProcessGesture(HWND hWnd, UINT, WPARAM wParam, LPARAM lParam)
{
BOOL fHandled = FALSE;
GESTUREINFO gi = {sizeof(gi)};
// Go get the gesture - will return FALSE if the gesture engine is not present in the system.
if (TKGetGestureInfo(reinterpret_cast<HGESTUREINFO>(lParam), &gi))
{
PanelBase *pPanel = m_oSwitcher.GetActivePanel();
if ( NULL == pPanel)
{
return FALSE;
}
switch (wParam)
{
case GID_PAN:
{
if (m_fAnimating)
{
//如?果?当?前?正?有?Animation进?行?,?停?止?并?显?示?当?前?的?视?图?
pPanel->SnapBackToFrame();
m_fAnimating = false;
}
if (GF_BEGIN == (gi.dwFlags & GF_BEGIN))
{
pPanel->RecordLastPanPoint(gi.ptsLocation);
}
else
{
pPanel->CalculateStartPointInMemDC(gi.ptsLocation);
pPanel->RecordLastPanPoint(gi.ptsLocation);
pPanel->ProcessPan( gi.ptsLocation );
}
fHandled = TRUE;
}
break;
case GID_SCROLL:
{
//要?考?虑?Switcher区?域?的?动?画?和?Panel区?域?的?动?画?是?否?可?以?同?时?进?行?,?目?前?这?样?做?是?不?可?以?同?时?的?。?
if (!m_fAnimating)
{
HRESULT hr = pPanel->ProcessPanEnd(
(int)GID_SCROLL_VELOCITY(gi.ullArguments),
(int)GID_SCROLL_ANGLE(gi.ullArguments) );
if ( SUCCEEDED(hr) )
{
m_fAnimating = true; // we are now animating
}
}
fHandled = TRUE;
}
break;
case GID_HOLD:
break;
case GID_SELECT:
break;
case GID_END:
{
//要?考?虑?Switcher区?域?的?动?画?和?Panel区?域?的?动?画?是?否?可?以?同?时?进?行?,?目?前?这?样?做?是?不?可?以?同?时?的?。?
if (!m_fAnimating)
{
HRESULT hr = pPanel->ProcessPanEnd( 0, 0 );
if ( SUCCEEDED(hr) )
{
m_fAnimating = true; // we are now animating
}
}
// GID_BEGIN/GID_END should always be send to DefGestureProc
}
break;
}
}
else
{
DebugPrintString(L"The gesture engine is not present in the system.\n");
}
return fHandled;
}
WPARAM wParam和LPARAM lParam是万能变量,能自由转换,这样也能支持多点触摸。
同步
Windows Moible 6.5推出了MyPhone功能,可以把手机上的信息同步到微软的在线帐号上。同时Windows Mobile还支持传统的同步方式,例如ActiveSync。关于ActiveSync可以参考 Windows Embedded CE和Windows Mobile下ActiveSync开发 。
从视频看,微软的人说Windows Phone 7支持Zune Software来sync,这是ActiveSync compatible 的协议,如果是ActiveSync的协议,我想我们还是可以自由操控Windows Phone 7,原先基于ActiveSync开发的同步软件还是可以继续使用。之前看过一篇关于iPhone七宗罪的文章,其中之一是iPhone 只能使用iTune来同步数据,而且只能同步到一台机器去,不能用其他机器去同步数据,我希望Windows Phone 7不会把这个缺点复制了。之前网上一直流行说新版的Windows Phone7会封闭起来,不允许自己同步数据,不允许自己安装软件,希望不是这样。
多任务
在视频中看不到任何多任务的信息,因此是否支持多任务在Windows Phone 7论坛上引起巨大的讨论,见这Multitasking support链接,一下子就到13页了。单任务也是iPhone七宗罪的其中一宗,有iPhone支持者说单任务是为了更好的提高用户体验,确实有这个原因。使用的Windows Mobile的时候,经常给那个关闭按钮"X"所迷惑,最小化的程序也很难找到。因此有些手机厂商为用户提供一个soft reset按钮,当系统运行慢的时候可以重启。iPhone不存在这个问题,但是同时又有其他问题,例如接到电话的时候其他程序会自动退出了。在视频中,Windows Phone7的任务切换是点击Start按钮,这也是Windows Phone 7的三个硬件按钮之一,作用重大,但是每次都会到Hubs页面,到底有没有关闭原先程序却不知道。
其实支持多任务是必须的,Windows Phone7底层肯定支持多任务,否则Hubs页面不可能同时更新不同的Hub的信息。但是微软是否给开发者或者用户提供多任务,多任务如何切换还是未知数,多任务做的不好会大大影响用户体验,原先的Windows Mobile就是这样,希望微软这次有大突破。
SDK
在First Windows Phone 7 apps sighted!文章中说,微软会在下个月发布Windows Phone 7 SDK。但是不是官方信息,不知道可靠程度。
当前在Windows Mobile 6.5下有三种开发模式: Native C++, .NET Compact Framework和Widget。可以参考一下Windows Mobile开发,Native C++ PK .NET Compact Framework 和Windows Mobile 6.5 新功能widget开发。
但是我更加期待的是Silverlight for Windows Phone或者WPF for Windows Phone。XNA等等模式,我不怕学习,我就怕我们还是需要用Win32来开发Windows Phone7,这会让我彻底失望,可以想象如果用GDI做那个Hubs的页面需要多长时间,不是不能做而是成本太大,开发者会失去兴趣。关于Silverlight可以参考 Silverlight for Windows Mobile非官方预览。
我十分期待SDK,看能为我们带来什么惊喜。
发布时间
微软的官方发布时间是holiday,什么时候是holiday,这次微软玩悬念。我想微软是不想玩的,但是Windows Phone7还没有完全准备好,到底什么时候准备好,估计微软还没有准确的计划,所以就说holiday。在美国一年有三大holiday,复活节,感恩节和圣诞节。复活节在4月初,是纪念耶稣为世人赎罪而死,然后复活的故事。不知道Windows Phone7会不会在复活节的时候复活一下。如果等到圣诞节那就太久了,看看Android的升级速度,圣诞的时候Hubs都做好了,Windows Phone还在生产线上。
这些都是我的猜想,欢迎讨论。
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。