Две проблемы здесь:
1 - IMediaPlaybackService
недоступен из других приложений. Это связано с тем, что этот сервис не экспортируется в файл манифеста приложения Music с Gingerbread (Android 2.3) (см. packages/apps/Music/AndroidManifest.xml
в исходном коде Android):
<service android:name="com.android.music.MediaPlaybackService"
android:exported="false" />
Когда значение равно false
, только компоненты одного и того же приложения или приложения с одинаковым идентификатором пользователя могут запускать службу или связываться с ней.
Приложение «Музыка» может быть перестроено с изменением атрибута XML на true
и повторной установкой на устройстве, но это приведет к проблеме № 2
2 - MediaPlaybackService
является частью встроенного приложения Android Music и используется только внутри этого приложения. Если на устройстве установлен сторонний музыкальный проигрыватель, он не будет использовать MediaPlaybackService
, и никакая информация о воспроизведении не будет доступна через его API.
К сожалению, ни одна общедоступная системная служба не предоставляет такой же API для получения доступа к информации о текущей аудиодорожке или для взаимодействия с текущим воспроизведением.
Вероятно, это связано с тем, что команда Android решила позволить каждому музыкальному проигрывателю управлять внутренней информацией об аудиотреке, а не полагаться на центральную службу, которая отслеживает то, что воспроизводится.