From 3f672fc509793273a99eb226e70aa3d130320060 Mon Sep 17 00:00:00 2001 From: David Kramer Date: Sun, 29 Jul 2018 17:34:07 -0600 Subject: [PATCH] Fix inadvertent torch state toggling on some devices --- app/src/main/java/com/termux/api/TorchAPI.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/termux/api/TorchAPI.java b/app/src/main/java/com/termux/api/TorchAPI.java index 4f9d9b707..26c23349b 100644 --- a/app/src/main/java/com/termux/api/TorchAPI.java +++ b/app/src/main/java/com/termux/api/TorchAPI.java @@ -16,16 +16,24 @@ public class TorchAPI { private static Camera legacyCamera; + // this is needed to prevent some device camera implementations from inadvertently toggling + // the LED state if same request is sent subsequent times + private static boolean isEnabled = false; + @TargetApi(Build.VERSION_CODES.M) public static void onReceive(TermuxApiReceiver apiReceiver, final Context context, final Intent intent) { boolean enabled = intent.getBooleanExtra("enabled", false); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - toggleTorch(context, enabled); - } else { - // use legacy api for pre-marshmallow - legacyToggleTorch(enabled); + if (enabled != isEnabled) { + isEnabled = enabled; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + toggleTorch(context, enabled); + } else { + // use legacy api for pre-marshmallow + legacyToggleTorch(enabled); + } } ResultReturner.noteDone(apiReceiver, intent); }