声音池未完成播放整个文件
Posted
技术标签:
【中文标题】声音池未完成播放整个文件【英文标题】:sound pool not finish playing entire file 【发布时间】:2013-06-13 22:04:25 【问题描述】:我有两个问题想了解。
我正在使用soundPool
来制作我的音效,并且它的工作没有问题。
但是,当我尝试播放 cetain 文件(25 秒,约 400K)时,它不会播放整个文件,仅 3-4 秒。
为什么以及如何解决?
第二个问题是,我应该从线程播放每个效果吗?线程多好?
这是当前代码:
static void play(final int soundID )
if(loaded)
handler.post(new Runnable()
public void run()
soundpool.play(soundID, 1, 1, 1, 0, 1);
);
【问题讨论】:
检查play
方法的返回。来自规范:Returns non-zero streamID if successful, zero if failed
返回 1 。正如我所说,它确实会播放......持续 3-4 秒
是的,但它可能会在播放 3-4 秒后失败。它是在 3-4 秒后还是 25 秒后返回?
不知道要检查什么,它返回streamId作为播放开始...
试试这个而不是 soundpool 播放语句:MediaPlayer.create(YourActivity.this, R.raw.your_sound).start();
,看看它是否能播放完整的声音。
【参考方案1】:
我的理解是SoundPool
不能用于超过几秒的声音或>1MB的音频文件。在这些情况下使用MediaPlayer
。
每次播放声音时都使用它:
MediaPlayer.create(YourActivity.this, R.raw.your_sound).start();
或创建MediaPlayer
对象,根据需要多次播放相同的声音,然后release()
对象。
【讨论】:
Mediaplayer 不能多次使用而没有副作用,大多数时候,以前的 mediaplayer 都被忽略了以上是关于声音池未完成播放整个文件的主要内容,如果未能解决你的问题,请参考以下文章