Cómo habilitar la Diferenciación de Intel® Wireless Display para Miracast* en teléfonos con la arquitectura Intel®
Nota: Este tutorial ha sido donado a la comunidad de javaHispano por Intel. Intel espera que en el futuro sus procesadores incrementen considerablemente su presencia en los terminales móviles Android, por ello ha creído que este artículo sería interesante para nuestra comunidad. El artículo puede encontrarse en la web de Intel aquí. Podéis encontrar el primer artículo de la serie aquí, el segundo aquí, y el tercero aquí. En la web de Intel tenéis más tutoriales en español sobre Android.
Introducción
La tecnología de pantalla inalámbrica es cada vez más popular en teléfonos y tabletas Android* desde que Google comenzó a ofrecer compatibilidad con Miracast en Android 4.2. La tecnología de pantalla inalámbrica hace que sea sencillo que los usuarios expandan el tamaño del LCD de su teléfono. Creo que existe una buena posibilidad de que los vendedores de software independientes (ISV) integrarán la característica de la pantalla inalámbrica en sus aplicaciones, especialmente los juegos y reproductores de video.
Pero cómo lograr la diferenciación de Intel® Intel Wireless Display para Miracast* en Android para teléfonos x86 es un gran desafío para la habilitación de los vendedores de software independientes (ISV). Este artículo introduce la manera de habilitar la diferenciación de pantalla doble para Miracast al mostrar un caso de estudio sobre la habilitación del reproductor de video en línea iQiyi y WPS office en K900. Esperamos que muchas aplicaciones fabulosas se puedan habilitar en el futuro.
Qué es Miracast
Wi-Fi Alliance anunció oficialmente el 19 de septiembre de 2012 que Miracast está CERTIFICADO para Wi-Fi*. Este tipo de conexión es una solución de vanguardia para mostrar videos sin interrupciones entre dispositivos, sin cables y sin una conexión de red. Los usuarios pueden ver fotografías o videos desde un smartphone en un televisor de pantalla grande, compartir una pantalla de equipo portátil con el proyector de una sala de conferencias en tiempo real y disfrutar de los programas en vivo de un dispositivo doméstico de TV por cable en una tableta. Las conexiones Miracast se forman con Wi-Fi Direct* CERTIFICADO para Wi-Fi, de manera que no es necesario el acceso a una red de Wi-Fi: la habilidad para conectarse se encuentra dentro de los dispositivos certificados para Miracast.
La conexión de Miracast se basa en una conexión P2P Wi-Fi Direct. A continuación, se muestra la arquitectura de Miracast basada en Wi-Fi.
Ilustración 1: Arquitectura Miracast*
Existen cuatro modos de conexiones Miracast tal como se muestran aquí:
Ilustración 2: Modos de conexión Miracast*
Con una conexión Miracast, puede habilitar la conectividad en varios dispositivos sin la infraestructura AP Wi-Fi, como muestra la topología 1. También puede conectarse a una pantalla mediante un adaptador mientras está conectado a un AP, como muestra la topología 2. Con este modo, es muy conveniente ver un video en línea en casa. Si tiene un televisor 'inteligente' que también es compatible con Miracast, su televisor, AP y smartphone incluso pueden conectarse entre sí, tal como muestra la topología 4.
Según el estándar de Miracast, el modo interactivo de dispositivos de origen y pantallas se puede representar en forma de diagrama tal como se muestra a continuación:
Ilustración 3: Administración de sesiones Miracast*
Los dispositivos de origen y pantallas detectan las capacidades de Miracast entre sí antes de la configuración de la conexión. La conexión se basa en la conexión Wi-Fi Direct o TDLS. Los dispositivos de origen y pantallas definen los parámetros de la sesión Miracast según la negociación de capacidades. El proceso de negociación se basa en la conexión TCP. Los dispositivos de origen transferirán el contenido a dispositivos con pantallas mediante el formato MPEG2-TS a través de la conexión UDP.
Los formatos compatibles con la transmisión Miracast inalámbrica aparecen en la Tabla 4.
Tabla 4: Formatos de transmisión Miracast*
Miracast en Android 4.2
Google comenzó la compatibilidad con Miracast en la versión 4.2 de Android. Los usuarios finales pueden compartir películas, fotografías, videos de YouTube y cualquier cosa que aparezca en pantalla con HDTV mediante la tecnología de pantalla inalámbrica. El HDTV externo aparece como una pantalla externa.
Ahora Miracast en Android es compatible con el modo de clonación y con el modo de presentación, tal como se ilustra a continuación:
Ilustración 5: Modos compatibles con Miracast*
El modo de clonación duplica la pantalla del teléfono en la pantalla remota. La resolución de las imágenes enviadas al adaptador coincide con la de la pantalla local. En este modo, las pantallas locales y remotas se encienden y muestran el mismo contenido.
En el modo de presentación, ahora Android permite que su aplicación muestre contenido único en pantallas adicionales que están conectadas con el dispositivo del usuario en una conexión con cables o Wi-Fi. Las aplicaciones deben modificarse para que sean compatibles con este modo o regresarán de forma predeterminada al modo de clonación.
Desarrollo de diferenciación para Miracast en teléfonos con la arquitectura Intel
La solución Intel® Wireless Display en teléfonos y tabletas Android es completamente compatible con Miracast. También habilitamos algunas aplicaciones con usos de diferenciación para Miracast en teléfonos con la arquitectura Intel.
La primera es habilitar iQiyi para determinar la función de transmisión en segundo plano de videos. Los usuarios pueden enviar videos a una pantalla remota a una resolución de 1080p usando una aplicación iQiyi que habilite la transmisión en segundo plano mientras los usuarios pueden navegar fuera de la aplicación y reproducir el video de 1080p en la pantalla local o utilizar cualquier otra aplicación, incluyendo el envío de correos electrónicos o el acceso a su navegador sin ninguna interrupción en la reproducción en segundo plano, tal como se muestra a continuación:
Ilustración 6: Función BGM de video iQiyi
La segunda es habilitar WPS office para dividir la función de la interfaz de usuario en pantallas locales y remotas. Cuando se conecta al televisor mediante pantalla inalámbrica, la aplicación WPS office habilitada puede mostrar diapositivas de PowerPoint en la pantalla remota y mostrar notas de PowerPoint en la pantalla del teléfono, lo cual es muy conveniente para el orador. En el futuro, planeamos agregar un cronómetro en la pantalla del teléfono para mostrarle al orador un recordatorio sobre el tiempo restante.
Ilustración 7: Función de interfaz de usuario dividida en WPS office
Estos dos usos de diferenciación se desarrollaron en base al modo de presentación Miracast con la capacidad del hardware de la arquitectura Intel de teléfonos. Las dos aplicaciones han sido cargadas en Intel AppUp® para que los usuarios finales las descarguen e instalen en sus teléfonos con la arquitectura Intel.
Caso de estudio: Cómo habilitar los usos de diferenciación de pantallas dobles
En esta sección, mostraré cómo crear una función de transmisión en segundo plano de video basada en nuestra experiencia para la habilitación de una aplicación iQiyi.
En nuestra opinión, para llevar a cabo la función BGM de videos, la dificultad principal es obtener un servicio para reproducir videos en segundo plano y administrar la correcta vista de superficie o de video. Cuando los usuarios pulsan la tecla de inicio, la vista de la superficie o la del video se destruirá automáticamente, de manera que tenemos que aplicar una pantalla secundaria para mostrar el video de transmisión en segundo plano. A continuación se muestra el diagrama del flujo del programa:
Ilustración 8: Diagrama de flujo de transmisión del video en segundo plano
Para crear contenido único para una pantalla secundaria, extienda la clase Presentation
e implemente la llamada de regreso onCreate()
. EnonCreate()
, especifique la interfaz de usuario para la pantalla secundaria al llamar setContentView()
. Como una extensión de la clase Dialog
, la clase Presentation
proporciona la región en la cual su aplicación puede mostrar una interfaz de usuario única en la pantalla secundaria.
Existen dos métodos para aplicar la pantalla secundaria para su presentación. Utilice la API de DisplayManager
o de MediaRouter
. La manera más sencilla de seleccionar una pantalla de presentación es utilizar la API de MediaRouter
. El servicio del enrutador de medios lleva el control de qué rutas de audio y video están disponibles en el sistema. El enrutador de medios recomienda la pantalla de presentación preferida que debería utilizar la aplicación, si desea mostrar el contenido en la pantalla secundaria.
Así es como se utiliza el enrutador de medios para crear y mostrar una presentación en la pantalla de presentación preferida congetPresentationDisplay()
.
1 |
MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); |
2 |
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(); |
3 |
if (route != null) { |
4 |
Display presentationDisplay = route.getPresentationDisplay(); |
5 |
if (presentationDisplay != null) { |
6 |
Presentation presentation = new MyPresentation(context, presentationDisplay); |
7 |
presentation.show(); |
8 |
} |
9 |
} |
Otra manera de seleccionar una pantalla de presentación es utilizar la API de DisplayManager
directamente. El servicio del administrador de pantallas proporciona funciones para enumerar y describir todas las pantallas conectadas al sistema incluyendo las pantallas que podrían utilizarse para presentaciones.
El administrador de pantallas lleva un control de todas las pantallas que se encuentran en el sistema. Así es cómo se identifican pantallas aptas para mostrar presentaciones con getDisplays(String)
y la categoría DISPLAY_CATEGORY_PRESENTATION
.
1 |
DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); |
2 |
Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); |
3 |
if (presentationDisplays.length > 0) { |
4 |
Display display = presentationDisplays[0]; |
5 |
Presentation presentation = new MyPresentation(context, presentationDisplay); |
6 |
presentation.show(); |
7 |
} |
Los desarrolladores pueden hacer referencia al código de demostración de la presentación en el SDK de Android tal como se muestra a continuación:
\sdk\sources\android-17\android\app\Presentation.java
Resumen
Además del atractivo comercial de Intel Inside® para teléfonos y tabletas basadas en la arquitectura Intel, la característica de pantalla inalámbrica puede convertirse en una ventaja destacada. Los vendedores de software independientes (ISV) deben prestar atención y desarrollar más usos innovadores basados en pantallas inalámbricas, especialmente los usos de diferenciación de pantallas dobles.
Referencia
- http://www.wi-fi.org
- http://developer.android.com/about/versions/android-4.2.html
- Wi-Fi_Display_Technical_Specification_v1.0.0
Reader Comments