Android 声音池未完成播放整个文件
我想了解两个问题 我正在使用Android 声音池未完成播放整个文件,android,handler,lag,soundpool,Android,Handler,Lag,Soundpool,我想了解两个问题 我正在使用soundPool来获得我的音效,它的工作没有问题。 然而,当我尝试播放cetain文件(25秒,约400K)时,它不会播放整个文件,只需3-4秒 为什么以及如何修复它 第二个问题是,我应该播放线程中的每个效果吗?多线好吗 这是当前代码: static void play(final int soundID ){ if(loaded){ handler.post(new Runnable() { public v
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);
}
});
我的理解是,
SoundPool
不能用于超过几秒钟的声音或大于1MB的音频文件。在这些情况下,请使用MediaPlayer
在每次播放声音时使用此选项:
MediaPlayer.create(YourActivity.this, R.raw.your_sound).start();
或者创建
MediaPlayer
对象,根据需要多次播放相同的声音,然后release()
对象。检查play
方法的返回。根据规范:如果成功,则返回非零streamID;如果失败,则返回零
返回1。正如我所说的,它确实发挥了…3-4秒是的,但它可能已经失败后,3-4秒的发挥。它是在3-4秒后返回还是在25秒后返回?不知道要检查什么,它返回streamId作为播放开始…尝试以下操作而不是soundpool播放语句:MediaPlayer.create(YourActivity.this,R.raw.your_sound).start()代码>,查看是否播放完整的声音。Mediaplayer不能在没有副作用的情况下使用多次,大多数情况下,以前的Mediaplayer被忽略