Android音频底层调试-基于tinyalsa 因为Android中默认并没有使用标准alsa,而是使用的是tinyalsa。所以就算基于命令行的測试也要使用libtinyalsa。Android系统在上层Audio千变万化的时候,能够能这些个工具实时查看到,比方音频通道的切换等等. 1.编译tinyalsa配套工具 $ mmm external/tinyalsa/ 编译完后会产生tinyplay/tinymix/tinycap等等工具。 tinymix: 查看配置混音器 tinyplay: 播放音频 tinycap: 录音 2.查看当前系统的声卡 root@android:/ # cat /proc/asound/cards 0 [RKRK616 ]: RK_RK616 – RK_RK616 RK_RK616 1 [ROCKCHIPSPDIF ]: ROCKCHIP-SPDIF – ROCKCHIP-SPDIF ROCKCHIP-SPDIF root@android:/ # 3.tinymix查看混响器 tinymix用法a.不加不论什么參数-显示当前配置情况 b.tinymix [ctrl id] [var]不加[var]能够查看该[ctrl id]可选选项。 root@android:/ # tinymix Number of controls: 7 ctl type num name value 0 ENUM 1 Playback Path OFF 1 ENUM 1 Capture MIC Path MIC OFF 2 ENUM 1 Voice Call Path OFF 3 ENUM 1 Voip Path OFF 4 INT 2 Speaker Playback Volume 0 0 5 INT 2 Headphone Playback Volume 0 0 6 ENUM 1 Modem Input Enable ON root@android:/ # 相应解释: 英文 中文 备注 Playback Path 音频输出通道 Capture MIC Path 音频输入通道 Voice Call Pah 通话音频通道 设备没有通话模块,暂无法測试 Voip Pah IP电话音频通道 场景Gtalk;值有:SPK/HP_NO_MIC/BT Speaker Playback Volume 扬声器音量 和上层音量值无关 Headphone Playback Volume 耳机音量 同上 Modem Input Enable 暂不知何用 经測试不能控制音频输入输出 Playback Path有: 英文 中文 备注 OFF 关闭 RCV - SPK 扬声器 经常使用 HP 耳机带麦 HP_NO_MIC 耳机无麦 经常使用 BT 蓝牙 SPK_HP - RING_SPK - RING_HP - RING_HP_NO_MIC - RING_SPK_HP - 例:将输出切换到扬声器 root@android:/ # tinymix 0 SPK 关于tinymix小结: 通过观察发现,Android系统的声音音量的调节并没有直接使用tinyalsa,而基于上层软件实现,由于不管上层音量怎么改变。这里看到的都是24(以我採用的设备为例)。 通道的切换是真正使用了tinyalsa,当通过不同通道播放音乐的时候能够实时观察到通道的切换。在某个站点上看到Android在没有声音播放的3秒后会关于alsa,这里也得到了证实,我曾经觉得Android系统会永久占用音频设备。 当通过蓝牙播放音乐的时候,已经不经过alsa了。tinymix查看得都处理关闭状态,由于Android4.2的蓝牙协议所有在用户层实现了。直接走uart通道。这种设计方式一时半会不能理解。 4.使用tinyplay播放wav音乐 这个仅仅是一个最主要的播放器。所以不支持播放MP3等等压缩过格式的音乐。 没有学会使用前。网上都说非常麻烦。可是如今看来一点也不麻烦,直接播放了44.1kHz/44.8kHz的wav音乐。 root@android:/ # tinyplay /sdcard/0_16.wav Playing sample: 2 ch, 44100 hz, 16 bit root@android:/ # 注:播放之前得首先使用tinymix把通道设置好,上文中已经给出了设置到扬声器中的样例;因为播放时使用的最大音量进行播放的,所以注意防止被吓到。这里将測试音频文件上传。 5.tinycap使用 root@android:/ # tinycap /sdcard/test.wav 能够进行录音。 眼下仅仅遇到这些,就先总结到这,能够随时再深入。 更新: 1.原来tinyalsa最原始的源代码在这里tinyalsa_github。 2.自己fork一份。加入静态编译方法以及busybox方式的将tinymix/tinyplay/tinycap/tinypcminfo集成一个tinyalsa。 tinyalsa-utils 包括了tinymix/tinyplay/tinycap/tinypcminfo用法是 tinyalsa + 工具名。比方要执行tinymix,那么就执行 tinyalsa mix或者tinyalsa tinymix。下载地址。 root@android:/ # tinyalsa mix Mixer name: ‘RK_RK616’ Number of controls: 7 ctl type num name value 0 ENUM 1 Playback Path OFF 1 ENUM 1 Capture MIC Path Main Mic 2 ENUM 1 Voice Call Path OFF 3 ENUM 1 Voip Path OFF 4 INT 2 Speaker Playback Volume 0 0 5 INT 2 Headphone Playback Volume 0 0 6 ENUM 1 Modem Input Enable ON root@android:/ # 3.依据这个[PATCH] tinyalsa: new package信息显示。以后tinyalsa也会被集成进busybox中。 4.假设出现Failed to open mixer错误,代表你的Android设备不是alsa音频驱动,而是legacy OSS device。 制作静态库參考:Linux下Gcc生成和使用静态库和动态库具体解释 其他被证实为假的如果: 1.须要改写init.rc让系统不启动android相关的服务(mediaserver) 2.须要通过其他途径tinyalsa.
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/50691.html