AndroidAudioRenderer : propperly set the looping value on media player
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9323 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
ac59c1ffdf
commit
1c92f500eb
@ -295,16 +295,19 @@ public class AndroidAudioRenderer implements AudioRenderer,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCompletion(MediaPlayer mp) {
|
public void onCompletion(MediaPlayer mp) {
|
||||||
mp.seekTo(0);
|
if (mp.isPlaying()) {
|
||||||
mp.stop();
|
mp.seekTo(0);
|
||||||
// XXX: This has bad performance -> maybe change overall structure of
|
mp.stop();
|
||||||
// mediaplayer in this audiorenderer?
|
|
||||||
for (AudioNode src : musicPlaying.keySet()) {
|
|
||||||
if (musicPlaying.get(src) == mp) {
|
|
||||||
src.setStatus(Status.Stopped);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// XXX: This has bad performance -> maybe change overall structure of
|
||||||
|
// mediaplayer in this audiorenderer?
|
||||||
|
for (AudioNode src : musicPlaying.keySet()) {
|
||||||
|
if (musicPlaying.get(src) == mp) {
|
||||||
|
src.setStatus(Status.Stopped);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -342,9 +345,15 @@ public class AndroidAudioRenderer implements AudioRenderer,
|
|||||||
if (channel == 0) {
|
if (channel == 0) {
|
||||||
soundpoolStillLoading.put(audioData.getId(), src);
|
soundpoolStillLoading.put(audioData.getId(), src);
|
||||||
} else {
|
} else {
|
||||||
|
if (src.getStatus() != Status.Stopped) {
|
||||||
|
soundPool.stop(channel);
|
||||||
|
src.setStatus(Status.Stopped);
|
||||||
|
}
|
||||||
src.setChannel(channel); // receive a channel at the last
|
src.setChannel(channel); // receive a channel at the last
|
||||||
setSourceParams(src);
|
setSourceParams(src);
|
||||||
// playing at least
|
// playing at least
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.log(Level.SEVERE,
|
logger.log(Level.SEVERE,
|
||||||
@ -386,11 +395,11 @@ public class AndroidAudioRenderer implements AudioRenderer,
|
|||||||
mp = new MediaPlayer();
|
mp = new MediaPlayer();
|
||||||
mp.setOnCompletionListener(this);
|
mp.setOnCompletionListener(this);
|
||||||
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (src.getStatus() == Status.Stopped) {
|
if (src.getStatus() == Status.Stopped) {
|
||||||
mp.reset();
|
mp.reset();
|
||||||
AssetKey<?> key = audioData.getAssetKey();
|
AssetKey<?> key = audioData.getAssetKey();
|
||||||
|
|
||||||
AssetFileDescriptor afd = assetManager.openFd(key.getName()); // assetKey.getName()
|
AssetFileDescriptor afd = assetManager.openFd(key.getName()); // assetKey.getName()
|
||||||
@ -402,7 +411,7 @@ public class AndroidAudioRenderer implements AudioRenderer,
|
|||||||
src.setStatus(Status.Playing);
|
src.setStatus(Status.Playing);
|
||||||
musicPlaying.put(src, mp);
|
musicPlaying.put(src, mp);
|
||||||
mp.start();
|
mp.start();
|
||||||
}else{
|
} else {
|
||||||
mp.start();
|
mp.start();
|
||||||
}
|
}
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
@ -413,7 +422,7 @@ public class AndroidAudioRenderer implements AudioRenderer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setSourceParams(AudioNode src, MediaPlayer mp) {
|
private void setSourceParams(AudioNode src, MediaPlayer mp) {
|
||||||
mp.setLooping(true);
|
mp.setLooping(src.isLooping());
|
||||||
mp.setVolume(src.getVolume(), src.getVolume());
|
mp.setVolume(src.getVolume(), src.getVolume());
|
||||||
//src.getDryFilter();
|
//src.getDryFilter();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user