首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaBrowser未连接到MediaBrowserService

MediaBrowser未连接到MediaBrowserService
EN

Stack Overflow用户
提问于 2018-05-13 19:34:54
回答 1查看 1.9K关注 0票数 3

我正在尝试使用一个MediaBrowserService从一个活动连接到MediaBrowser。但是,我的onConnected回调似乎从未被调用,以允许我设置MediaController并开始操作回放。

在我的播放器/浏览器活动中:

代码语言:javascript
复制
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方法的末尾,但是执行似乎永远不会到达连接回调的onConnectedonConnectionFailed方法。调用connect后,选中的isConnected返回false。

我不知道如何进一步调试,因为问题发生在连接过程中的某个地方,而且据我所知,我的代码符合Android示例指南。是的,我在浏览器服务的setSessionToken中调用onCreate

如果我试图在活动的MediaController中设置onStart,在调用connect之后,就会得到一个异常,说明浏览器没有连接,因此无法设置会话令牌。因此,虽然我的服务的onCreate中有执行,但是连接还没有完成。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-14 12:20:11

我找到窃听器了。我在StreamingService (MediaBrowserServiceCompat)类中重写了以下方法:

代码语言:javascript
复制
@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

完全删除该方法可使连接发生。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50319923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档