使用android.telecom和InCallService接听来电

使用android.telecom和InCallService接听来电,第1张

概述从API21开始,Google一直在向android.telecom添加功能,特别是通过实现TelecomManager的更多成员和InCallService的添加.最后一个应该允许非系统的第三方应用程序提供和替换功能系统调用appin-call屏幕–d出的窗口,允许对EXTRA_STATE_OFFHOOK或EXTRA_STATE_RINGING广播(即来电

从API 21开始,Google一直在向android.telecom添加功能,特别是通过实现TelecomManager的更多成员和InCallService的添加.最后一个应该允许非系统的第三方应用程序提供和替换功能系统调用app in-call屏幕 – d出的窗口,允许对EXTRA_STATE_OFFHOOK或EXTRA_STATE_RINGING广播(即来电和拨出电话)进行 *** 作.

目前,只有这个屏幕可以通过根限制的MODIFY_PHONE_STATE权限和许多安全的AOSP代码完全控制振铃和活动呼叫以及具有细粒度信息的相关系统回调,甚至无法通过反射访问.它特别是不同制造商的ROM风格中最变化的代码之一,以及发射器,触点和相机.

这一切都非常漂亮,但……

你如何实际开发第三方InCallService?

即:

>如何获得有关GSM呼叫的通知和获取GSM呼叫的实例
>如何回答这些电话
>这个类的回调的生命周期是什么
> Google是否提供了我尚未找到的任何实际教程

我不会立刻问所有这些问题的答案,但任何一个答案都可能与其他问题有关.这是广泛的,但本质上它需要是:在网络上没有任何例子我偶然发现了AOSP代码,而且该代码基于root权限的假设,这使得它无法用于第三方应用程序开发目的.

解决方法:

如何获得有关GSM呼叫的通知和获取GSM呼叫的实例

首先,用户需要选择您的应用作为默认的手机应用.有关这种方法,请参阅Replacing default Phone app on Android 6 and 7 with InCallService.

您还需要定义系统将绑定到的InCallService实现并通知您有关该调用的信息:

<service    androID:name=".CallService"    androID:permission="androID.permission.BIND_INCALL_SERVICE">    <Meta-data        androID:name="androID.telecom.IN_CALL_SERVICE_UI"        androID:value="true" />    <intent-filter>        <action androID:name="androID.telecom.InCallService" />    </intent-filter></service>

在那里你应该至少处理onCallAdded(在Call上设置监听器,启动你的UI – 活动 – 用于呼叫)和onCallRemoved(删除监听器).

如何回答这些电话

如果用户想要接听电话,则需要使用VideoProfile.STATE_AUDIO_ONLY调用方法Call#answer(int).

这个类的回调的生命周期是什么

查看Call.Callback,了解一次通话可能发生的事件.

Google是否提供了我尚未找到的任何实际教程

我不知道谷歌,但你可以查看我的简化示例https://github.com/arekolek/simple-phone

总结

以上是内存溢出为你收集整理的使用android.telecom和InCallService接听来电全部内容,希望文章能够帮你解决使用android.telecom和InCallService接听来电所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1103679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存