Когда разрешать MediaSessionCompat.onPlay, а когда запрещать при запуске Android Auto? ⇐ Android
-
Гость
Когда разрешать MediaSessionCompat.onPlay, а когда запрещать при запуске Android Auto?
У меня есть мультимедийное приложение для Android для воспроизведения музыки. Я регистрирую службу внутри AndroidManifest.xml. Когда мое приложение запускается и моя служба отправляется onCreate(), я создаю MediaSessionCompat и регистрирую обратный вызов:
mediaSession.setCallback(new EventCallback()); Пока все хорошо. Мое приложение можно использовать, и оно воспроизводит музыку!
Однако, когда я подключаю Android Auto (с помощью desktop-head-unit) к своему приложению, вызывается EventCallback.onPlay(). В соответствии с рекомендациями по обеспечению качества Android Auto я должен убедиться, что медиафайл не воспроизводится автоматически, поэтому мне приходится перехватывать это, чтобы предотвратить воспроизведение.
Тот же обратный вызов вызывается, когда кто-то нажимает кнопку воспроизведения, и для этого события нет контекстной информации. Как же мне узнать, когда запретить воспроизведение, а когда разрешить?
Одним из способов выяснить это может быть определение того, кто запрашивает воспроизведение, но я не вижу способа сделать это с помощью обратного вызова.
Дополнительная информация
Мне было интересно, действительно ли мой код отправлял запрос на игру. После установки точек останова на все такие запросы и отсутствия таких вызовов я установил точки останова в системе отправки сообщений внутри MediaSession. Я вижу, что это вызывается:
Binder:16194_4 в группе «main»: RUNNING диспетчеризация: 657, MediaSession (android.media.session) onPlay:1243, MediaSession$CallbackStub (android.media.session) onTransact:422, ISessionCallback$Stub (android.media.session) execTransactInternal:1056, связыватель (android.os) execTransact:1029, связыватель (android.os) (предупреждение: трассировка стека скопирована вручную).
Однако я не вижу, что именно отправляет сообщение в onTransact — все, что я вижу, это вызывающая программа:
MediaSessionManager$RemoteUserInfo mPackageName = "com.google.android.projection.gearhead" мПид = 30672 мУид = 10050
У меня есть мультимедийное приложение для Android для воспроизведения музыки. Я регистрирую службу внутри AndroidManifest.xml. Когда мое приложение запускается и моя служба отправляется onCreate(), я создаю MediaSessionCompat и регистрирую обратный вызов:
mediaSession.setCallback(new EventCallback()); Пока все хорошо. Мое приложение можно использовать, и оно воспроизводит музыку!
Однако, когда я подключаю Android Auto (с помощью desktop-head-unit) к своему приложению, вызывается EventCallback.onPlay(). В соответствии с рекомендациями по обеспечению качества Android Auto я должен убедиться, что медиафайл не воспроизводится автоматически, поэтому мне приходится перехватывать это, чтобы предотвратить воспроизведение.
Тот же обратный вызов вызывается, когда кто-то нажимает кнопку воспроизведения, и для этого события нет контекстной информации. Как же мне узнать, когда запретить воспроизведение, а когда разрешить?
Одним из способов выяснить это может быть определение того, кто запрашивает воспроизведение, но я не вижу способа сделать это с помощью обратного вызова.
Дополнительная информация
Мне было интересно, действительно ли мой код отправлял запрос на игру. После установки точек останова на все такие запросы и отсутствия таких вызовов я установил точки останова в системе отправки сообщений внутри MediaSession. Я вижу, что это вызывается:
Binder:16194_4 в группе «main»: RUNNING диспетчеризация: 657, MediaSession (android.media.session) onPlay:1243, MediaSession$CallbackStub (android.media.session) onTransact:422, ISessionCallback$Stub (android.media.session) execTransactInternal:1056, связыватель (android.os) execTransact:1029, связыватель (android.os) (предупреждение: трассировка стека скопирована вручную).
Однако я не вижу, что именно отправляет сообщение в onTransact — все, что я вижу, это вызывающая программа:
MediaSessionManager$RemoteUserInfo mPackageName = "com.google.android.projection.gearhead" мПид = 30672 мУид = 10050
Мобильная версия