以下代码是否正确且足以重新启动Android中的MediaPlayer,因为连接到服务器丢失或互联网连接丢失/切换到其他类型的HTTP MP3实时流突然停止?当与服务器的连接丢失时,我将自动重启播放器。这个监听器会处理这种类型的连接吗?
public void setOnErrorListener (MediaPlayer.OnErrorListener listener)
{
if (this.mplayer!=null)
{
showError ();
this.mplayer.reset();
this.mplayer = MediaPlayer.create(getApplicationContext(), Uri.parse(currenturl));
this.mplayer.start();
};
}
答案 0 :(得分:3)
我建议注册一个侦听网络事件的BroadcastReceiver,以便在连接丢失时停止播放,如果重新建立,则重新开始播放。否则,如果设备处于死角较长时间,则可能会因重试次数过多而导致电池耗尽。
像这样:
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if (noConnectivity) {
stopMp3();
} else {
startMp3();
}
}
}, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
在您的清单中,添加访问网络状态权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />