Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 声音池未完成播放整个文件_Android_Handler_Lag_Soundpool - Fatal编程技术网

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被忽略