diff options
author | Bruno Martins <bgcngm@gmail.com> | 2019-05-10 21:25:31 +0200 |
---|---|---|
committer | Davide Garberi <dade.garberi@gmail.com> | 2019-05-10 23:26:10 +0200 |
commit | c3d328b6be521feff20f9d10f755716d4d639cc7 (patch) | |
tree | e4ff8fa2805d9349181c7cdf976f2ed5f3e01e77 /pocketmode/src | |
parent | e95cf897590b5ab6b25ac286e8baf6eaec9dd297 (diff) |
msm8996-common: pocketmode: Allow control over PocketMode service
* Once the service is running, proximity sensor is constantly active
when the display is turned off, resulting into a residual increase
in battery consumption. Add a toggle so that users can decide whether
they accept that and prefer to prevent accidental wake-ups triggered
by the fingerprint sensor.
* Keep the receiver that listens for the screen status registered only
if the fingerprint wake-up feature is enabled at the same time as
the accidental wake-up prevention feature.
* Set PocketMode as a required module of ConfigPanel, to make sure
it is only shipped on devices building the latter.
* The configpanel part is integrated in b07a633bdeda835867aa3dc5a033529d7bd712dc
Change-Id: Icfa23d2aef971e368476b6f1f7612493c2b69a20
Diffstat (limited to 'pocketmode/src')
-rw-r--r-- | pocketmode/src/org/lineageos/pocketmode/PocketModeService.java | 36 | ||||
-rw-r--r-- | pocketmode/src/org/lineageos/pocketmode/ProximitySensor.java | 11 | ||||
-rw-r--r-- | pocketmode/src/org/lineageos/pocketmode/Startup.java (renamed from pocketmode/src/org/lineageos/pocketmode/BootCompletedReceiver.java) | 15 |
3 files changed, 47 insertions, 15 deletions
diff --git a/pocketmode/src/org/lineageos/pocketmode/PocketModeService.java b/pocketmode/src/org/lineageos/pocketmode/PocketModeService.java index 42658b9..3af4654 100644 --- a/pocketmode/src/org/lineageos/pocketmode/PocketModeService.java +++ b/pocketmode/src/org/lineageos/pocketmode/PocketModeService.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 The CyanogenMod Project - * Copyright (c) 2018 The LineageOS Project + * 2018-2019 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,10 +25,18 @@ import android.content.IntentFilter; import android.os.IBinder; import android.util.Log; +import java.util.ArrayList; +import java.util.List; + public class PocketModeService extends Service { private static final String TAG = "PocketModeService"; private static final boolean DEBUG = false; + private static final String CUST_INTENT = "org.lineageos.settings.device.CUST_UPDATE"; + private static final String CUST_INTENT_EXTRA = "pocketmode_service"; + + private static List<BroadcastReceiver> receivers = new ArrayList<BroadcastReceiver>(); + private ProximitySensor mProximitySensor; @Override @@ -36,9 +44,8 @@ public class PocketModeService extends Service { if (DEBUG) Log.d(TAG, "Creating service"); mProximitySensor = new ProximitySensor(this); - IntentFilter screenStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); - screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); - registerReceiver(mScreenStateReceiver, screenStateFilter); + IntentFilter custFilter = new IntentFilter(CUST_INTENT); + registerReceiver(mUpdateReceiver, custFilter); } @Override @@ -51,7 +58,10 @@ public class PocketModeService extends Service { public void onDestroy() { if (DEBUG) Log.d(TAG, "Destroying service"); super.onDestroy(); - this.unregisterReceiver(mScreenStateReceiver); + if (receivers.contains(mScreenStateReceiver)) { + this.unregisterReceiver(mScreenStateReceiver); + } + this.unregisterReceiver(mUpdateReceiver); mProximitySensor.disable(); } @@ -80,4 +90,20 @@ public class PocketModeService extends Service { } } }; + + private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getBooleanExtra(CUST_INTENT_EXTRA, false)) { + IntentFilter screenStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); + screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); + registerReceiver(mScreenStateReceiver, screenStateFilter); + receivers.add(mScreenStateReceiver); + } else if (receivers.contains(mScreenStateReceiver)) { + unregisterReceiver(mScreenStateReceiver); + receivers.remove(mScreenStateReceiver); + mProximitySensor.disable(); + } + } + }; } diff --git a/pocketmode/src/org/lineageos/pocketmode/ProximitySensor.java b/pocketmode/src/org/lineageos/pocketmode/ProximitySensor.java index c1af4e8..4f1402c 100644 --- a/pocketmode/src/org/lineageos/pocketmode/ProximitySensor.java +++ b/pocketmode/src/org/lineageos/pocketmode/ProximitySensor.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 The CyanogenMod Project - * Copyright (c) 2018 The LineageOS Project + * 2018-2019 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ public class ProximitySensor implements SensorEventListener { private static final boolean DEBUG = false; private static final String TAG = "PocketModeProximity"; - private static final String FPC_FILE = "/sys/devices/soc/soc:fpc1020/proximity_state"; + private static final String FP_PROX_NODE = "/sys/devices/soc/soc:fpc1020/proximity_state"; private SensorManager mSensorManager; private Sensor mSensor; @@ -39,15 +39,16 @@ public class ProximitySensor implements SensorEventListener { public ProximitySensor(Context context) { mContext = context; - mSensorManager = mContext.getSystemService(SensorManager.class); + mSensorManager = (SensorManager) + mContext.getSystemService(Context.SENSOR_SERVICE); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); } @Override public void onSensorChanged(SensorEvent event) { boolean isNear = event.values[0] < mSensor.getMaximumRange(); - if (FileUtils.isFileWritable(FPC_FILE)) { - FileUtils.writeLine(FPC_FILE, isNear ? "1" : "0"); + if (FileUtils.isFileWritable(FP_PROX_NODE)) { + FileUtils.writeLine(FP_PROX_NODE, isNear ? "1" : "0"); } } diff --git a/pocketmode/src/org/lineageos/pocketmode/BootCompletedReceiver.java b/pocketmode/src/org/lineageos/pocketmode/Startup.java index b967946..39b3371 100644 --- a/pocketmode/src/org/lineageos/pocketmode/BootCompletedReceiver.java +++ b/pocketmode/src/org/lineageos/pocketmode/Startup.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 The CyanogenMod Project - * Copyright (c) 2018 The LineageOS Project + * 2018-2019 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,15 +20,20 @@ package org.lineageos.pocketmode; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.UserHandle; import android.util.Log; -public class BootCompletedReceiver extends BroadcastReceiver { +public class Startup extends BroadcastReceiver { private static final String TAG = "ZukPocketMode"; @Override - public void onReceive(final Context context, Intent intent) { - Log.d(TAG, "Starting"); - context.startService(new Intent(context, PocketModeService.class)); + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + if (lineageos.content.Intent.ACTION_INITIALIZE_LINEAGE_HARDWARE.equals(action)) { + Log.d(TAG, "Starting"); + context.startServiceAsUser(new Intent(context, PocketModeService.class), + UserHandle.CURRENT); + } } } |