Google推出Telecom Jetpack库,让Android通话应用创建更简单

Google推出Telecom Jetpack库,让Android通话应用创建更简单

Telecom Jetpack库的最新Alpha版本已经推出。该库提供了多个API,以简化Android开发者创建语音和/或视频通话应用程序的过程,支持常见功能,例如接听/拒绝、音频路由等等。

https://developer.android.google.cn/jetpack/androidx/releases/core?hl=zh-cn#core-telecom_version_10_2

处理前台服务使用情况

首先,新库会处理声明前台服务使用情况,这意味着开发者无需显式声明前台服务以符合Android 14引入的新隐私要求。此外,当用户离开应用程序时,该库还会自动确保通话不会中断。

智能手表处理用户操作

Telecom库还提供了一个API,用于智能手表处理用户操作,例如接听、拒绝、挂断和静音通话。该API可以无缝更新手表显示与通话相关的信息,并管理在正在进行另一个通话时收到新通话的情况,为用户提供保持当前通话的可能性。

音频路由

新库提供的另一个主要功能是音频路由,因此使用该库的应用程序无需使用音频管理器来跟踪设备的音频状态、获取可用音频设备列表等。库能够列出所有可用的端点,以便将音频流传输到/从蓝牙音频设备。

CallsManager类

Telecom库引入了一个新的CallsManager类,取代了之前版本库中的ConnectionService类,并需要开发者进行特定迁移以利用新库提供的所有优势。尽管从ConnectionService迁移到CallManager相对容易实现,但并非仅仅更改命名空间。可以将CallManager视为ConnectionService,将CallControlScope视为ConnectionService

以下代码段演示了如何添加具有给定属性的新通话:

kotlin 复制代码
val attributes = CallAttributesCompat( 
    displayName = displayName, 
    address = address,
    direction = CallAttributesCompat.DIRECTION_INCOMING,
    callType = CallAttributesCompat.CALL_TYPE_AUDIO_CALL,
    callCapabilities = (CallAttributesCompat.SUPPORTS_SET_INACTIVE
        or CallAttributesCompat.SUPPORTS_STREAM 
        or CallAttributesCompat.SUPPORTS_TRANSFER), 
)
callsManager.addCall(
    attributes
) { 
    // Call control area 
}

据Google表示,新库将在未来几个月内推出许多新功能,并与Android O(API级别26)向后兼容。如果您有兴趣使用该库创建Android VoIP应用程序,则最好从Google的官方示例应用程序开始,以了解如何使用各种API。

https://github.com/android/platform-samples

参考

https://github.com/android/platform-samples/blob/main/samples/connectivity/telecom

https://developer.android.google.cn/develop/connectivity/telecom?hl=zh-cn

相关推荐
程序员-珍40 分钟前
报错下载android sdk失败
android·java
齊家治國平天下2 小时前
AAOS 电源管理深度解析:休眠/唤醒/功耗优化
android·车载系统·aaos·aosp·电源管理·休眠唤醒·carpowermanager
Xzaveir2 小时前
企业号码展示不可观测怎么办:状态机、拨测事件与异常回放
android·人工智能
2501_916007472 小时前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
黄林晴3 小时前
Nearby Connections 重大变更:不再自动开启 Wi-Fi / 蓝牙,适配指南
android
恋猫de小郭3 小时前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter
HLC++16 小时前
Linux的进程间通信
android·linux·服务器
爱笑鱼20 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼20 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon21 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化