来电呼叫听众在几个小时后睡觉

Jha*_*Das 10 android android-wake-lock wakelock telephonymanager

在过去的几周里,我面临着Android中的电话管理器API的问题 - 基于监听器开始录制的呼入监听器以及结束呼叫停止录制(流程正常工作)

ISSUE
我现在面临的问题是,在一些手机,它正在所有的时间,但在一些手机,电话经理的广播听众停止后几个小时的工作.经过一些研究,我找到了一个使用唤醒锁来防止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);
        }
    }


   //        }
}      
Run Code Online (Sandbox Code Playgroud)

我也曾经使用timer and alarm manger但是它最多工作2到3个小时然后听众停止工作,任何帮助都可以得到赞赏.

Ami*_*ari 1

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

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

解决此问题后,由于打瞌睡模式,我的应用程序在后台运行一段时间后被冻结/终止

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

干杯