Android dev mediaPlayer流媒体在切换活动后不会停止

时间:2015-07-29 17:57:58

标签: android audio stream mplayer

所以我使用一个URL来使用mediaPlayer来传输音频 - 我可以启动流没问题 - 并且也可以停止它...只要我不切换活动。

问题发生在我启动流...然后切换活动....然后回来并试图阻止它。我遇到了崩溃,因为即使mediaPlayer仍在运行,我认为该变量已经为空。

我在主线程中声明我的mediaPlayer是公共的 - 所以不确定为什么在切换活动后它被视为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);
    }





}

1 个答案:

答案 0 :(得分:0)

啊 - 只是让它变成一个静止的 - 忘了那个部分 - 哎呀!