我正在构建一个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");
        }
    };
}

这里MusicService是扩展MediaBrowserServiceCompat的服务,是的,将以下代码放入清单中:
<service
android:name=".playback.RadioPlayerService"
android:exported="true"
tools:ignore="ExportedService">
<intent-filter>
    <action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>

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

最佳答案

回答这个问题时,我遇到了同样的问题,我不断得到onconnectionfailed结果。结果发现,解决方案是我忘记在androidmanifest.xml中更新服务的名称。
我认为这里的问题可能类似。您的清单中确实声明了一个服务,但是名称被设置为“.playback.radioplayerservice”,并且在创建MediaBrowser时,您引用的是“mediaservice.class”。尝试替换

android:name=".playback.RadioPlayerService"

具有
android:name=".MusicService"

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

关于android - MediaBrowserCompat.Connect()始终调用onConnectionFailed()回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42359101/

10-10 20:18