标签: mediabrowser

如何通过引用Android Auto MediaBrowser在MediaBrowserServiceCompat中设置EXTRA_PAGE和EXTRA_PAGE_SIZE?

我有一个Android Auto应用程序.我想利用分页在应用程序内浏览.您似乎可以通过获取对MediaBrowserCompat的引用并在.subscribe()中传递这些常量来设置EXTRA_PAGE和EXTRA_PAGE_SIZE.但是,我无法弄清楚如何获取Android Auto Audio用于调用.subscribe()的MediaBrowserCompat的引用.

对于一些应该简单的事情来说,这似乎太复杂了,我只是在思考这些事情吗?

pagination android-auto mediabrowserservice mediabrowserservicecompat mediabrowser

11
推荐指数
1
解决办法
395
查看次数

单击项目时 MediaBrowserServiceCompat 接收空包

我正在尝试向其他媒体应用公开媒体项目,这些应用可以通过我的MediaBrowserServiceCompat服务浏览我的应用内容。在我的onLoadChildren方法中,我正在构建 MediaBrowserCompat.MediaItem一个MediaDescriptionCompat包含Bundle一些我需要播放该项目的额外内容的 。

public class Service extends MediaBrowserServiceCompat {

...

    @Override
    public void onLoadChildren(@NonNull String parentId, @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {

        val bundle = Bundle().apply {
            putString("extra", "some value")
        }

        MediaDescriptionCompat description = new MediaDescriptionCompat.Builder()
                    .setMediaId(mediaId)
                    .setExtras(bundle)
                    .setTitle("title")
                    .setSubtitle("subtitle")
                    .setIconUri(uri)
                    .build();
        MediaBrowserCompat.MediaItem item = new MediaBrowserCompat.MediaItem(description, MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);

        val items = ArrayList<MediaBrowserCompat.MediaItem>()
        items.add(item)


        result.sendResult(items)
    }
Run Code Online (Sandbox Code Playgroud)

因此,在onPlayFromMediaId(String mediaId, Bundle extras)用户单击该项目时收到的回调中,我得到了正确的结果,mediaId但这extras是一个空包。

    private class MediaSessionCallback extends MediaSessionCompat.Callback {
     ...
        @Override …
Run Code Online (Sandbox Code Playgroud)

android mediabrowserservicecompat mediabrowser

5
推荐指数
1
解决办法
284
查看次数

如何停止 MediaBrowserServiceCompat?

我的服务:

public class MusicService extends MediaBrowserServiceCompat {
...
}
Run Code Online (Sandbox Code Playgroud)

我的活动:

public class MediaActivity extends AppCompatActivity{
private MediaBrowserCompat mMediaBrowser;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMediaBrowser = new MediaBrowserCompat(this,
                new ComponentName(this, MusicService.class), mConnectionCallback, null);
        mMediaBrowser.connect();
}

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaBrowser.disconnect();
    }
Run Code Online (Sandbox Code Playgroud)

我想在 UI 中添加关闭按钮,但如何停止MusicService?它继续在后台进行投射。

android android-mediaplayer mediabrowserservice mediabrowserservicecompat mediabrowser

5
推荐指数
1
解决办法
2257
查看次数

在 MediaBrowserService.onLoadChildren 中,何时/如何提供选项包?

MediaServiceBrowseror中MediaServiceBrowserCompat,有两种方法:

public abstract void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result)

public void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result, Bundle options)

options描述为:

Bundle:从媒体浏览器发送的特定于服务的参数包。通过结果返回的信息应该受到该包内容的影响。该值绝不能为空。

我希望向(正在加载其子级的)MediaDescriptionCompat提供额外的内容,以便在第二次调用中将它们呈现出来。MediaItem

但是,仅调用第一个方法,如在 Android Auto 下测试的那样。

我需要做什么才能因options争论而被叫去?

android mediabrowserservice mediabrowserservicecompat mediabrowser

5
推荐指数
0
解决办法
500
查看次数

MediaBrowser 未连接到 MediaBrowserService

我正在尝试使用 MediaBrowser 从活动连接到 MediaBrowserService。但是,我的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); …
Run Code Online (Sandbox Code Playgroud)

android android-activity foreground-service mediabrowserservice mediabrowser

2
推荐指数
1
解决办法
1372
查看次数