para - Detecta si Windows Phone 7 está conectado al software Zune de escritorio
zune video windows 10 (3)
Gabor Dolhai tiene una publicación de blog completa sobre Zune Detection y Network Awareness , que utiliza una combinación de detección de NetworkInterfaceType y el evento NetworkAddressChangeed.
He estado trabajando en una aplicación para Windows Phone 7 durante unos meses y tengo una colección de indicadores de detección útiles que se utilizan para probar cosas como si el código se ejecuta en el emulador, en un hilo de fondo / de primer plano, o en tiempo de diseño. (vea la lista completa aquí )
Ahora quiero agregar un nuevo indicador que verificará si el teléfono está conectado a un escritorio con un cable USB para evitar problemas que los usuarios están informando. Hay ciertas operaciones que están bloqueadas mientras el teléfono está conectado al software Zune, por ejemplo, no puede usar la cámara (se abrirá y cerrará inmediatamente con e.TaskResult == Microsoft.Phone.Tasks.TaskResult.Cancel). Esto hace que mi aplicación piense que el usuario canceló la foto, lo que el usuario no interpreta, ya que la aplicación no funciona correctamente.
Me gustaría detectar cuando el teléfono está conectado al software Zune y proporcionar un mensaje que diga que la cámara no funcionará hasta que lo desconecten. ¿Hay alguna manera de hacer esto?
La prueba de NetworkInterfaceType siendo Ethernet lo acerca, pero no del todo, ya que no es sensible al estado de Zune frente a WPConnect para la conexión. Además, leer NetworkInterfaceType también puede ser menos que un paseo por el parque .
El manejo de la excepción resultante parece ser el método confiable, sin embargo, la excepción parece variar entre algunas API de medios, así que esté atento a eso.
Después de revisar las respuestas de Mike y Derek, decidí CameraCaptureTask
un temporizador simple para detectar cuándo la CameraCaptureTask
regresa más rápido de lo esperado. Esto se hace agregando lo siguiente justo antes de la llamada para iniciar la tarea de captura:
State["CameraCaptureStart"] = DateTime.Now;//Save start time to detect fast cancel from zune software
Luego, cuando finaliza la captura, puede detectar si regresó demasiado rápido:
//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.");
}
}
En mi prueba lo más rápido que pude cargar la cámara, tomar una foto, y presionar el botón de aceptar fue de alrededor de 5-6 segundos, mientras que el software de Zune se cancelaría automáticamente y regresaría en unos 2,5 segundos.
Este enfoque es simple y funciona bien para mi situación, sin embargo, debe tener en cuenta que el mensaje de error también se mostrará si el usuario presiona el botón Atrás antes de que haya transcurrido el tiempo de espera de 3 segundos.