2015-06-24 101 views
0

我正在處理一個應用程序,在其中填充了顯示圖標的gridview。每次點擊圖標時我都需要播放音樂。Android:MediaPlayer-如何避免音樂在重新啓動應用程序時重播

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main) 

    final MediaPlayer fire = MediaPlayer.create(this,R.drawable.fire); 
    final MediaPlayer night = MediaPlayer.create(this,R.drawable.night); 


    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(this)); 

    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, 
           int position, long id) { 
      ImageView imageView = (ImageView) v; 
      //// 

      if(isPlaying) { 
       switch (position) 
       { 

        case 0:       
          fire.setLooping(true); 
          fire.start(); 
          fire.setVolume(0.34f, 0.34f); 
          imageView.setImageResource(R.drawable.fire2);    

         break; 
        case 1: 

          night.setLooping(true); 
          night.start(); 
          night.setVolume(0.34f, 0.34f); 
          imageView.setImageResource(R.drawable.night2); 

         break; 


       } 
      } 
     } 
    }); 
} 

當我按下後退按鈕並最小化應用程序時,音樂繼續播放(應該會發生)。但是當我再次打開應用程序時,它會重新啓動,所有圖標都會恢復到原始狀態,應用程序的前一個實例的音樂會繼續播放。當我再次點擊播放音樂圖標時,會出現一層新的音樂,使其非常煩人,並且重新啓動時應用程序完全無用。

我知道我應該保存狀態並在onRestart方法中恢復它。 有沒有人有一個想法,我可以解決這個問題?

回答

1

您應該使用服務在未打開應用程序的情況下使用媒體播放器播放音樂。檢查本教程:http://www.helloandroid.com/tutorials/musicdroid-audio-player-part-ii

也許正在發生的事情是,當你重新打開之前的活動被關閉的應用程序並執行onCreate方法,

+0

那麼,如何保存音樂播放狀態,當應用程序恢復它重新啓動? – kotAPI

+0

這就是爲什麼你應該使用服務,你不應該把音樂播放器放在一個活動! –

相關問題