MediaPlayer.start()声音执行延迟

时间:2015-01-23 08:53:41

标签: android android-mediaplayer

我的应用程序出现了一个奇怪的问题。 每次单击一个按钮,我都会调用一个方法来执行声音。

代码:

public static void executeSound(Context context) {
    if (isSoundEnabled(context)) {

        if (mediaPlayer == null) {
            mediaPlayer = MediaPlayer.create(context, R.raw.button_click);
        }

        mediaPlayer.start();
    }
}

如果用户在应用内启用了声音,则验证isSoundEnabled功能。

每次点击按钮时都不会执行声音,但在点击其他按钮后,声音会一起执行。 碰巧我按下三个不同的按钮,只有当我第三次按下按钮时才会执行三个声音。如何立即执行声音? 我在棒棒糖设备上遇到这个问题(相同的代码在同一台设备上完全运行,但使用kitkat)

1 个答案:

答案 0 :(得分:0)

将执行方法更改为此

    public static void executeSound(Context context) { 
           if (isSoundEnabled(context)) {

                mediaPlayer = new MediaPlayer();
                mediaPlayer.setDataSource(mContext, audioUriPath);
                mediaPlayer.prepare();
                mediaPlayer.start();
                mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        // TODO Auto-generated method stub
                        mp.release();
                    }
                });
    }
  }