Android Soundpool.play()无法在release buld中运行
作者:互联网
我正在尝试构建一个记录声音的应用程序然后播放它们.
录音部分工作得很好但是当我尝试重放声音时它什么也没做.
当我在调试器中运行它并通过步骤播放音频时,它可以工作.
当我删除所有断点并在调试中运行程序时,它没有.
问题可能是由于在后台完成的一些事情并没有在我尝试运行音频之前完成,但我不完全确定.
任何帮助将不胜感激.
以下是源代码的相关部分.
创建Soundpool
mSoundPool = new SoundPool(16, AudioManager.STREAM_MUSIC, 0);
从soundpool播放
int soundId = mSoundPool.load(mAudioRecorder.stop(), 0);
if(soundId > 0){
mSoundPool.play(soundId, 0.99f, 0.99f, 0, -1, 1.0f);
}
Audiorecorder.java的输出文件是.mp4
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
public String stop() throws IOException {
mRecorder.stop();
return mPath;
}
解决方法:
昨天我遇到了同样的问题 – 在RELEASE模式下不能正常工作的原因是你必须等待SoundPool.load(…)函数执行.
我在执行活动/片段之前在菜单活动中加载声音解决了这个问题,我将使用SoundPool.play(…)函数播放一些音乐.
在DEBUG模式下,app有很多时间来执行SoundPool.load(…)函数,所以它可以正常工作.
标签:android,debugging,release,soundpool 来源: https://codeday.me/bug/20190626/1295239.html