跳到内容

Android 上的 VoIP 通话

Pushwoosh 支持 Android 上的 VoIP 风格通话通知,通过 pushwoosh-calls 模块实现。这使得使用 Android 的电信堆栈能够实现原生通话 UI 和生命周期管理。

1. 添加 pushwoosh-calls 模块

Anchor link to

请确保在您的项目中包含 pushwoosh-calls 依赖项。

Gradle:

dependencies {
implementation 'com.pushwoosh:pushwoosh-calls:<latest-version>'
}

<latest-version> 替换为 Maven Central 中的当前版本。

2. 请求通话权限

Anchor link to

使用辅助函数在运行时请求所需权限:

import com.pushwoosh.calls.PushwooshCallSettings;
PushwooshCallSettings.requestCallPermissions();

这将处理 READ_PHONE_NUMBERS 等权限的请求,这些权限对于正确的通话处理是必需的。

3. 实现 CallEventListener 并在 Manifest 中注册

Anchor link to

要在您的应用中处理来电和事件,请实现 CallEventListener 接口。

Java 示例

Anchor link to
public class DemoCallEventListener implements CallEventListener {
@Override
public void onAnswer(@NonNull PushwooshVoIPMessage voIPMessage, int videoState) {
// 实现此方法以导航到您的通话中 UI
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
@Override
public void onReject(@NonNull PushwooshVoIPMessage voIPMessage) {
// 覆盖此方法以处理已拒绝的通话
}
@Override
public void onDisconnect(@NonNull PushwooshVoIPMessage voIPMessage) {
// 覆盖此方法以处理已断开连接的通话
}
@Override
public void onCreateIncomingConnection(@Nullable Bundle payload) {
// 这是通话通知有效负载在您的应用中可访问的最早点,
// 使用它来准备您的应用 UI,以便用户与通话通知进行交互
}
@Override
public void onCallAdded(@NonNull PushwooshVoIPMessage voIPMessage) {
// InCallService 的扩展方法,为配对的可穿戴设备提供自定义选项
}
@Override
public void onCallRemoved(@NonNull PushwooshVoIPMessage voIPMessage) {
// InCallService 的扩展方法,为配对的可穿戴设备提供自定义选项
}
}

AndroidManifest.xml

Anchor link to

使用 <meta-data> 标签声明您的监听器类:

<meta-data
android:name="com.pushwoosh.CALL_EVENT_LISTENER"
android:value="com.pushwoosh.demoapp.DemoCallEventListener" />

4. 配置通话设置(可选)

Anchor link to

使用 PushwooshCallSettings 来微调通话行为、声音和显示设置。

示例用法

Anchor link to
import com.pushwoosh.calls.PushwooshCallSettings
PushwooshCallSettings.setPhoneAccount("com.pushwoosh.voip")
PushwooshCallSettings.setPhoneAccountHandle("PushwooshCallHandle")
PushwooshCallSettings.setIncomingCallChannelName("Incoming Calls")
PushwooshCallSettings.setOngoingCallChannelName("Ongoing Calls")
PushwooshCallSettings.setCallSound("custom_ringtone.mp3")

相关链接

Anchor link to