完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
平台:Rk329
操作系统:Android 130.0 内核:v4.19.111 现象 在开发完音频驱动通道切换 rk817之后,上层APP调用mAudioManager.setSpeakerphoneOn(),发现问题,一直未切换成功通道,一直在接口 监听上。 排查问题 开始先从setSpeakerphoneOn入手,跟踪 frameworks/base/services/core/java/com/android/server/audio/AudioService.java frameworks/base/services/core/java/com/android/server/audio/AudioDeviceBroker。 java 日志框架层没问题,打印向jni传递数据正常。 system_process D/cck: on=true eventSource=setSpeakerphoneOn(true) from u/pid:1000/2841 system_process D/cck: mForcedUseForComm=1 system_process I/cck :时间=847700 system_process D/cck:时间=847700 system_process E/cck: MSG_IIL_SET_FORCE_USE arr system_process D/cck: useCase=0 config=1 system_process D/cck: eventSource=setSpeakerphoneOn(true) from u/pid:1000/2841 system_process I/cck: time=852780 system_process D/cck: time=852780 system_process D/cck: on=false eventSource=setSpeakerphoneOn(false) from u/pid:1000/2841 system_process D/cck: mForcedUseForComm=0 system_process I/cck: time=852782 system_process D/cck: time=852782 system_process E/cck: MSG_IIL_SET_FORCE_USE arr system_process D/cck: useCase=0 config=0 system_process D/cck: eventSource=setSpeakerphoneOn(false) from u/pid: 1000/2841 寻找下到hal层,hardware/rockchip/audio/tinyalsa_hal / 日志如下 筒打印 start_output_stream:873 out = 0xf75a8000,device = 0x2,outputs[OUTPUT_HDMI_MULTI] = 0x0 AudioHardwareTiny: out->Device: 0x2 alsa_route: route_pcm_card_open(card 0, route 0) D/alsa_route: route_info->sound_card 0, route_info->devices 0 D/alsa_route: route_pcm_card_open() INCALL_OFF_ROUTE 26 D/alsa_route: route_set_controls() 设置路由0 D/AudioHardwareTiny: start_output_stream:968, out = 0xf75a8000 D/alsa_route: route_set_controls() 设置路由24 免提start_output_stream :873 out = 0xf75a8000, device = 0x2,outputs[OUTPUT_HDMI_MULTI] = 0x0 /AudioHardwareTiny: out->Device : 0x2 alsa_route: route_pcm_card_open(card 0, route 24) D/alsa_route: route_info->sound_card 0, route_info->devices 0 D/alsa_route: route_pcm_card_open() INCALL_OFF_ROUTE 26 D/alsa_route: route_set_controls() 设置路由 24 D/AudioHardwareTiny: start_output_stream:968, out = 0xf75a8000start 耳机 输出流:873 out = 0xf75a8000,device = 0x4,outputs[ OUTPUT_HDMI_MULTI: out->Device : 0x4 alsa_route: route_pcm_card_open(card 0, route 14) D/alsa_route: route_info->sound_card 0, route_info->devices 0 D/alsa_route: route_pcm_card_open() INCALL_OFF_ROUTE 26 D/alsa_route: route_set_controls() set route 14 D/AudioHardwareTiny: start_print_stream:968, out = 0xf5a8000 发现耳机设备类型是正确的,听和免提切换时设备只改变路由0和路由24 AUDIO_DEVICE_OUT_EARPIECE = 0x1, // 听筒 AUDIO_DEVICE_OUT_SPEAKER = 0x2, // 包含耳机AUDIO_DEVICE_OUT_WIRED_HEADSET = 0x4, // 线控据 推测此配置不正确,拉出设备中vendor/etc/audio_policy_configuration.xml, 其中AUDIO_DEVICE_OUT_EARPIECE ,破案了 解决方案 devicerockchipcommonaudio_policy_configuration.xml + + + + hardwarelibhardware_legacyaudioaudio_policy.conf # as well as the output device selected by default. # Devices are designated by a string that corresponds to the enum in audio.h global_configuration { - attached_output_devices AUDIO_DEVICE_OUT_SPEAKER + attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX } hardwarerockchipaudiotinyalsa_halaudio_hw.c unsigned getOutputRouteFromDevice(uint32_t device) { /*if (mMode != AudioSystem::MODE_RINGTONE && mMode != AudioSystem::MODE_NORMAL) return PLAYBACK_OFF_ROUTE; */ ALOGD("%s:%d, device = 0x%x",__FUNCTION__,__LINE__, device); switch (device) { + case AUDIO_DEVICE_OUT_EARPIECE: + return EARPIECE_NORMAL_ROUTE; case AUDIO_DEVICE_OUT_SPEAKER: return SPEAKER_NORMAL_ROUTE; static int start_output_stream(struct stream_out *out) { struct audio_device *adev = out->dev; int ret = 0; int card = (int)SND_OUT_SOUND_CARD_UNKNOWN; int device = 0; if (out->device & ( + AUDIO_DEVICE_OUT_EARPIECE | AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_WIRED_HEADSET | AUDIO_DEVICE_OUT_WIRED_HEADPHONE | AUDIO_DEVICE_OUT_ALL_SCO)) { card = adev->dev_out[SND_OUT_SOUND_CARD_SPEAKER].card; |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
696 浏览 0 评论
2067 浏览 3 评论
rk1126实现BT601输入,输入不带IIC接口的驱动程序
3909 浏览 0 评论
2417 浏览 1 评论
3654 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-4 05:56 , Processed in 0.665350 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号