У меня 3 тона. Я вызываю функцию playmusi c (), чтобы воспроизвести 2 из этих тонов при переключении вида изображения. когда я нажимаю на изображение в первый раз, тон1 начинает играть. когда я нажимаю 2-й раз на том же изображении, начинает воспроизводиться тональный сигнал 2, но тональный сигнал 1 не останавливается.
Мой требование - когда я нажимаю на изображение для - (1-й раз - тон1 должен начать играть). (2-й раз - тон1 должен прекратить воспроизведение, и тон2 должен начать воспроизведение) (3-й раз - тон2 должен прекратить воспроизведение, и тон1 должен начать воспроизведение снова) и т. Д.
String file=null;
int x=0;
public void playMusic(int i) {
x=i;
if(i==1){
file = R.raw.tone1;
}else if(i==2){
file = R.raw.tone2;
}else{
file = R.raw.tone3;
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
AssetFileDescriptor assetFileDescriptor =
Main2Activity.this.getResources().openRawResourceFd(file);
if(assetFileDescriptor == null) return;
try {
mediaPlayer.setDataSource(
assetFileDescriptor.getFileDescriptor(),
assetFileDescriptor.getStartOffset(),
assetFileDescriptor.getLength()
);
assetFileDescriptor.close();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if(mediaPlayer != null){
mediaPlayer.release();
mediaPlayer = null;
}
}
});
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(final MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
mediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
// HelpFunctions.showLog("ERROR = " + e);
} catch (IllegalStateException e) {
// HelpFunctions.showLog("ERROR = " + e);
} catch (IOException e) {
// HelpFunctions.showLog("ERROR = " + e);
}
}