android - Android,按下按钮时音乐播放滞后

标签 android audio media-player

我在一个非常简单的应用程序中有两个按钮,这是当我单击其中两个按钮时的代码:

 public void button_clicked1(View v) 
    {
        text1.setText("1"+width);  

         mp = MediaPlayer.create(GameScreen.this, R.raw.piano_a);   
             try {
                    mp .prepare();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
         mp.start();



        }


    public void button_clicked2(View v) 
    {
        text1.setText("2"+height);    
        mp = MediaPlayer.create(GameScreen.this, R.raw.piano_b);   
        /*
            try {
                mp .prepare();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }*/
     mp.start();
        }

每个原始钢琴音符大约需要20秒...但是当我按下任一按钮时,我希望它立即播放文件...但是我发现存在延迟(并且延迟会越来越大),有时如果我快速按下两个按钮几次...它将强制退出:(

最佳答案

根据文档,在加载原始音频文件(正确编码)时,您无需调用prepare,只需:

MediaPlayer mediaPlayer = MediaPlayer.create(GameScreen.this, R.raw.piano_a);
mediaPlayer.start();

这应该做。

关于android - Android,按下按钮时音乐播放滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060603/

相关文章:

Android 和 Eclipse - 发生了什么事?

Android - 如何基于 sim Network 每次获取用户当前位置

c# - 如何使用System.Media.SoundPlayer异步播放声音文件?

android - AAudio 或 OpenSL

java - MediaPlayer 音量问题-AudioStream 问题

java - Android App/播放Raw或Assets文件夹中的音频/视频文件,而不是/SD Card/

android - 如何在回收器 View 的 onBindViewHolder() 方法中调用 getString()?

java - Button.setEnabled() 导致 EdiTtext 崩溃

c# - 将wav文件转换为单声道

Android 自定义音频播放器用 libPd 或 OpenSL ES 或 AudioTrack 替换 MediaPlayer