某些手机上声音提前截断

3

我是一款声音板应用的开发者。许多用户向我报告说,在他们的手机上,某些声音会提前截断。我有一个 Nexus One 和一个 HTC Tattoo,一切都正常,我从未在我的手机上注意到这种情况。

以下是我音频部分的代码:

首先,在我的主类中有一个 MediaPlayer 对象:

private MediaPlayer mp = null;

当我按下一个按钮时,这是代码:

    private OnClickListener onClickSound = new OnClickListener() {

    public void onClick(View v) {
        if(mp != null){
            mp.stop();
            mp.release();
            mp = null;
        }

        mp = MediaPlayer.create(getBaseContext(), mp3id));
        mp.start();
        mp.setOnCompletionListener(completionListener);
    }
};

这是completionListener:

    MediaPlayer.OnCompletionListener completionListener = new MediaPlayer.OnCompletionListener(){

    public void onCompletion(MediaPlayer mediaP) {
        if(mp != null && !mp.isPlaying()){
            mp.stop();
            mp.release();
            mp = null;
        }
    }

};

你们有什么线索吗?

问候


你可以尝试通过查找出现问题的手机型号/操作系统版本来缩小问题范围。 - adamk
1个回答

2

在媒体加载完成之前开始播放会出现问题。使用setOnPreparedListener仅在播放器准备好后开始播放。


你能否更新问题,提供一个无法运行的setOnPreparedListener代码? - Konstantin Burov
文档说明create是同步的,因此与使用new相比,玩家应该准备好立即 play() - Jonny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接