我正在构建一个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/