连接丢失时重新启动MediaPlayer

问题描述 投票:1回答:1

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

}
android connection listener android-mediaplayer interruption
1个回答
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" />
© www.soinside.com 2019 - 2024. All rights reserved.