android中的声音(StreamingMediaPlayer工作不正常。声音沙哑) private void mostrarDiapositiva(向量d,整数位置){ 如果(位置>=d.尺寸()){ 位置=d.尺寸()-1; } dipositiva dipo=d.get(pos); 这是一个实际(pos); 这是一个实际的(DIPO); 阳性雷氏菌(); mostrarDiapositiva(底辟); 试一试{ if(dipo.tieneSonido()){ 字符串sndPath=ZIP_SND_PATH+diapo.getSonido().getNombre(); InputStream isSonido=this.getutorfile().getFile(sndPath); this.audioPlayer=新的StreamingMediaPlayer(this); 这个.audioPlayer.startStreaming(isSonido); }else if(dipo.tieneVideo()){ 如果(!dipo.tieneImagen()){ 字符串imgPath=ZIP\u FONDOS\u PATH+“fondo\u video.png”; cargarImagen(imgPath); } } }捕获(可丢弃的ex){ Log.e(“mostrarDiapositiva”,例如getMessage()); 干杯 .makeText(此,“错误:+ex.getMessage(),Toast.LENGTH\u SHORT) .show(); } } 私人空房-多发性脊髓灰质炎(Dipositiva-Dipo){ ImageButton bp=(ImageButton)findViewById(R.id.buttonprev); bp.setImageResource(R.drawable.ic\u菜单返回); ImageButton bn=(ImageButton)findViewById(R.id.buttonnext); bn.setImageResource(R.drawable.ic菜单向前); 试一试{ if(dipo.tieneImagen()){ 字符串imgPath=ZIP_IMG_PATH+diapo.getImagen().getNombre(); cargarImagen(imgPath); } 这个。动物法(这个。鳍状肢); //if(dipo.tieneSonido()){ //字符串sndPath=ZIP_SND_PATH+diapo.getSonido().getNombre(); //InputStream isSonido=this.getutorfile().getFile(sndPath); }捕获(可丢弃的ex){ Log.e(“mostrarDiapositiva”,例如getMessage()); 干杯 .makeText(此,“错误:+ex.getMessage(),Toast.LENGTH\u SHORT) .show(); } }

android中的声音(StreamingMediaPlayer工作不正常。声音沙哑) private void mostrarDiapositiva(向量d,整数位置){ 如果(位置>=d.尺寸()){ 位置=d.尺寸()-1; } dipositiva dipo=d.get(pos); 这是一个实际(pos); 这是一个实际的(DIPO); 阳性雷氏菌(); mostrarDiapositiva(底辟); 试一试{ if(dipo.tieneSonido()){ 字符串sndPath=ZIP_SND_PATH+diapo.getSonido().getNombre(); InputStream isSonido=this.getutorfile().getFile(sndPath); this.audioPlayer=新的StreamingMediaPlayer(this); 这个.audioPlayer.startStreaming(isSonido); }else if(dipo.tieneVideo()){ 如果(!dipo.tieneImagen()){ 字符串imgPath=ZIP\u FONDOS\u PATH+“fondo\u video.png”; cargarImagen(imgPath); } } }捕获(可丢弃的ex){ Log.e(“mostrarDiapositiva”,例如getMessage()); 干杯 .makeText(此,“错误:+ex.getMessage(),Toast.LENGTH\u SHORT) .show(); } } 私人空房-多发性脊髓灰质炎(Dipositiva-Dipo){ ImageButton bp=(ImageButton)findViewById(R.id.buttonprev); bp.setImageResource(R.drawable.ic\u菜单返回); ImageButton bn=(ImageButton)findViewById(R.id.buttonnext); bn.setImageResource(R.drawable.ic菜单向前); 试一试{ if(dipo.tieneImagen()){ 字符串imgPath=ZIP_IMG_PATH+diapo.getImagen().getNombre(); cargarImagen(imgPath); } 这个。动物法(这个。鳍状肢); //if(dipo.tieneSonido()){ //字符串sndPath=ZIP_SND_PATH+diapo.getSonido().getNombre(); //InputStream isSonido=this.getutorfile().getFile(sndPath); }捕获(可丢弃的ex){ Log.e(“mostrarDiapositiva”,例如getMessage()); 干杯 .makeText(此,“错误:+ex.getMessage(),Toast.LENGTH\u SHORT) .show(); } },android,Android,除了声音,其他一切都很好。当我画屏幕的时候 mostrarDiapositiva(底辟); 我们对每张幻灯片都有一个相关的声音,所以如果它有声音(if(diapo.tieneSonido()),它就会播放它 问题是,音频在一个或两个音节后第一次启动时,会再次启动 这似乎是音频开始时,幻灯片正在绘制,当它被绘制它再次开始。有没有任何事件或类似的想法 谢谢这在类似情况下也有效: private void mostrarDiapositiva(Vector<Diapositiva>

除了声音,其他一切都很好。当我画屏幕的时候

mostrarDiapositiva(底辟); 我们对每张幻灯片都有一个相关的声音,所以如果它有声音(if(diapo.tieneSonido()),它就会播放它

问题是,音频在一个或两个音节后第一次启动时,会再次启动

这似乎是音频开始时,幻灯片正在绘制,当它被绘制它再次开始。有没有任何事件或类似的想法


谢谢

这在类似情况下也有效:

    private void mostrarDiapositiva(Vector<Diapositiva> d, int pos) {
    if ( pos >= d.size() ) {
        pos = d.size() - 1;
    }
    Diapositiva diapo = d.get(pos);

    this.setDiapoPosActual(pos);
    this.setDiapoActual(diapo);

    reiniciarDiapositiva();

    mostrarDiapositiva(diapo);
    try {
        if (diapo.tieneSonido()) {
            String sndPath = ZIP_SND_PATH + diapo.getSonido().getNombre();
            InputStream isSonido = this.getTutorFile().getFile(sndPath);

            this.audioPlayer = new StreamingMediaPlayer(this);
            this.audioPlayer.startStreaming(isSonido);

        }   else if (diapo.tieneVideo()) {
            if (!diapo.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();
    }


}

private void mostrarDiapositiva(Diapositiva diapo) {

    ImageButton bp = (ImageButton) findViewById(R.id.buttonprev);
    bp.setImageResource(R.drawable.ic_menu_back);

    ImageButton bn = (ImageButton) findViewById(R.id.buttonnext);
    bn.setImageResource(R.drawable.ic_menu_forward);

    try {

        if (diapo.tieneImagen()) {

            String imgPath = ZIP_IMG_PATH + diapo.getImagen().getNombre();

            cargarImagen(imgPath);
        }

        this.animarFade(this.FLIPPER_DIAPOS_NUMLAYOUT);

        //if (diapo.tieneSonido()) {
        //  String sndPath = ZIP_SND_PATH + diapo.getSonido().getNombre();
        //  InputStream isSonido = this.getTutorFile().getFile(sndPath);


    } catch (Throwable ex) {
        Log.e("mostrarDiapositiva", ex.getMessage());

        Toast
        .makeText(this, "Error: " + ex.getMessage(), Toast.LENGTH_SHORT)
        .show();
    }

}

对于我们这些搜索者来说,这个问题的标题可能比“安卓系统中的声音”更好。
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();
                }
            }