检测Windows Phone 7是否连接到桌面Zune软件

我已经在Windows Phone 7应用程序上工作了几个月,并且有一组有用的检测标志,用于测试代码是在模拟器中运行,在后台/前台线程上还是在设计时间。 (见这里的完整清单) 我现在想添加一个新标志,用于检查手机是否使用USB线连接到桌面,以防止用户报告的问题。当手机连接到Zune软件时,某些操作被阻止,例如你无法使用相机(它只会打开,然后立即关闭e.TaskResult == Microsoft.Phone.Tasks.TaskResult.Cancel)。这导致我的应用程序认为用户取消了照片,用户错过了解释为应用程序无法正常工作。 我想检测手机何时连接到Zune软件并提供一条消息,说明相机在断开连接之前无法工作。有没有办法做到这一点?     
已邀请:
Gabor Dolhai有一篇关于Zune Detection and Network Awareness的完整博客文章,它使用了NetworkInterfaceType检测和NetworkAddressChangeed事件的组合。     
测试NetworkInterfaceType是以太网让你关闭,但不完全 - 因为这对连接的Zune与WPConnect的状态不敏感。此外,阅读NetworkInterfaceType也可以证明不到在公园散步。 处理生成的异常似乎是可靠的方法,但是异常确实在某些媒体API之间有所不同,因此请留意这一点。     
在回顾了Mike和Derek的答案之后,我决定使用一个简单的计时器来检测
CameraCaptureTask
何时返回的速度比预期的要快。这可以通过在调用之前添加以下权限来启动捕获任务:
State["CameraCaptureStart"] = DateTime.Now;//Save start time to detect fast cancel from zune software
然后当捕获完成时,您可以检测它是否返回太快:
//Detect if task returned too fast
if (State.ContainsKey("CameraCaptureStart"))
{
    DateTime dtStart = (DateTime)State["CameraCaptureStart"];
    TimeSpan ts = DateTime.Now - dtStart;
    if (ts < TimeSpan.FromSeconds(3))
    {
        MessageBox.Show("Error: Camera does not work while phone is connected to the Zune software.");
    }
}
在我的测试中,我可以加载相机最快,拍照片,然后按下接受按钮大约5-6秒,Zune软件将自动取消并在大约2.5秒内返回。 这种方法很简单,适用于我的情况,但是您应该知道,如果用户在3秒超时之前按下后退按钮,也会显示错误消息。     

要回复问题请先登录注册