以下代码是否正确且足以重新启动Android中的MediaPlayer,当由于连接到服务器丢失或Internet连接丢失/切换到其他类型而导致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();
};
}
我建议注册一个侦听网络事件的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" />