因为Android中默认并没有使用标准alsa,而是使用的是tinyalsa。所以就算基于命令行的測试也要使用libtinyalsa。Android系统在上层Audio千变万化的时候,能够能这些个工具实时查看到,比方音频通道的切换等等.

1.编译tinyalsa配套工具

$ mmm external/tinyalsa/

编译完后会产生tinyplay/tinymix/tinycap等等工具。

tinymix: 查看配置混音器

tinyplay: 播放音频

tinycap: 录音

2.查看当前系统的声卡

root@android:/ # cat /proc/asound/cards0 [RKRK616        ]: RK_RK616 - RK_RK616RK_RK6161 [ROCKCHIPSPDIF  ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIFROCKCHIP-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

能够进行录音。

眼下仅仅遇到这些,就先总结到这,能够随时再深入。

20141014更新:

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.

转载于:https://www.cnblogs.com/yxwkf/p/5344068.html

Android音频底层调试-基于tinyalsa相关推荐

  1. android底层音频调试,Android音频底层调试-基于tinyalsa,使用中碰到问题

    参考http://blog.csdn.net/zgyrelax/article/details/39397553 已编译出tinyalsa.so, tinymix  tinyplay, tinycap ...

  2. RK3399 android7.1 音频底层调试--tinyalsa及相关问题--已解决

    tinyalsa简介: 在android中并没有使用linux主流的ALSA架构来进行音频调试,而是使用了它的简化版tinyalsa,控制管理所有模式的音频通路,我们使用tinyalsa提供的工具查看 ...

  3. 如何测试并调试基于 NDK 的 Android 应用

    本文概述了如何为 x86 平台测试和调试基于 NDK 的应用. 本文将从头至尾完整展示如何创建示例应用,并演示如何测试和调试. 1. 开发环境 请确保已安装了 Android 应用开发环境. 如果尚未 ...

  4. ALSA音频底层调试工具tinypcminfo ,tinymix,tinyplay,tinycap的使用

    原文链接: https://blog.csdn.net/u012899335/article/details/82421115 https://blog.csdn.net/ly601579033/ar ...

  5. Android音频框架笔记 - 下篇

    原址 六.HAL层 6-1.Audio HAL层,其实包括了audio.xxx.so 和 audiopolicy.so等.从前述的总框架图,也有写,代码库路径也有写. 具体运行时so对象图,对于aud ...

  6. android 蓝牙hf编程,基于Android蓝牙Inband ring功能实现.doc

    基于Android蓝牙Inband ring功能实现 基于Android蓝牙Inband ring功能实现 [摘要] 蓝牙作为一种短距无线数据与语音传输的开放性全球规范,目前在整个世界范围内都得到了很 ...

  7. Android 音频(Audio)架构

    一.概述 Android 的音频硬件抽象层 (HAL) 可将 android.media 中特定于音频的较高级别的框架 API 连接到底层音频驱动程序和硬件.本部分介绍了有关提升性能的实现说明和提示. ...

  8. Android音频改进设想及PulseAudio

    在这里先说明,本人并没有仔细地去看Android和PulseAudio的音频具体源代码和实现,欢迎指正. 从硬件用料上看,Android能不能做好音质?答案当然是可以的!MOTO的手机音质就做得不错. ...

  9. 深度剖析 Android音频系统解析与改进

    导读:Android是用了一个Google自己开发的中间层API来让APP和声音驱动(ALSA或者HAL封闭驱动)通信的.在早期,它是个ALSA的插件:现在则命名为AudioFlinger.但是安卓音 ...

最新文章

  1. miniUI怎么显示HTML显示整数,MINIUI后台获取数据
  2. 细说PHP中strlen和mb_strlen的区别(转)
  3. python花式编码_Python——花式打印对象的若干种方法
  4. 我要学ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model
  5. 一个牛人在美国的跳槽经历(有感)
  6. LWIP源代码文件目录解析
  7. 拒绝病毒威胁 为U盘请个“保护神”
  8. 前端性能优化之缓存技术
  9. 使用struts2中默认的拦截器以及自定义拦截器
  10. 如何在 iPhone 和 iPad 上关闭 Spotlight 建议?
  11. 如何关闭MyEclipse自动更新
  12. pyspider 安装及问题处理(pyspider一直卡在result_worker starting的解决办法)
  13. JDK8下载安装与Win10下Java环境变量配置
  14. 力扣刷题:求树的最大高度,树的最小高度,与判断平衡二叉树
  15. 小程序12306服务器,微信小程序12306来了!史上最详细体验出炉!
  16. 巧用win7搜索功能
  17. 最小公倍数的多种求法(C++代码实现)
  18. cmd里如何查看历史命令并执行
  19. 化妆品零售变革 电子商务VS传统零售
  20. 学习笔记(14):零基础掌握 Python 入门到实战-重复利用,事半功倍

热门文章

  1. 库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用
  2. 中国软件开发工程师之痛
  3. stm32存储结构 存储器映射
  4. python模仿windows文件管理_python – 在Windows中显示文件的资源管理器属性对话框...
  5. 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法
  6. 使用Letax引用文献一直报错: LaTeX Error: Something‘s wrong--perhaps a missing \item
  7. error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)
  8. C++字符串和数字转换完全攻略
  9. 为什么我喜欢EJB 3.0并且尤其喜欢EJB 3.1
  10. Oracle PL/SQL语言初级教程