2011-04-29 113 views
1

我正在創建一個流媒體播放器,至今其工作正常。我可以設法開始和停止流式傳輸。當我按下主頁按鈕時,活動已關閉,但聲音仍在播放。我很好,問題是當我再次啓動應用程序並點擊停止按鈕時,對象爲空。這就是我的代碼:按下主屏幕按鈕後播放器變爲空Android

public class Main extends Activity { 

private MediaPlayer player; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

} 

public void onPlayClick(View v) { 

    try { 
     player = new MediaPlayer(); 
     player.setDataSource("*****"); 
     player.setAudioStreamType(AudioManager.STREAM_MUSIC);   
     player.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       Log.i("In", "Prepared Listener"); 
       player.start(); 
      } 
     }); 
     player.prepareAsync(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

public void onStopClick(View v) { 

    if (player != null && player.isPlaying()) { 
     player.stop(); 
     player.release(); 
     player = null; 
    } 
} 

}

有誰知道什麼可能是錯的這個簡單的代碼? 非常感謝 牛逼

回答

0

我想這也是值得注意的是,如果你要去的活動路線,而不是服務,你應該把

if (player != null && player.isPlaying()) { 
    player.stop(); 
    player.release(); 
    player = null; 
} 

您的onStop(內),或的onDestroy()方法你的活動也。如果你把它放在onStop()中,當主頁按鈕被按下時(或者其他活動可能接管電話鈴聲),音頻將停止。如果你把它放在onDestroy()中,它會繼續播放,直到系統需要你的應用程序正在使用的資源。無論哪種方式,這是一個好主意,以便您的應用程序不會停留在MediaPlayer資源上,因爲無論出於何種原因,用戶都不會按停止按鈕。

相關問題