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
。
以下代码段演示了如何添加具有给定属性的新通话:
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