2016-09-23 13 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();

新しいで...ここ

+0

どうすればいい? startの実装で 'mediaPlayer.prepare();'を追加する必要がありますか? –

+0

あなたはmediaPlayer.stop()を呼び出しています。これは明らかに開始から再生することを意味します。これはあなたが旗で維持する必要があるものです。ユーザーが停止をクリックした場合は、フラグをtrueに設定します。さて、あなたのstartの実装では、そのフラグをチェックする必要があります。それが偽であれば、メディアを再生し、真であればメディアを再度準備する必要があります。 – Karan

0

メディアレコーダークラスは一時停止と再開、第2のリンククラスの概要は、停止を使用して再起動しようと見てサポートしていませんhttps://developer.android.com/reference/android/media/MediaPlayer.html

をMediaPlayerのの状態図を見ることができます再開リンク上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; 
     } 
それが一時停止リンクについてmethordを与えているAPIレベル
+0

'最終的なローカル変数投票は、囲みタイプで定義されているため、割り当てることができません。これを結果として得ました。 –

+0

@Mintコードを追加できますか?あなたが使用している投票変数はどこですか? –

+0

コードを更新しました。エラーは 'sound = null;'行から取得します。 –