偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1748)
分类: Android平台
2014-07-26 11:02:37
$ mmm external/tinyalsa/
编译完后会产生tinyplay/tinymix/tinycap等等工具。
tinymix: 查看配置混音器
tinyplay: 播放音频
tinycap: 录音
tinymix使用方法a.不加任何参数-显示当前配置情况 b.tinymix [ctrl id] [var]不加[var]可以查看该[ctrl id]可选选项。
对应解释:
英文 |
中文 |
备注 |
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通道。这样的设计方式一时半会不能理解。
这个只是一个最基本的播放器,所以不支持播放MP3等等压缩过格式的音乐。没有学会使用前,网上都说很麻烦,但是现在看来一点也不麻烦,直接播放了44.1kHz/44.8kHz的wav音乐。
注:播放之前得首先使用tinymix把通道设置好,上文中已经给出了设置到扬声器中的例子;由于播放时使用的最大音量进行播放的,所以注意防止被吓到。这里将测试音频文件上传。
root@android:/ # tinycap /sdcard/test.wav
可以进行录音。
目前只遇到这些,就先总结到这,可以随时再深入。
其它被证实为假的假设:
1.需要改写init.rc让系统不启动android相关的服务(mediaserver)
2.需要通过其它途径获取tinyalsa.