gpt4 book ai didi

android - 来电监听器在几个小时后 sleep

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:41 24 4
gpt4 key购买 nike

在过去的几周里,我在 Android 中遇到了电话管理器 API 的问题 - 传入调用的​​监听器基于监听器开始录音和结束调用停止录音(过程顺利)

问题
我面临的问题是,在某些手机中,它一直在工作,但在某些手机中,电话管理器的广播监听器在几个小时后停止工作。经过一些研究,我找到了一个使用唤醒锁来防止 CPU 休眠的解决方案,我尝试了这个但没有成功。

   @Override
public void onReceive(Context context, Intent intent) {
//We listen to two intents. The new outgoing call only tells us of an
//outgoing call. We use it to get the number.
roPlantPrefs = RoPlantPrefs.getInstance(context);
databaseHelper = new DatabaseHelper(context);
//lastState = roPlantPrefs.getLastState();

if (roPlantPrefs.getLogin()) {


if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
} else {

roPlantPrefs = RoPlantPrefs.getInstance(context);
// if (!roPlantPrefs.getIsOnCall()) {

String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

int state = 0;
if (stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
state = TelephonyManager.CALL_STATE_IDLE;
} else if (stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
state = TelephonyManager.CALL_STATE_OFFHOOK;
} else if (stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
state = TelephonyManager.CALL_STATE_RINGING;
}


onCallStateChanged(context, state, number);
}
}


// }
}

我也使用过计时器和闹钟管理器,但它最多工作 2 到 3 小时,然后监听器停止工作,我们将不胜感激。

最佳答案

我在 Oppo、Vivo、Mi 等手机上遇到了同样的问题,从最近的应用程序中删除后,应用程序被杀死,甚至服务被杀死

解决方案:我在我的应用程序中添加了这样的自动启动权限并且它起作用了。

解决此问题后,由于 DOZE 模式,我的应用程序在后台运行一段时间后被卡住/终止

解决方案:对于这种情况,只需进入->设置->电池选项,让您的应用程序在后台运行,如果您这样做,DOZE模式不会影响您的应用程序,

干杯

关于android - 来电监听器在几个小时后 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com