如何解决你如何让 Android 使用特定的声卡?
我正在将 AOSP 移植到 iMX8 板。
即当我跑步时:
smarc_mx8mq:/sdcard/Alarms # tinyplay file_example_WAV_1MG.wav
Playing sample: 2 ch,8000 hz,16 bit 1072948 bytes
播放音乐。
Android 通常根本不发出任何声音。
表格有连续错误:
01-05 14:31:47.809 3383 4814 I audio_hw_primary: start_output_stream_primary... 0xedafe000,device 2,address,mode 0
01-05 14:31:47.809 3383 4814 I audio_hw_primary: select_output_device(),headphone 0,headset 0,speaker 2,earpiece 0,01-05 14:31:47.809 3383 4814 W audio_hw_primary: card -1,port 0 device 0x2
01-05 14:31:47.809 3383 4814 W audio_hw_primary: rate 48000,channel 2 period_size 0xc0
01-05 14:31:47.809 3383 4814 E audio_hw_primary: cannot open pcm_out driver 0: cannot open device '/dev/snd/pcmC4294967295D0p': No such file or directory
如果应用一个非常丑陋的黑客:
smarc_mx8mq:/dev/snd # ln -s pcmC0D0p pcmC4294967295D0p
声音现在适用于 Android,直到下次重新启动。
我找到了一个名为 imx/alsa/config_sgtl5000.h
的文件,其中有一个部分:
static struct audio_card sgtl5000_card = {
.name = "sgtl5000-audio",.driver_name = "sgtl5000-audio",.bus_name = "I2S1",.supported_out_devices =
(AUdio_DEVICE_OUT_EARPIECE | AUdio_DEVICE_OUT_SPEAKER |
AUdio_DEVICE_OUT_WIRED_HEADSET | AUdio_DEVICE_OUT_WIRED_HEADPHONE |
AUdio_DEVICE_OUT_ANLG_DOCK_HEADSET | AUdio_DEVICE_OUT_ALL_SCO |
AUdio_DEVICE_OUT_DEFAULT),.supported_in_devices =
(AUdio_DEVICE_IN_COMMUNICATION | AUdio_DEVICE_IN_AMBIENT |
AUdio_DEVICE_IN_BUILTIN_MIC | AUdio_DEVICE_IN_WIRED_HEADSET |
AUdio_DEVICE_IN_BACK_MIC | AUdio_DEVICE_IN_ALL_SCO |
AUdio_DEVICE_IN_DEFAULT | AUdio_DEVICE_IN_BUS),.defaults = NULL,.bt_output = NULL,.speaker_output = speaker_output_sgtl5000,.hs_output = NULL,.earpiece_output = NULL,.vx_hs_mic_input = NULL,.mm_main_mic_input = mm_main_mic_input_sgtl5000,.vx_main_mic_input = NULL,.mm_hs_mic_input = NULL,.vx_bt_mic_input = NULL,.mm_bt_mic_input = NULL,.card = 0,.out_rate = 0,.out_channels = 0,.out_format = 0,.in_rate = 0,.in_channels = 0,.in_format = 0,};
我目前推断 Android 需要一个可以执行 X 的声卡,并且返回值为 -1(4294967295 作为 uint32_t)。
由于缺少错误检查,导致尝试在 /dev/snd/pcmC4294967295D0p 处打开声卡 -1。
如何让 sgtl5000 成为 Android 的默认声卡?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。