【问题标题】:Audio streaming stops after 5 seconds音频流在 5 秒后停止
【发布时间】:2012-10-18 03:37:20
【问题描述】:

我在 onCreate() 方法中执行以下操作:

mSound = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
AudioManager mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
soundID = mSound.load(this, R.raw.sample, 1);
streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
setVolumeControlStream(AudioManager.STREAM_MUSIC);

然后我希望通过按下按钮来播放声音文件......所以在我的 onClick() 方法中我有:

mSound.play(soundID, streamVolume, streamVolume, 1, 0, 1f);

效果很好……但只有 5 秒钟,然后它就停止了……有什么想法吗?谢谢。如果有帮助,我正在 DROID 3 上进行测试。

【问题讨论】:

  • 为什么要从 AudioManager 获取 streamVolume?你使用它的方式是毫无意义的。相反,只需为右\左音量传入 1.0f。

标签: android android-audiomanager


【解决方案1】:

SoundPool 是为短音频文件创建的,例如通知文件...播放长音频文件只需使用 - ...

       private MediaPlayer mp_file;  

          ...........
       mp_file = MediaPlayer.create(getApplicationContext(), R.raw.big); 
       mp_file.start();

【讨论】:

  • SoundPool 显然适用于小于 1 MB 的文件,我的文件几乎是 4 MB....宾果游戏。谢谢。
【解决方案2】:

您是否验证过 R.raw.sample 实际上超过 5 秒?

如果是这样,多少钱?因为请注意,SoundPool 旨在用于短长度样本。如果您无法让 SoundPool 正常工作,请尝试使用 MediaPlayer。它使用更简单,专为处理更长的样本而设计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 2013-09-19
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多