1

当由于与服务器的连接丢失或 Internet 连接丢失/切换到其他类型而导致 HTTP MP3 直播流突然停止时,以下代码是否正确且足以在 Android 中重新启动 MediaPlayer?当与服务器的连接丢失时,我会自动重启播放器。这个监听器会处理这种类型的连接丢失吗?

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();
    };

}
4

1 回答 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" />
于 2013-07-12T16:30:51.183 回答