Phone和Bluetooth交互功能介绍

本文档主要介绍的内容:

1:Phone和BluetoothHeadset的交互

2:BluetoothHfp的功能介绍

    Phone和BluetoothHeadset的交互:

蓝牙耳机与Phone的交互主要体现在以下几个方面:

1:挂断电话

2:接听电话

3:通话中使用蓝牙音频通道

4:拨打电话

处理流程图(图1):

1-2BluetoothPhoneServiceTelecome中,是被自动启动的一个service,常驻内存,一直为Phone与蓝牙的交互进行服务。其内部成员实现IBluetoothHeadsetPhone.Stub了,在HeadsetStateMachine

bind BluetoothPhoneService,获取IBluetoothHeadsetPhone.Stub的代理,代理对象就是蓝牙和Phone的交互接口。

3:在HeadsetStateMachine中进行拨号,会使用Intent.ACTION_CALL_PRIVILEGED启动拨号流程,使用蓝牙耳机拨号拨出的是前一次的号码

4-16:通过获取IBluetoothHeadsetPhone的代理来调用BluetoothPhoneService中已实现的IBluetoothHeadsetPhone.Stub的方法进行接听,挂断,dtmf信号发送,保持通话。

 

Phone模块对Bluetooth相关的一些初始化及监听:

图形分析:

1&3-6:在BluetoothPhoneService中注册了对BluetoothAdapter.ACTION_STATE_CHAN

GED 的监听,当蓝牙状态发生变化时这里会搜到广播,根据收到的Intent中信息判断蓝牙是否开启,开启的话会跟据当前Call的状态更新蓝牙耳机的状态.最终会在HeadsetStateMachine中调用native方法进行处理.

2:BluetoothManager中注册了BluetoothHeadset.ACTION_CONNECTION_STATE_CH

ANGED BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED的监听;

7-8BluetoothHeadset的连接状态或音频状态发生变化时都会发出广播,在BluetoothMa

nager中收到广播后都会进行处理,通过判断当前的AudioState状态来进行设置。

AudioStateFrameworks/.../Telecomm:下定义的,用来存储Phone相关的声道状态:

其内部定义的常量用来判断使用哪种声道模式:

ROUTE_EARPIECE

ROUTE_BLUETOOTH

ROUTE_WIRED_HEADSET

ROUTE_SPEAKER

9&11-14:打开或关闭蓝牙声道,使用BluetoothHeadset对象进行处理,最终会在HeadsetSt

ateMachine中调用native方法进行处理

10:打开或关闭外放模式,会使用AudioManagersetSpeakerphoneOn进行设置

BluetoothHfp的功能介绍:

BluetoothHfp功能体现在让蓝牙设备控制电话,接听,挂断,拒接,语音拨号,其功能交互过程主要由HeadsetStateMachine使用IBluetoothHeadsetPhone.Stub的代理对象与BluetoothPhoneService交互完成,流程图同1”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值