2016-09-23 95 views
0

我在實現媒體播放器時遇到了一些問題。我不知道如何重置音頻。我應該執行什麼操作來使音頻停止並在點擊播放按鈕時再次播放。請告訴我。謝謝。Android:重置音頻

下面的代碼:

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


Button btnPlay = (Button) findViewById(R.id.btnPlay); 
Button btnPause = (Button) findViewById(R.id.btnPause); 
Button btnStop = (Button) findViewById(R.id.btnStop); 

final MediaPlayer sound = MediaPlayer.create(MainActivity.this, R.raw.doa); 

btnPlay.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     sound.start(); 
     Toast.makeText(getBaseContext(), "Play Audio", Toast.LENGTH_SHORT).show(); 
    } 

}); 

btnPause.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     sound.pause(); 
     Toast.makeText(getBaseContext(), "Pause Audio", Toast.LENGTH_SHORT).show(); 

    } 
}); 

btnStop.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     sound.reset(); 
     if (null!=sound){ 
      sound.stop(); 
      sound.reset(); 
      sound.release(); 
      sound=null; 

      } 
     } 
    }); 
} 
} 
+0

你的代碼沒有問題。你似乎不清楚'.stop()'的作用。它**停止**媒體播放。也許你想停下來呢?如果要再次播放該文件,則需要在調用stop()後再次加載該文件。 – 323go

+0

@ 323go是這樣嗎?如果我想在單擊停止按鈕後播放音頻,該怎麼辦?我怎樣才能加載它? –

+0

與第一次加載它相同的方式;) – 323go

回答

0

當你停止媒體,你需要在開始之前,再次準備。

mediaPlayer.prepare(); mediaPlayer.start();

你可以看到的MediaPlayer的狀態圖在這裏https://developer.android.com/reference/android/media/MediaPlayer.html

+0

我應該如何準備它?我需要在執行start時添加'mediaPlayer.prepare();'嗎? –

+0

你正在調用mediaPlayer.stop(),這意味着你顯然想要從頭開始播放它。這是你需要維護的旗幟。如果用戶點擊停止,請將該標誌設置爲true。現在,在開始執行時,您需要檢查該標誌。如果它是假的,只要播放媒體,如果它是真的,那麼你需要再次準備媒體。 – Karan

0

媒體錄像機類不支持暫停和恢復,看到第二個鏈接類概述嘗試使用停止和重新啓動..

在新API級別24已經給予暫停鏈接的methord:https://developer.android.com/reference/android/media/MediaRecorder.html#pause()在簡歷鏈接:https://developer.android.com/reference/android/media/MediaRecorder.html#resume()

嘗試一下本作停止代碼:

if (null != sound) { 
      sound.stop(); 
      sound.reset(); 
      sound.release(); 
      sound= null; 
     } 
+0

'最終的局部變量投票無法分配,因爲它是在一個封閉類型中定義的'我得到了這個結果。 –

+0

@Mint你可以添加代碼嗎?和你正在使用的投票變量在哪裏? –

+0

更新了代碼。錯誤是從'sound = null;' –