当我点击它时,我有一个按钮向我显示带有图片的幻灯片,并使用以下代码播放我的SD卡中的音频:
public void buttonClickHandler(View v) {
this.onClickNextDiapositiva();
Diapositiva diapo1 = this.getDiapoActual();
try {
if (diapo1.tieneSonido()) {
String sndPath = ZIP_SND_PATH + diapo1.getSonido().getNombre();
InputStream isSonido = this.getTutorFile().getFile(sndPath);
this.audioPlayer = new StreamingMediaPlayer(this);
this.audioPlayer.startStreaming(isSonido);
} else if (diapo1.tieneVideo()) {
if (!diapo1.tieneImagen()) {
String imgPath = ZIP_FONDOS_PATH + "fondo_video.png";
cargarImagen(imgPath);
}
}
} catch (Throwable ex) {
Log.e("mostrarDiapositiva", ex.getMessage());
Toast
.makeText(this, "Error: " + ex.getMessage(), Toast.LENGTH_SHORT)
.show();
}
break;
}
事实是代码有效,幻灯片被更改并且音频被播放但它开始播放,当播放时间不到一秒时它再次启动,就好像它是否结巴。
知道为什么会这样吗?非常感谢
答案 0 :(得分:1)
使用MediaPlayer而不是StreamingMediaPlayer
例如:
MediaPlayer mp = new MediaPlayer();
// when you want to play the sound stored in nodeaudio:
// nodeaudio is a path like /min/sdcard/soundfile
if (nodeaudio == null || nodeaudio.trim().equals("")) {
mp.reset();
} else {
try {
mp.reset();
mp.setDataSource(nodeaudio);
mp.prepare();
mp.start();
}
catch(Exception e) {
Log.e("Play sound ERROR", e.toString());
e.printStackTrace();
}
}