zoukankan      html  css  js  c++  java
  • AudioPolicyManager::setDeviceConnectionState 流程(一)

      当有线耳机插入/拔出或蓝牙耳机的插入/拔出等,这些事件都会引起Audio Route的重新配置。重新配置的过程实在AudioPolicyManager::setDeviceConnectionState中实现的。

    /*status_t AudioPolicyManager::setDeviceConnectionState(audio_devices_t device, audio_policy_dev_state_t state,const char *device_address)*/

      该函数有三个参数,device:连接设备,state:连接状态,device_address:设备地址

      以有线耳机插入为例,device = 0x4 / 0x8(4环/3环),state = 0 / 1(拔出/插入), device_address = NULL.

      完整流程可以分为以下几个步骤:

      Step1:device check,判断该device是否为Output device or Input devices,若两者都不是,则表示该设备不合理。

      Step2:state check,根据state状态来进入不同的switch block内。因为分析的是耳机插入,这里会进到插入block。

      Step3:outputs check,寻找该device对应可以使用的Outputs,该Outputs由两部分组成,一个是当前存在并且mSupportDevices支持该device的mOutputs;另一个是从剩余的profiles中生成的。

      Step4:check output是否需要切换。

      Step5:close no needed ouputs

      Step6:set output devices

  • 相关阅读:
    Asp.Net基础 9.Web开发原则
    JavaScript – 1.事件 + 2.变量 + 3.判断变量初始化 + 4.函数的声明 + 5.匿名函数
    DOM – 3.window对象的属性
    Dom – 1.window对象事件 + 2.body、document对象的事件
    faint
    开会
    it's over
    so funny
    no topic
    震惊:有良医生揭无良献血内幕!
  • 原文地址:https://www.cnblogs.com/Peter-Chen/p/5836861.html
Copyright © 2011-2022 走看看