2016-06-27 28 views
0

的MediaPlayer在onCreate方法的MediaPlayer在onCreate方法播放的聲音兩次

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

if(mediaPlayer.isPlaying()) 
     { 
      mediaPlayer.stop(); 
     } 

     mediaPlayer.reset(); 
     mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.v1); 
     mediaPlayer.start(); 

    } 

播放的聲音兩次當onCreate方法STARD播放的聲音的兩倍。如何解決它?

+0

也許是活動的幾個實例在你的代碼? –

+0

@IlylyBublyk,那所有的代碼都是onCreate方法。 – user2757168

回答

0

正確的方式開始新的聲音的onCreate:

MediaPlayer mPlayer; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mPlayer = MediaPlayer.create(FakeCallScreen.this, R.raw.v1); 
     mPlayer.start(); 
    } 

然後停止它的破壞:

@Override 
public void onDestroy() { 
    mPlayer.stop(); 
    super.onDestroy(); 
} 
+0

oO這個工作,但沒有onDestroy聲音調用兩次。爲什麼? – user2757168

+0

回答這不是那麼容易..它取決於什麼活動經歷..例如:旋轉設備,打開鍵盤可以導致重新創建活動。一般情況下,系統會在設備配置更改時重新創建活動。如果您提供代碼,我們可以提供更好的幫助。 –