Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
main -> bootanimation_main.cpp
new BootAnimation -> Bootanimation.cpp
BootAnimation::threadLoop ->
BootAnimation::playMusic ->
property_set("ctl.start", "startup_rington"); -> //音频文件存在才会调用.
音频文件路径:
/system/media/audio/startup.wav
init进程去启startup_rington service, service的定义如下
rk3288/device/rockchip/common/init.rk30board.rc
//默认禁止,参数表示音频文件隔多久之后开始播放,见后面脚本文件.
service startup_rington /system/bin/tinyplaywav /system/media/audio/startup.wav 3
class core
user system
group graphics audio system
disabled
oneshot
编译生成:
rk3288/device/rockchip/common/device.mk
PRODUCT_COPY_FILES += \
device/rockchip/common/tinyplaywav:system/bin/tinyplaywav
tinyplaywav其实是个脚本
rk3288/device/rockchip/common/tinyplaywav
[[email protected]:~/rk3288/device/rockchip/common]$ cat tinyplaywav
#!/system/bin/sh
#LOG_FILE=/data/tinyplaywave.log
# check input
if [ $# -lt 1 ] ; then
#echo "[tinyplaywav] not wav file to play!!" >> $LOG_FILE
exit 1
fi
//wav文件:/system/media/audio/startup.wav
# set parameter
WAV_FILE=$1
//休眠3秒后播放
if [ $# -eq 2 ] ; then
# sleep some time
#echo "[tinyplaywav] sleep $2 s" >> $LOG_FILE
sleep $2
fi
//最终调用的是tinyalsa工具
# play wav file
#echo "[tinyplaywav] start play, wav file is: $WAV_FILE" >> $LOG_FILE
//先切换到speaker
tinymix -D 0 "Playback Path" "SPK"
//然后播放
tinyplay $WAV_FILE -D 0 -d 0
wav文件播放时间可以根据开机动画来决定.