Android 9.0 蓝牙功能之一:蓝牙电话

本文档详细介绍了在Android 9.0中构建蓝牙电话功能的方法,包括必须作为System App且与系统Dialer唯一,主要流程涉及继承InCallService处理蓝牙来电,使用TelecomManager拨打电话和控制通话操作。同时,文中还提到了蓝牙电话与其他电话的区分、同步电话本、蓝牙自动连接及使用TelecomManager的相关API。

Android 9.0 蓝牙功能之一:蓝牙电话

本章节记录如何构建蓝牙电话功能。

注意蓝牙应用必须是 System App和系统Dialer唯一性

主要流程

主要是继承并实现InCallService类接收处理蓝牙来电状态。
通过 mTelecomManager 接口拨打电话
通过 Call 控制当前通话操作

相关代码

添加蓝牙电话相关权限:
AndroidManifest.xml :

<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

继承并实现android.telecom.InCallService来听通话状态。
该接口可以获取当前电话的对象,通过call对象获取号码、状态或者处理三方通话逻辑。

public class InCallServiceImpl extends InCallService {

 private TelecomManager mTelecomManager;

 @Override
 public void onCreate() {
 super.onCreate();

 	//获取 TelecomManager
	 mTelecomManager =getApplicationContext().getSystemService(TelecomManager.class);

 }

 @Override
 public void onCallAdded(Call telecomCall) {
 super.onCallAdded(telecomCall);

 //当有新电话添加时,注册监听当前电话状态变化(多个来电都会触发该函数)
 telecomCall.registerCallback(mCallListener);

 }

 @Override
 public void onCallRemoved(Call telecomCall) {

 //当电话结束时,注销当前电话状态变化监听
 telecomCall.unregisterCallback(mCallListener);
 super.onCallRemoved(telecomCall);

 }

 private final Call.Callback mCallListener = new Call.Callback() {

 @Override
 public void onStateChanged(Call call, int state) {

  //通话状态发生变化(如拨号、通话中、挂断等等)
  //可以根据对象call的不同判断对应的通话状态(三方通话)

 }

 };

}

在 AndroidManifest.xml 里面声明 InCallService,这样 Framework 层的 TelecomService 能
够找到对应的 InCallService。
确保android.telecom.InCallService全局唯一;不了可能获取不到通话状态。

<service android:name=".InCallServiceImpl" android:permission="android.permission.BIND_INCALL_SERVICE"
 android:exported="true">
 <meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
 <intent-filter>
 <action android:name="android.telecom.InCallService" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿成长

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值