唤醒Android通话

问题描述 投票:1回答:1

我正在制作VOIP通话应用。来电时,即使该应用程序是关闭或从未打开,它也应会打开该应用程序。我们还需要从服务器发出呼叫通知。

我知道像WhatsApp和Facebook Messenger这样的应用程序可以做到这一点,但是如何?

我们使用的设计类似于以下内容:Build a Calling App

我们已经尝试将Firebase Cloud Messaging用作recommended by Android documentation,虽然取得了一定程度的成功,但在关闭应用程序后却无法正常工作。

[我们正在考虑接下来使用Sync AdapterWorkManager,但是要花很多时间进行原型设计,我想问问是否有人成功或为此使用了现有的插件。

据我所知,Android 10也将受到限制。它说使用时间敏感的通知,但是仍然需要以某种方式从服务器触发这些通知。

android voip wakeup
1个回答
0
投票

在您的通话活动中添加此代码。它将打开您的屏幕。

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        this.setTurnScreenOn(true);
    } else {
        final Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    }

并且在您的活动清单中,将意图过滤器定义为CALL

    <activity
        android:name=".activities.CallActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan|stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.CALL" />
        </intent-filter>
    </activity>

当您在onMessageReceived(RemoteMessage remoteMessage)中收到来自Firebase的通知时,请打开您的活动

openActivity(CallActivity.class);

public void openActivity(Class<?> tClass) {
    Intent i = new Intent(this, tClass);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
}
© www.soinside.com 2019 - 2024. All rights reserved.