连接丢失时重新启动MediaPlayer

时间:2013-07-12 15:58:55

标签: android connection listener android-mediaplayer interruption

以下代码是否正确且足以重新启动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();
    };

}

1 个答案:

答案 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" />