MediaBrowserCompat.Connect() 总是调用 onConnectionFailed() 回调

Rat*_*tul 5 android android-mediaplayer

我正在构建一个 android 媒体播放器,它将播放来自 URL 的无线电流。代码如下:

public class BaseActivity extends ActionBarCastActivity implements MediaBrowserProvider {
private MediaBrowserCompat mMediaBrowser;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mMediaBrowser = new MediaBrowserCompat(this,
            new ComponentName(this, MusicService.class), mConnectionCallback, null);
}

@Override
protected void onStart() {
    super.onStart();

    mMediaBrowser.connect();
}

private final MediaBrowserCompat.ConnectionCallback mConnectionCallback =
    new MediaBrowserCompat.ConnectionCallback() {
        @Override
        public void onConnected() {
            //setSupportMediaController code
        }

        @Override
        public void onConnectionSuspended() {

        }

        @Override
        public void onConnectionFailed() {
            Log.d(TAG, "onConnectionFailed");
        }
    }; 
}
Run Code Online (Sandbox Code Playgroud)

MusicService是扩展的服务,MediaBrowserServiceCompat是的,将以下代码放在清单中:

<service
android:name=".playback.RadioPlayerService"
android:exported="true"
tools:ignore="ExportedService">
<intent-filter>
    <action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

运行应用程序后,它总是调用onConnectionFailed回调方法。但是发现没有办法找出连接失败的实际原因。知道如何找到错误吗?

Luk*_*uke 4

回复此问题是因为我刚刚遇到了同样的问题,我不断收到 onConnectionFailed 结果。事实证明,解决方案是我忘记更新 AndroidManifest.xml 中的服务名称。

我想这里的问题可能是类似的。您确实在清单中声明了一项服务,但是,名称设置为“.playback.RadioPlayerService”,并且在创建 MediaBrowser 时,您引用“MediaService.class”。尝试更换

android:name=".playback.RadioPlayerService"
Run Code Online (Sandbox Code Playgroud)

android:name=".MusicService"
Run Code Online (Sandbox Code Playgroud)

或者,更新 MediaBrowser 的实例以引用 RadioPlayerService.class(如果存在)。