MediaBrowser не подключается к MediaBrowserService
Я пытаюсь подключиться к MediaBrowserService из действия с использованием MediaBrowser. Тем не менее, мой onConnected
обратный вызов никогда не вызывается, чтобы позволить мне настроить MediaController
и начать манипулировать воспроизведением.
В моей деятельности игрока / браузера:
private final MediaBrowserCompat.ConnectionCallback mConnectionCallback =
new MediaBrowserCompat.ConnectionCallback() {
@Override
public void onConnected() {
try {
mMediaController =
new MediaControllerCompat(
PlayActivity.this,
mMediaBrowser.getSessionToken()
);
mMediaController.registerCallback(mControllerCallback);
mControllerCallback
.onMetadataChanged(mMediaController.getMetadata());
mControllerCallback
.onPlaybackStateChanged(mMediaController.getPlaybackState());
} catch (RemoteException e) {
throw new RuntimeException(e);
}
mMediaController
.getTransportControls()
.prepareFromUri(
Uri.parse(
getIntent()
.getStringExtra(StreamingService.STREAM_URI)),
getIntent().getExtras());
mMediaController
.getTransportControls().play();
buildTransportControls();
}
@Override
public void onConnectionSuspended() { }
@Override
public void onConnectionFailed() { }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
mMediaBrowser = new MediaBrowserCompat(this,
new ComponentName(this, StreamingService.class),
mConnectionCallback,
null);
}
@Override
public void onStart() {
super.onStart();
mMediaBrowser.connect();
}
Я добавил точки останова с помощью отладчика, и кажется, что выполнение достигает службы, до конца ее onCreate
метод, но исполнение никогда не достигает ни onConnected
или же onConnectionFailed
методы моего соединения обратного вызова. После connect
называется, проверено isConnected
возвращает ложь
Я не уверен, как отлаживать дальше, поскольку проблема возникает где-то во время процесса подключения, и насколько я могу судить, мой код соответствует руководствам примеров Android. И да, я звоню setSessionToken
в onCreate
службы браузера.
Если я попытаюсь настроить MediaController в onStart
моей деятельности, после того как я позвоню connect
, Я получаю исключение, утверждающее, что браузер не подключен и поэтому маркер сеанса не может быть установлен. Так что, хотя исполнение идет в onCreate
моего сервиса, соединение не завершено.
1 ответ
Я нашел ошибку. Я переопределил следующий метод в моем StreamingService
(MediaBrowserServiceCompat
) учебный класс:
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
Удаление метода полностью позволяет установить соединение.