今天在Bootanimation.cpp中加入了SoundPool来实现开机音乐。反复检查了好几遍调用SoundPool的地方,没有错,并且返回的值也都没有异常,但是就是不发声音。后来在网上搜了一下,由于开机动画是在开机中media_server和system_server刚起来的阶段,此时还没有从setting模块中读取数据库中的记录为各个流设置最大的index,所以此时的index还是使用默认的值,故而不能正常播放音乐。
./hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp
AudioPolicyManagerBase::StreamDescriptor::StreamDescriptor()
: mIndexMin(0), mIndexMax(1), mCanBeMuted(true)
{
mIndexCur.add(AUDIO_DEVICE_OUT_DEFAULT, 3);
}
这里会初始化一个声音,我发现我代码里mIndexCur.add(AUDIO_DEVICE_OUT_DEFAULT, 0);设的是0,所以没有声音,把他改一下就OK了。