Android启动错误“Waiting for sevice media.audio_flinger”的解决方案

Android启动错误“Waiting for sevice media.audio_flinger”的解决方案

最近Android启动遇到卡死在声卡服务的问题,现象如下:

W/AudioSystem(   49): AudioFlinger not published, waiting...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

I/ServiceManager(   49): Waiting for sevice media.audio_flinger...

经过几天的排查,终于解决这个问题,记录如下:

有三种情况将会导致改问题

1)系统启动时没有启动medaisever服务

具体为init.rc中的

service media /system/bin/mediaserver
   user media
    group system audio camera graphics inet net_bt net_bt_admin
不能被注释掉

2)系统没有ALSA驱动

如果Android编译时选择使用ALSA驱动,则Linux系统必须支持ALSA驱动

为此我花了两天Porting ALSA驱动,不过放音时好像还有问题,至少可以生成必要的节点

3)要在init.rc中添加ALSA相关信息

symlink /dev/snd/pcmC0D0c /dev/pcmC0D0c
symlink /dev/snd/pcmC0D0p /dev/pcmC0D0p
symlink /dev/snd/controlC0 /dev/controlC0
symlink /dev/snd/timer /dev/timer
chmod 0777 /dev/pcmC0D0c
chmod 0777 /dev/pcmC0D0p
chmod 0777 /dev/controlC0
chmod 0777 /dev/timer
chown root audio /dev/snd/controlC0
chown root audio /dev/snd/pcmC0D0c
chown root audio /dev/snd/pcmC0D0p
chown root audio /dev/snd/timer
setprop alsa.mixer.playback.master Front
setprop alsa.mixer.capture.master Capture
setprop alsa.mixer.playback.earpiece Master
setprop alsa.mixer.capture.earpiece Capture
setprop alsa.mixer.playback.headset Master
setprop alsa.mixer.playback.speaker Master
总结: 事实并不是上面这样,而是下面这些搞的鬼:

system/bin/servicemanager

libsmedia.so

libmediaplayerservice.so


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值