Обнаружить, если HDMI-сервис UP на Android-телефоне

У нас проблема с сервисом HDMI. Приложение Android TV установлено по умолчанию на STB. Когда вы запускаете STB, он не показывает вашу программу запуска, она сразу показывает вам приложение с воспроизведением потокового видео HLS. Для воспроизведения видео мы используем Exo Player версии 2.6.1 с оболочкой Exo Media версии 4.1.0. Время от времени мы исследуем черный экран, когда STB просыпается после сна - Power On by DPAD. Плейлист, который мы получаем в этом случае, работает, и переключение канала на другой хорошо работает. Эта проблема возникает обычно у тех же пользователей.

Вот что мы получаем из журнала, когда экран черный (URL_TEST - это наш запрос в плейлисте):

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

Что мы получили из журнала, когда все в порядке, а видео воспроизводится после запуска на одном устройстве (URL_TEST - это наш запрос в плейлисте):

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   

Мы заметили из журнала, когда у нас есть черный экран, у нас есть сообщения Displaymanager (HDMI) после запроса видео:

 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

Когда все в порядке, оно идет наоборот - см. Журналы выше.

Наше предположение о том, что черный экран может быть вызван службой HDMI, которая является AR UP в тот момент, когда мы запрашиваем видеопоток.

Мы пытались обнаружить соединение HDMI всеми этими способами (когда HDMI подключен/вверх, тогда мы начинаем воспроизведение видео). Как проверить состояние соединения устройства HDMI в Android? , но ничего не помогает.

Android версии 17.

Любые идеи, что может вызвать эту проблему?

UPD1:

Приложите ту же самую проблему github обсуждение

Ответ 1

Проблема решена с обновлением ExoPlayer до 2.8.4 и ExoMedia до 4.2.3