Когда разрешать MediaSessionCompat.onPlay, а когда запрещать при запуске Android Auto?Android

Форум для тех, кто программирует под 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»