Я работаю над потоковым приложением Android с использованием MediaBrowserServiceCompat на основе этой замечательной статьи https://medium.com/androiddevelopers/mediabrowserservicecompat-and-the-modern-media-playback-app-7959a5196d90. Мое приложение работает довольно хорошо, за исключением случаев, когда телефон переходит в режим ожидания. Я просматривал inte rnet и вижу некоторые возможные решения, чтобы поддержать мой сервис. Одним из них является запуск пользовательского интерфейса и службы Musi c в разных процессах. Однако, поскольку я использую MediaBrowserService, я не знаю, как запустить службу из пользовательского интерфейса, используя AIDL.
Так я подключил службу к основному действию в одном и том же процессе:
MainActivity. java
private class MediaBrowserConnection extends MediaBrowserHelper {
private MediaBrowserConnection(Context context) {
super(context, MusicService.class);
}
@Override
protected void onConnected(@NonNull MediaControllerCompat mediaController) {
mMediaController = mediaController;
}
@Override
protected void onChildrenLoaded(@NonNull String parentId,
@NonNull List<MediaBrowserCompat.MediaItem> children) {
super.onChildrenLoaded(parentId, children);
}
}
MediaBrowserHelper. java
public MediaBrowserHelper(Context context,
Class<? extends MediaBrowserServiceCompat> serviceClass) {
mContext = context;
mMediaBrowserServiceClass = serviceClass;
mMediaBrowserConnectionCallback = new MediaBrowserConnectionCallback();
mMediaControllerCallback = new MediaControllerCallback();
mMediaBrowserSubscriptionCallback = new MediaBrowserSubscriptionCallback();
}
public void onStart() {
if (mMediaBrowser == null) {
mMediaBrowser =
new MediaBrowserCompat(
mContext,
new ComponentName(mContext, mMediaBrowserServiceClass),
mMediaBrowserConnectionCallback,
null);
mMediaBrowser.connect();
}
Log.d(TAG, "onStart: Creating MediaBrowser, and connecting");
}
public void onStop() {
if (mMediaController != null) {
mMediaController.unregisterCallback(mMediaControllerCallback);
mMediaController = null;
}
if (mMediaBrowser != null && mMediaBrowser.isConnected()) {
mMediaBrowser.disconnect();
mMediaBrowser = null;
}
resetState();
Log.d(TAG, "onStop: Releasing MediaController, Disconnecting from MediaBrowser");
}
Кто-нибудь знает, как это сделать, или есть другое надежное решение для поддержки потоковой передачи?
Спасибо