android audio系统的概况

首先讲一下:调用简单过程app->native方法->(framework/base/media/libmedia)libmedia->(framework/base/service)audioflinger----aps->(hardware)上次父类都调用此子类AudioPolicyManagerBase.cpp->(alsa驱动前一级)alsa.so(在这一层是修改bug切换状态最多的地方)->底层驱动->硬件

1.

package/app--所有需要用到音频系统的app,调用音频设备的接口AudioSystem.setDeviceConnectionState  此方法在frameworks/base/media/java/android/media/AudioSystem.java中定义native类型(native的方法在AudioSystem.cpp的中定义----libmedia.so中)

-----上层的接口举例,具体实现在framework

   上层使用哪种STREAM 在AudioManager.java中声明,并且在AudioSystem.java中赋值

  例如,要使用通话音public static final int STREAM_VOICE_CALL = AudioSystem.STREAM_VOICE_CALL;  public static final int STREAM_VOICE_CALL = 0;

2.framework/base/media/libmedia/此接口实现在libmedia.so中/AudioSystem.cpp中

3.framework/base/services/audioflinger/AudioFlinger.cpp    AudioPolicyService.cpp  到这里都是标准的audioflinger层

4. hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp||hardware/libhardware_legacy/audio/AudioPolicyCompatClient.cpp

5.alsa层

6.底层驱动层

7.硬件



整个android手机音频输出分类(select_output_device)

分如下3中mode,分如下输出设备:earpiece;spreaker;headset || headphone  

1.in_call(在通话状态下,听筒的声音是通过AT命令直接调整2G/3g模块)

        a:earpiece

        b:spreaker

        c:headset || headphone

        d:bluetooth

2.ringtone

 强制spreaker


3.normal

    a:spreaker

    b:headset || headphone

    c:FM(单独的设备需要自己添加,android源码不支持这种设备)

    d:FM&spreaker

    e:alarm(从上层设下了是强制speaker)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值