DivestOS/Patches/LineageOS-14.1/android_device_motorola_clark/0001-Tri_State_Torch.patch

84 lines
3.3 KiB
Diff

From 1802dfd756eb6d68560c8e2d4659c690e3110e04 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 4 Oct 2017 20:31:17 -0400
Subject: [PATCH] Tri-state torch
Change-Id: Ica35b7e9132de188694cd0f2d22e7bc62aa0415b
---
.../cyanogenmod/settings/device/TorchAction.java | 33 ++++++++++++++--------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/cmactions/src/com/cyanogenmod/settings/device/TorchAction.java b/cmactions/src/com/cyanogenmod/settings/device/TorchAction.java
index a3bcdce..7a2e107 100755
--- a/cmactions/src/com/cyanogenmod/settings/device/TorchAction.java
+++ b/cmactions/src/com/cyanogenmod/settings/device/TorchAction.java
@@ -32,7 +32,8 @@ public class TorchAction implements SensorAction {
private final int mVibratorPeriod;
private final Vibrator mVibrator;
private String mRearCameraId;
- private static boolean mTorchEnabled;;
+ private String mFrontCameraId;
+ private static int mTorchState = 0;
public TorchAction(Context mContext, int vibratorPeriod) {
mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
@@ -45,7 +46,8 @@ public class TorchAction implements SensorAction {
int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
if (cOrientation == CameraCharacteristics.LENS_FACING_BACK) {
mRearCameraId = cameraId;
- break;
+ } else if (cOrientation == CameraCharacteristics.LENS_FACING_FRONT){
+ mFrontCameraId = cameraId;
}
}
} catch (CameraAccessException e) {
@@ -55,10 +57,23 @@ public class TorchAction implements SensorAction {
@Override
public void action() {
mVibrator.vibrate(mVibratorPeriod);
- if (mRearCameraId != null) {
+ if (mRearCameraId != null && mFrontCameraId != null) {
try {
- mCameraManager.setTorchMode(mRearCameraId, !mTorchEnabled);
- mTorchEnabled = !mTorchEnabled;
+ switch(mTorchState) {
+ case 0:
+ mCameraManager.setTorchMode(mRearCameraId, true);
+ mTorchState = 1;
+ break;
+ case 1:
+ mCameraManager.setTorchMode(mRearCameraId, false);
+ mCameraManager.setTorchMode(mFrontCameraId, true);
+ mTorchState = 2;
+ break;
+ case 2:
+ mCameraManager.setTorchMode(mFrontCameraId, false);
+ mTorchState = 0;
+ break;
+ }
} catch (CameraAccessException e) {
}
}
@@ -67,16 +82,12 @@ public class TorchAction implements SensorAction {
private class MyTorchCallback extends CameraManager.TorchCallback {
@Override
public void onTorchModeChanged(String cameraId, boolean enabled) {
- if (!cameraId.equals(mRearCameraId))
- return;
- mTorchEnabled = enabled;
+
}
@Override
public void onTorchModeUnavailable(String cameraId) {
- if (!cameraId.equals(mRearCameraId))
- return;
- mTorchEnabled = false;
+ mTorchState = 0;
}
}
}
--
2.14.2