Определить, подключен ли Windows Phone 7 к настольному программному обеспечению Zune - PullRequest
3 голосов
/ 20 января 2011

Я работаю над приложением Windows Phone 7 уже несколько месяцев и у меня есть коллекция полезных флагов обнаружения, которые используются для проверки таких вещей, как, если код выполняется в эмуляторе, в фоновом / переднем потокеили во время разработки.(см. полный список здесь )

Теперь я хочу добавить новый флаг, который будет проверять, подключен ли телефон к рабочему столу с помощью кабеля USB, чтобы предотвратить проблемы, о которых сообщают пользователи.Есть определенные операции, которые блокируются, когда телефон подключен к программному обеспечению Zune, например, вы не можете использовать камеру (она просто откроется, а затем сразу же закроется с помощью e.TaskResult == Microsoft.Phone.Tasks.TaskResult.Cancel).Это заставляет мое приложение думать, что пользователь отменил фотографию, которую пользователь неправильно интерпретирует как приложение, работающее некорректно.

Я хотел бы определить, когда телефон подключен к программному обеспечению Zune, и предоставитьсообщение о том, что камера не будет работать, пока они не отключат ее.Есть ли способ сделать это?

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Габор Долхай имеет полный пост в блоге Обнаружение Zune и осведомленность о сети , который использует комбинацию обнаружения NetworkInterfaceType и события NetworkAddressChangeed.

1 голос
/ 14 февраля 2011

После просмотра ответов Майка и Дерека я решил использовать простой таймер, чтобы определить, когда 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.");
    }
}

Inмои тесты были самыми быстрыми, и я смог загрузить камеру, сделать снимок и нажать кнопку подтверждения примерно через 5-6 секунд, в то время как программное обеспечение Zune автоматически отменялось и возвращалось примерно через 2,5 секунды.

Этот подходпростой и хорошо подходит для моей ситуации, однако вы должны знать, что сообщение об ошибке также будет отображаться, если пользователь нажмет кнопку «Назад» до истечения 3-секундного тайм-аута.

1 голос
/ 20 января 2011

Тестирование на наличие NetworkInterfaceType в сети Ethernet позволяет вам приблизиться, но не совсем, поскольку это не зависит от состояния Zune и WPConnect для соединения.Кроме того, чтение NetworkInterfaceType также может оказаться на меньше, чем прогулка по парку .

Обработка результирующего исключения представляется надежным методом, однако, похоже, что это исключение зависит от некоторых носителейAPI, так что следите за этим.

...