por - Detectar si el servicio HDMI está en la TV Android
conectar celular a tv por bluetooth (1)
Tenemos un problema con el servicio de HDMI. Nuestra aplicación de Android TV está configurada como predeterminada en STB. Cuando inicia STB, no muestra el iniciador, muestra la aplicación inmediatamente con la reproducción de transmisión de video HLS. Para reproducir video, estamos utilizando Exo Player versión 2.6.1 con Exo Media wrapper versión 4.1.0. Una y otra vez, investigamos la pantalla en negro cuando el STB se despierta después de dormir: encendido por DPAD. La lista de reproducción que obtenemos en estos casos funciona y cambiar de canal a otro funciona bien. Este problema se produce comúnmente en los mismos usuarios.
Aquí lo que obtenemos del registro cuando la pantalla está en negro (URL_TEST es nuestra solicitud de lista de reproducción):
09-06 19:21:40.018 I/PowerManagerService( 369): Waking up from sleep...
09-06 19:21:40.018 I/WindowManager( 369): No lock screen!
09-06 19:21:40.038 I/AudioHardwareALSA( 104): AudioHardwareALSA::setParameters() screen_state=on
09-06 19:21:40.038 I/qtaguid ( 369): Failed write_ctrl(s 1 10056) res=-1 errno=1
09-06 19:21:40.038 W/NetworkManagementSocketTagger( 369): setKernelCountSet(10056, 1) failed with errno -1
09-06 19:21:40.078 D/LightsService( 369): Excessive delay setting light: 54ms
09-06 19:21:41.018 W/SurfaceFlinger( 101): Timed out waiting for hw vsync; faking it
09-06 19:21:41.158 W/OkHttp ( 682): previous digest authentication with same nonce failed, returning null
09-06 19:21:41.158 D/OkHttp ( 682): Cached authentication expired. Sending a new request.
09-06 19:21:42.018 W/SurfaceFlinger( 101): Timed out waiting for hw vsync; faking it
09-06 19:21:42.098 D/DAKARMainActivity( 682): URL_TEST getUri: http://XXX.XXX.XX.XXX:XXXXX/XLIVE/0431233...8355920521/26/3/stream.m3u8
09-06 19:21:43.098 W/SurfaceFlinger( 101): Timed out waiting for hw vsync; faking it
09-06 19:21:43.428 W/DisplayD( 97): iface id HDMI screen is 0
09-06 19:21:43.428 D/Displaymanager( 97): [setHDMIEnable] display 0
09-06 19:21:43.428 D/Displaymanager( 97): [operateIfaceMode] property 0 iface 4 type 1 mode 1280x720p-60
09-06 19:21:43.428 D/Displaymanager( 97): [operateIfaceEnable] property 0 iface 4 operate 1 value 1
09-06 19:21:43.438 W/Displaymanager( 97): interface 4 not support led
09-06 19:21:43.648 I/ActivityManager( 369): Config changes=1400 {1.0 ?mcc?mnc en_LU ldltr sw720dp w1280dp h672dp 160dpi lrg long land -touch -keyb/v/h dpad/v s.8}
09-06 19:21:43.658 D/RemoteControlManager( 369): BroadcastReceiver:android.intent.action.CONFIGURATION_CHANGED
Lo que obtuvimos del registro cuando todo está bien y el video se está reproduciendo después de comenzar en el mismo dispositivo (URL_TEST es nuestra solicitud de lista de reproducción):
09-05 19:21:58.507 I/PowerManagerService( 369): Waking up from sleep...
09-05 19:21:58.517 I/WindowManager( 369): No lock screen!
09-05 19:21:58.527 D/SurfaceFlinger( 102): Screen acquired, type=0 flinger=0x40691318
09-05 19:21:58.537 I/AudioHardwareALSA( 105): AudioHardwareALSA::setParameters() screen_state=on
09-05 19:21:58.537 I/qtaguid ( 369): Failed write_ctrl(s 1 10056) res=-1 errno=1
09-05 19:21:58.537 W/NetworkManagementSocketTagger( 369): setKernelCountSet(10056, 1) failed with errno -1
09-05 19:21:58.577 W/DisplayD( 98): iface id HDMI screen is 0
09-05 19:21:58.577 D/Displaymanager( 98): [setHDMIEnable] display 0
09-05 19:21:58.577 D/Displaymanager( 98): [operateIfaceMode] property 0 iface 4 type 1 mode 1280x720p-60
09-05 19:21:58.577 D/Displaymanager( 98): [operateIfaceEnable] property 0 iface 4 operate 1 value 1
09-05 19:21:58.577 W/Displaymanager( 98): interface 4 not support led
09-05 19:21:58.587 D/LightsService( 369): Excessive delay setting light: 59ms
09-05 19:21:58.797 D/RemoteControlManager( 369): BroadcastReceiver:android.intent.action.CONFIGURATION_CHANGED
09-05 19:21:58.797 D/Environment( 369): screen raw size:1280,720
09-05 19:21:58.797 I/ActivityManager( 369): Config changes=1400 {1.0 ?mcc?mnc en_LU ldltr sw720dp w1280dp h672dp 160dpi lrg long land -touch -keyb/v/h dpad/v s.9}
09-05 19:21:58.947 W/OkHttp ( 681): previous digest authentication with same nonce failed, returning null
09-05 19:21:58.947 D/OkHttp ( 681): Cached authentication expired. Sending a new request.
09-05 19:21:59.077 I/Displaymanager( 98): updatesinkaudioinfo: 0x408de140
09-05 19:21:59.077 I/Displaymanager( 98): BUF: AC3,LPCM,
09-05 19:21:59.077 I/Displaymanager( 98):
09-05 19:21:59.077 W/DisplayD( 98): Send msg Iface added HDMI
09-05 19:21:59.137 D/DAKARMainActivity( 681): URL_TEST getUri: http://XXX.XXX.XX.XXX:13888/XLIVE/4086274310...086993824321/26/3/stream.m3u8
09-05 19:21:59.417 I/OMXClient( 681): Using client-side OMX mux.
09-05 19:21:59.417 I/ ( 681): new RKOMXPlugin
09-05 19:21:59.427 D/ACodec ( 681): MEDIA_MIMETYPE_AUDIO_AAC sampleRate 48000 wifidisplay_flag 0 info 6c5bbe78
09-05 19:21:59.427 E/OMXNodeInstance( 681): OMX_GetExtensionIndex failed
Nos dimos cuenta de que cuando tenemos una pantalla en negro tenemos mensajes de este administrador de pantalla (HDMI) después de la solicitud de video:
09-06 19:21:42.098 D/DAKARMainActivity( 682): URL_TEST getUri: http://XXX.XXX.XX.XXX:XXXXX/XLIVE/0431233...8355920521/26/3/stream.m3u8
09-06 19:21:43.098 W/SurfaceFlinger( 101): Timed out waiting for hw vsync; faking it
09-06 19:21:43.428 W/DisplayD( 97): iface id HDMI screen is 0
09-06 19:21:43.428 D/Displaymanager( 97): [setHDMIEnable] display 0
09-06 19:21:43.428 D/Displaymanager( 97): [operateIfaceMode] property 0 iface 4 type 1 mode 1280x720p-60
09-06 19:21:43.428 D/Displaymanager( 97): [operateIfaceEnable] property 0 iface 4 operate 1 value 1
09-06 19:21:43.438 W/Displaymanager( 97): interface 4 not support led
Cuando todo está bien, viceversa, consulte los registros anteriores.
Nuestra suposición de que la pantalla en negro podría ser causada por el servicio HDMI que no está ARRIBA en el momento en que solicitamos transmisión de video.
Hemos intentado detectar la conexión HDMI mediante todos estos métodos (cuando HDMI está conectado / encendido, entonces comenzamos a reproducir video). ¿Cómo verificar el estado de conexión del dispositivo HDMI en Android? , pero nada ayuda.
Versión para Android 17.
¿Alguna idea de qué podría causar este problema?
UPD1:
Adjuntar el mismo tema de discusión de github.
Problema resuelto con la actualización de ExoPlayer a 2.8.4 y ExoMedia a 4.2.3