2013-08-22 134 views
0

我有以下代碼:重放聲音多次點擊按鈕

if (someId.matches("A") || someId.matches("a")) { 
     tvLetCap.setText("A"); 
     tvLetLow.setText("a"); 
     ivLetterIcon.setImageResource(R.drawable.apple); 
     btnDisplayWord.setText("A is for APPLE"); 
     mpSound = MediaPlayer.create(this, R.raw.sound); 
     mpSound.setLooping(false); 
     btnPlay.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       /*try { 
        Uri uri = Uri.parse("android.resource://com.mypack.testing/" + R.raw.sound); 
        mpSound.setDataSource(getApplicationContext(),uri); 
        mpSound.prepare(); 
        */ 
        mpSound.start(); 
        btnPlay.setVisibility(View.GONE); 
        btnStop.setVisibility(View.VISIBLE); 
        btnStop.setOnClickListener(stopSound); 
       /*} 
       catch (IOException e){ 
        Log.e("REPLAYING", "prepare() failed"); 
       }*/ 
      } 
     }); 
     mpSound.setOnCompletionListener(new OnCompletionListener() { 
      public void onCompletion(MediaPlayer mp) { 
       mpSound.release(); 
       btnPlay.setVisibility(View.VISIBLE); 
       btnStop.setVisibility(View.GONE); 
      } 
     }); 
    } 

它起着罰款代碼註釋,但每當我試圖重新播放文件我的應用程序FC。聲音文件位於res/raw/sound.mp3

如何修改代碼,使其播放的次數與按下btnPlay的次數相同。

回答

1

您已經發布了媒體播放器。如果你想重用它,不要這樣做。

+0

僅在onDestroy()期間使用它? –

+0

是的,如果這是你唯一一次完成它。但是一旦你調用它,你就不能再使用這個對象了。 –

+0

直到我回到我猜測的活動? –

1

有用於媒體播放器的一些方法... http://developer.android.com/reference/android/media/MediaPlayer.html

也許你需要的onClick方法使用mpSound.reset()的按鈕(前一段時間我有這樣的錯誤:P)? :)

+0

別人說不要用它... –

+0

有一個問題 - 爲什麼?如果它有效,就使用它;)也許它不是超優化的,但我們不寫入人工智能或解決優化問題(那麼我們應該至少使用C++語言:P)。今天的電話足夠強大的重啓媒體播放器在幾毫秒(並在同一時間有100個其他任務),所以我們可以利用它:P – Krystian

+0

它的工作!哈哈謝謝 ;) –

相關問題