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


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

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

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

    主要流程

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

    相关代码

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

    
    
    
    
    • 1
    • 2
    • 3

    继承并实现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的不同判断对应的通话状态(三方通话)
    
     }
    
     };
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

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

    
     
     
    • 1
    • 2
    • 3
  • 相关阅读:
    dreamweaver作业静态HTML网页设计 大学美食菜谱网页制作教程(web前端网页制作课作业)
    【英语】标题首字母大小写规则
    【算法】滑动窗口题单——2.不定长滑动窗口(求最长/最大)
    自用软件分享,这有几款实用软件
    用信号量实现进程互斥,同步【操作系统学习笔记】
    ubuntu安装lua
    JAVA的File对象
    egg-mongoose update更新无效解决方案
    Spring Cloud OpenFeign模版化客户端
    win11解决80端口默认被占用的问题
  • 原文地址:https://blog.csdn.net/qq_33544860/article/details/127863489