いくつかのアイテムを含む ListView があり、各アイテムは特定のサウンドを再生します。これはコードです:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
try {
player.setDataSource(externalStoragePath + "/Android/data/com.whizzappseasyvoicenotepad/" + recordedFilesArray.get(arg2) + ".mp3");
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
アイテムをクリックして再生を開始し、前にクリックしたアイテムの再生が終了する前に別のアイテムをクリックすると、MediaPlayer は両方のサウンドを同時に再生します。再生が停止する前にアイテムをクリックした場合、MediaPlayer で以前のサウンドの再生を stop() し、新しいサウンドの再生を開始するにはどうすればよいですか?
試す前に player.Stop() を追加しようとしたので、アイテムをクリックするたびに、新しいソースを設定して再開する前に MediaPlayer が停止しますが、それは前のサウンドを停止するだけで、新しいサウンドを再生しません。
また、次のように IF ステートメントを追加してみました。
if (!player.isPlaying()){
//normally start the player
}
else if (player.isPlaying()){
//stop it before starting it again
}
実際のコードをコピーしますが、機能しなかったため、既に削除しました。また、以前のサウンドを停止し、新しいサウンドを再生しませんでした。