2015-07-29 3 views
0

Так что я использую URL-адрес для потоковой передачи звука с использованием mediaPlayer - я могу запустить поток без проблем - и остановить его также ... пока я не переключаюсь виды деятельности.Android dev mediaPlayer потоковая передача не прекратится после переключения активности

Проблема возникает, когда я запускаю поток ... затем переключаю действия ... затем возвращаюсь и пытаюсь остановить его. Я получаю сбой, потому что я думаю, что переменная уже равна нулю, даже несмотря на то, что MediaPlayer все еще работает.

Я объявляю свой медиаплеер публичным в основном потоке, поэтому не уверен, почему его считают нулевым после переключения действий.

Вот мой код для запуска потока, и его закрытия:

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





} 

ответ

0

ahh- просто должен был сделать это антистатическую забыл, что Упс по совместительству!