Keep activity running over screen lock when the screens alseep

后端 未结 2 1866
隐瞒了意图╮
隐瞒了意图╮ 2020-12-10 16:49

So i built an app that functions as a lock screen replacement. I use a broadcast receiver and a service to start my activity after Intent.ACTION_SCREEN_OFF. So

相关标签:
2条回答
  • 2020-12-10 17:19

    What if you use a wakelock. For example:

    @Override
    public void onCreate(Bundle savedInstanceState) { 
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
        wl.acquire();
        // do your things, even when screen is off
    }
    
    
    @Override
    protected void onDestroy() {
        wl.release();
    }
    

    You must also have a wakelock permission is AndroidManifest.xml

    uses-permission android:name="android.permission.WAKE_LOCK"
    
    0 讨论(0)
  • 2020-12-10 17:37

    One way you might want to try is to make sure you app never sleeps. On short sleeps it will stay running. On long sleeps your app itself is asleep. I was able to get around this myself with using the PowerManager.Wakelock. Only issue is that this will drain more battery if your app is using cpu cycles.

    /** wake lock on the app so it continues to run in background if phone tries to sleep.*/
    PowerManager.WakeLock wakeLock;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
    
        // keep the program running even if phone screen and keyboard go to sleep
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    
        ...
    }
    
    // use this when screen sleeps
    wakeLock.acquire();
    
    // use this once when phone stops sleeping
    wakeLock.release();
    
    0 讨论(0)
提交回复
热议问题