首页 > 解决方案 > Flutter SoundPool 播放声音问题

问题描述

我正在努力在 Flutter 上使用 SoundPool 播放声音。我已经阅读/谷歌搜索了可怕的消息“AUDIO_OUTPUT_FLAG_FAST 被服务器拒绝;frameCount 0 -> 48000”

到目前为止,这是我采取的步骤:

     var content = await _bundle.load(notePath);
     sounds[notePath] = content;
     newNote.soundId = await _pool.load(content);
     new Timer(const Duration(milliseconds: (2000)), () => print("loaded $notePath"));

我已经设置了一个持续时间,否则一些(随机)声音没有加载(我有 72 个声音要加载)。当我需要播放声音时(点击屏幕),我只需做一个

_pool.stop(1);
_pool.play(noteToPlay.soundId);

这会产生一些爆裂声(一个人建议总是以 0 音量播放声音以避免这种情况,但这会耗尽电池电量)。

现在的问题:该消息出现在控制台中,但如果没有以下问题,我可以忍受它:随机,一些声音没有播放,水龙头被简单地忽略了。该应用程序永远不会崩溃。如果我删除 soundPool.play 调用,那么一切正常(找到了相应的文件,处理了点击......),所以我认为 soundPool 在未来播放之一中丢失了。玩家可以非常快地点击,但即使我走慢,它仍然失败。

SoundPool 是这样实例化的:

class NoteService {
  final Soundpool _pool = Soundpool(streamType: StreamType.notification);
[snip class definition]

感谢您的见解。

标签: androidfluttersoundpool

解决方案


通过将 SoundPool 的构造函数中的 streamType 更改为 StreamType.alarm 来解决它

pool = Soundpool(streamType: StreamType.alarm);

推荐阅读