mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-09-18 07:15:44 +00:00
84 lines
3.3 KiB
Diff
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
|
||
|
|