4

我已经在 Windows Phone 7 应用程序上工作了几个月,并且拥有一组有用的检测标志,用于测试代码是否在模拟器、后台/前台线程或在设计时间。(在这里查看完整列表

我现在想添加一个新标志,用于检查手机是否使用 USB 电缆连接到桌面,以防止用户报告问题。当手机连接到 Zune 软件时,某些操作会被阻止,例如您无法使用相机(它只会打开然后立即关闭,并使用 e.TaskResult == Microsoft.Phone.Tasks.TaskResult.Cancel)。这导致我的应用程序认为用户取消了照片,用户将其误认为应用程序无法正常工作。

我想检测手机何时连接到 Zune 软件并提供一条消息,说明相机在断开连接之前将无法工作。有没有办法做到这一点?

4

3 回答 3

3

Gabor Dolhai 有一篇关于Zune 检测和网络感知的完整博客文章,它结合了 NetworkInterfaceType 检测和 NetworkAddressChangeed 事件。

于 2011-01-20T14:45:13.113 回答
1

在查看了 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 秒超时时间过去之前按下后退按钮,也会显示错误消息。

于 2011-02-14T00:18:00.330 回答
1

测试 NetworkInterfaceType 是否为以太网可以让你接近,但并不完全在那里 - 因为这对 Zune 与 WPConnect 的连接状态不敏感。此外,阅读 NetworkInterfaceType 也可以证明比在公园里散步还少。

处理产生的异常似乎是可靠的方法,但是某些媒体 API 之间的异常确实会有所不同,因此请注意这一点。

于 2011-01-20T07:16:14.950 回答