Android音频底层调试-基于tinyalsa
来源:互联网 发布:scada数据库 编辑:程序博客网 时间:2024/06/17 13:11
Android音频底层调试-基于tinyalsa
目录(?)[+]
- 编译tinyalsa配套工具
- 查看当前系统的声卡
- tinymix查看混响器
- 使用tinyplay播放wav音乐
- tinycap使用
由于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:/ #
root@android:/ # cat /proc/asound/cards 0 [RKRK616 ]: RK_RK616 - RK_RK616 RK_RK616 1 [ROCKCHIPSPDIF ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIF ROCKCHIP-SPDIFroot@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:/ #
root@android:/ # tinymixNumber of controls: 7ctltypenumname value0ENUM1Playback Path OFF1ENUM1Capture MIC Path MIC OFF2ENUM1Voice Call Path OFF3ENUM1Voip Path OFF4INT2Speaker Playback Volume 0 05INT2Headphone Playback Volume 0 06ENUM1Modem Input Enable ONroot@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:/ #
root@android:/ # tinyplay /sdcard/0_16.wav Playing sample: 2 ch, 44100 hz, 16 bitroot@android:/ #
注:播放之前得首先使用tinymix把通道设置好,上文中已经给出了设置到扬声器中的例子;由于播放时使用的最大音量进行播放的,所以注意防止被吓到。这里将测试音频文件上传。
5.tinycap使用
root@android:/ # tinycap /sdcard/test.wav
可以进行录音。
目前只遇到这些,就先总结到这,可以随时再深入。
其它被证实为假的假设:
1.需要改写init.rc让系统不启动android相关的服务(mediaserver)
2.需要通过其它途径获取tinyalsa.
- 上一篇蓝牙调试工具hcitool的使用实例
- 下一篇Android命令行下蓝牙使用
- Android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- [转] Android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- Android音频底层调试-基于tinyalsa
- android 音频底层调试-tinyalsa
- Android下音频tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)
- Android Tinyalsa
- 在android系统调试中使用tinyalsa命令
- 在android系统调试中使用tinyalsa命令
- Android下音频的测试程序tinyalsa(录音,放音,查看声卡信息)
- Android调试底层服务
- tinyalsa
- Android底层开发之音频输入通道的软硬件分析
- 嵌入式 iptables防火墙选项参数介绍和配置实例
- oracle的日期转换问题
- 成为Java高手的25个学习目标--非常经典
- 基于Linux服务器的性能分析与优化2
- MVC不是一种设计模式,而是一种设计思想
- Android音频底层调试-基于tinyalsa
- 数据结构 绪论
- HDU 4750 Count The Pairs (最小生成树)
- photoshop9.0 中文免费版
- 嵌入式 iptables防火墙实际使用案例解析
- 基于J2EE平台下SSH2+JBPM4.4+ExtJs4.1 框架整合&项目实战
- 正向代理与反向代理的区别
- iOS系统网络抓包方法
- 算法学习——求子集算法