android Mediaplayer播放速度不是太快

时间:2012-04-13 09:23:14

标签: android media-player

我有一个MediaPlayer对象,通过它我可以点击一个按钮播放声音。声音文件只有1-2秒长。当我一个接一个地(快速)点击相应的按钮时,它没有播放声音两次(它只播放一次。我尝试过这样的代码:

public void onClick(View view) {
if(DrawSound.isPlaying()) {
          DrawSound.stop();
         DrawSound.prepareAsync();
        }
      DrawSound.start();
}

它不是wokring。搜索了很多,但可以使它工作。任何帮助!!!!

4 个答案:

答案 0 :(得分:0)

尝试使用prepare而不是prepareAsync

答案 1 :(得分:0)

这是因为您在完成播放声音后未发布媒体播放器...在媒体播放器release方法中使用resetsetOnCompletionListener方法......

你可以像这样使用它......

    if(mp.isPlaying()) {
                    try {
                        mp.stop();
                        mp.reset();
                        mp.prepare();
                    } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                mp.start();
}

或者你可以使用它......

            mp.stop();         
            mp.prepareAsync();  
            mp.setOnPreparedListener(new OnPreparedListener() {

                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start(); 
                }
            });

这对我来说很好。

答案 2 :(得分:0)

嘿伙计们,如果有人可以从中得到帮助:

用技巧解决我的问题(毕竟技巧可以做到所有:p)

我拿了2个MediaPlayer对象和一个MediaPlayer引用并写成这样:

soundPlayer = DrawSound.isPlaying() ? DrawSound1 : DrawSound;
soundPlayer.start();

答案 3 :(得分:-1)

试试这个,看它是否有效:

if(DrawSound.isPlaying()) {         
            DrawSound.stop();         
            DrawSound.prepareAsync();  
            DrawSound.setOnPreparedListener(new OnPreparedListener() {

                @Override
                public void onPrepared(MediaPlayer mp) {
                    DrawSound.start(); 
                }
            });
            }