In my app i have the following code:
try {
AssetFileDescriptor afd = context.getAssets().openFd(SOUNDS + filePath + MP3);
MediaPlayer mediaPlayer = new MediaPlayer();
if (useMediaVolume) {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
}
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.setOnPreparedListener(prepareListener);
mediaPlayer.prepareAsync();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SecurityException ex) {
MonitorDataHelper.logException(ex);
ex.printStackTrace();
}
private MediaPlayer.OnPreparedListener prepareListener = new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setOnCompletionListener(completionListener);
mediaPlayer.start();
}
};
private MediaPlayer.OnCompletionListener completionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.stop();
mediaPlayer.release();
}
};
And it DO work on pre-5.0 and even on Nexus 7 Android 5.0, but according to user reports it doesn't work on Nexus 5.
The sound files are small - move sounds for chess game. Windows show their length like 00:00:00, but they play fine. VBR is about 100kbs:
Before first reports i started play w/o asyncPrepare, and it worked on pre-lollipop, but didn't work on lollipop even on Nexus 7. Now it works on my Nexus 7(5.0.2) but according to users doesn't on Nexus 5.
Any ideas to try? Thanks in advance.
Aucun commentaire:
Enregistrer un commentaire