切换 Activity 后,Android dev mediaPlayer 流不会停止

标签 android audio stream mplayer

所以我使用一个 URL 来使用 mediaPlayer 流式传输音频 - 我可以毫无问题地启动流式传输 - 并停止它......只要我不切换 Activity 。

当我开始流...然后切换 Activity ...然后回来尝试停止它时,就会出现问题。我遇到了崩溃,因为我认为即使 mediaPlayer 仍在运行,该变量也已经为空。

我在主线程中将我的 mediaPlayer 声明为公共(public) - 所以不确定为什么在切换 Activity 后它被视为 null。

这是我启动和关闭流的代码:

 if(v.getId()==R.id.btnStart){
    Context context = getApplicationContext();
    AppPrefs appPrefs = new AppPrefs(context);

    if(listening==false){
    appPrefs.set_stream("1");
    txtListen.setVisibility(View.VISIBLE);
    listening=true;
    btnStart.setText("Stop Stream");
    String url = "http://streamingurl";
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        mediaPlayer.setDataSource(url);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        mediaPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } // might take long! (for buffering, etc)
    mediaPlayer.start();
    }
    else{
    appPrefs.set_stream("0");
    listening=false;
    if(
    mediaPlayer!=null){mediaPlayer.release();
    mediaPlayer = null;
    }
    btnStart.setText("Start Stream");
    txtListen.setVisibility(View.INVISIBLE);
    }





}

最佳答案

啊 - 只是不得不让它成为一个静态 - 忘了那部分 - 哎呀!

关于切换 Activity 后,Android dev mediaPlayer 流不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707804/

相关文章:

node.js - 来自 SFTP 连接的 Node 异步 ReadStream

android - 设置 <support-screens android :normalScreens ="false"/> still runs in Normal Screens

android - WifiManager startScan() 仅在第一次工作

Java语音学或语言发音

php - 页面加载PHP/HTML5随机声音播放器

javascript - 为什么此 Node.js 代码中没有触发 'finish' 事件?

使用套接字的 Android 代理

java - 如何从日期时间字符串中拆分日期和时间?

java - 在 Android Studio 中制作所需的 EditText 字段

javascript - 使用 Matt Diamond 的 recorder.js 在 javascript 中编码 8 位 wav