From 7abe0d3f662ddb03ebcdfcdccdbd78831f5f63dc Mon Sep 17 00:00:00 2001 From: jeangraff30 Date: Sat, 18 Sep 2021 16:19:39 -0300 Subject: [PATCH] msm8953-common: Use MotoActions from hardware/motorola --- MotoActions/Android.mk | 25 - MotoActions/AndroidManifest.xml | 94 --- MotoActions/res/drawable/ambient_png.png | Bin 99782 -> 0 bytes MotoActions/res/drawable/fpgesture_png.png | Bin 18642 -> 0 bytes MotoActions/res/drawable/gesture_png.png | Bin 37807 -> 0 bytes MotoActions/res/drawable/ic_actions_chop.xml | 6 - MotoActions/res/drawable/ic_actions_flip.xml | 7 - MotoActions/res/drawable/ic_actions_lift.xml | 8 - MotoActions/res/drawable/ic_actions_twist.xml | 7 - MotoActions/res/drawable/ic_actions_wave.xml | 7 - MotoActions/res/drawable/ic_double_tap.xml | 20 - MotoActions/res/drawable/ic_fingerprint.xml | 20 - MotoActions/res/drawable/ic_gesture.png | Bin 7705 -> 0 bytes MotoActions/res/drawable/ic_hand.xml | 9 - MotoActions/res/drawable/ic_pickup.xml | 9 - MotoActions/res/drawable/ic_settings_doze.xml | 29 - .../res/drawable/ic_settings_fingerprint.xml | 9 - .../res/drawable/ic_settings_gestures.xml | 29 - .../ic_settings_gestures_dashboard.xml | 28 - .../ic_settings_screen_off_gestures.xml | 22 - MotoActions/res/drawable/ic_swipe_left.xml | 20 - MotoActions/res/drawable/ic_swipe_right.xml | 20 - MotoActions/res/drawable/ic_tap.xml | 23 - MotoActions/res/drawable/ic_tap_hold.xml | 20 - MotoActions/res/drawable/ic_vibrate.xml | 20 - MotoActions/res/drawable/motoactions_png.png | Bin 56793 -> 0 bytes .../res/drawable/switchbar_background.xml | 20 - MotoActions/res/layout/actions.xml | 32 - MotoActions/res/layout/doze.xml | 35 - MotoActions/res/layout/fp_gesture.xml | 35 - MotoActions/res/layout/gesture.xml | 32 - .../preference_category_material_settings.xml | 66 -- .../layout/preference_material_settings.xml | 86 -- MotoActions/res/layout/switch_bar.xml | 48 -- MotoActions/res/values-pt-rBR/strings.xml | 80 -- MotoActions/res/values/array.xml | 75 -- MotoActions/res/values/styles.xml | 58 -- MotoActions/res/xml/actions_panel.xml | 56 -- MotoActions/res/xml/doze_panel.xml | 33 - MotoActions/res/xml/doze_panel_indexable.xml | 27 - MotoActions/res/xml/fp_gesture_panel.xml | 157 ---- .../res/xml/fp_gesture_panel_indexable.xml | 27 - MotoActions/res/xml/main_panel.xml | 51 -- .../actions/ActionsPreferenceActivity.java | 35 - .../actions/ActionsPreferenceFragment.java | 40 - .../moto/actions/BootCompletedReceiver.java | 68 -- .../moto/actions/DozeSettingsActivity.java | 35 - .../moto/actions/DozeSettingsFragment.java | 101 --- .../actions/FPGestureSettingsActivity.java | 37 - .../actions/FPGestureSettingsFragment.java | 120 --- .../moto/actions/GestureSettingsActivity.java | 36 - .../moto/actions/GestureSettingsFragment.java | 40 - .../src/com/moto/actions/KeyHandler.java | 756 ------------------ .../MotoActionsSearchIndexablesProvider.java | 92 --- .../com/moto/actions/MotoActionsService.java | 115 --- .../com/moto/actions/MotoActionsSettings.java | 147 ---- .../src/com/moto/actions/SensorAction.java | 22 - .../src/com/moto/actions/SensorHelper.java | 105 --- .../src/com/moto/actions/ServiceWrapper.java | 66 -- .../actions/CameraActivationAction.java | 138 ---- .../actions/CameraActivationSensor.java | 61 -- .../moto/actions/actions/ChopChopSensor.java | 86 -- .../com/moto/actions/actions/Constants.java | 219 ----- .../com/moto/actions/actions/FlipToMute.java | 146 ---- .../moto/actions/actions/LiftToSilence.java | 109 --- .../actions/actions/ProximitySilencer.java | 109 --- .../com/moto/actions/actions/TorchAction.java | 87 -- .../actions/actions/UpdatedStateNotifier.java | 22 - .../moto/actions/doze/DozePulseAction.java | 66 -- .../com/moto/actions/doze/GlanceSensor.java | 76 -- .../moto/actions/doze/ProximitySensor.java | 81 -- .../com/moto/actions/doze/ScreenReceiver.java | 50 -- .../actions/doze/ScreenStateNotifier.java | 23 - .../src/com/moto/actions/util/FileUtils.java | 125 --- aosp.dependencies | 6 + 75 files changed, 6 insertions(+), 4563 deletions(-) delete mode 100644 MotoActions/Android.mk delete mode 100644 MotoActions/AndroidManifest.xml delete mode 100644 MotoActions/res/drawable/ambient_png.png delete mode 100644 MotoActions/res/drawable/fpgesture_png.png delete mode 100644 MotoActions/res/drawable/gesture_png.png delete mode 100644 MotoActions/res/drawable/ic_actions_chop.xml delete mode 100644 MotoActions/res/drawable/ic_actions_flip.xml delete mode 100644 MotoActions/res/drawable/ic_actions_lift.xml delete mode 100644 MotoActions/res/drawable/ic_actions_twist.xml delete mode 100644 MotoActions/res/drawable/ic_actions_wave.xml delete mode 100644 MotoActions/res/drawable/ic_double_tap.xml delete mode 100644 MotoActions/res/drawable/ic_fingerprint.xml delete mode 100644 MotoActions/res/drawable/ic_gesture.png delete mode 100644 MotoActions/res/drawable/ic_hand.xml delete mode 100644 MotoActions/res/drawable/ic_pickup.xml delete mode 100644 MotoActions/res/drawable/ic_settings_doze.xml delete mode 100644 MotoActions/res/drawable/ic_settings_fingerprint.xml delete mode 100644 MotoActions/res/drawable/ic_settings_gestures.xml delete mode 100644 MotoActions/res/drawable/ic_settings_gestures_dashboard.xml delete mode 100644 MotoActions/res/drawable/ic_settings_screen_off_gestures.xml delete mode 100644 MotoActions/res/drawable/ic_swipe_left.xml delete mode 100644 MotoActions/res/drawable/ic_swipe_right.xml delete mode 100644 MotoActions/res/drawable/ic_tap.xml delete mode 100644 MotoActions/res/drawable/ic_tap_hold.xml delete mode 100644 MotoActions/res/drawable/ic_vibrate.xml delete mode 100644 MotoActions/res/drawable/motoactions_png.png delete mode 100644 MotoActions/res/drawable/switchbar_background.xml delete mode 100644 MotoActions/res/layout/actions.xml delete mode 100644 MotoActions/res/layout/doze.xml delete mode 100644 MotoActions/res/layout/fp_gesture.xml delete mode 100644 MotoActions/res/layout/gesture.xml delete mode 100644 MotoActions/res/layout/preference_category_material_settings.xml delete mode 100644 MotoActions/res/layout/preference_material_settings.xml delete mode 100644 MotoActions/res/layout/switch_bar.xml delete mode 100644 MotoActions/res/values-pt-rBR/strings.xml delete mode 100644 MotoActions/res/values/array.xml delete mode 100644 MotoActions/res/values/styles.xml delete mode 100644 MotoActions/res/xml/actions_panel.xml delete mode 100644 MotoActions/res/xml/doze_panel.xml delete mode 100644 MotoActions/res/xml/doze_panel_indexable.xml delete mode 100644 MotoActions/res/xml/fp_gesture_panel.xml delete mode 100644 MotoActions/res/xml/fp_gesture_panel_indexable.xml delete mode 100644 MotoActions/res/xml/main_panel.xml delete mode 100644 MotoActions/src/com/moto/actions/ActionsPreferenceActivity.java delete mode 100644 MotoActions/src/com/moto/actions/ActionsPreferenceFragment.java delete mode 100644 MotoActions/src/com/moto/actions/BootCompletedReceiver.java delete mode 100644 MotoActions/src/com/moto/actions/DozeSettingsActivity.java delete mode 100644 MotoActions/src/com/moto/actions/DozeSettingsFragment.java delete mode 100644 MotoActions/src/com/moto/actions/FPGestureSettingsActivity.java delete mode 100644 MotoActions/src/com/moto/actions/FPGestureSettingsFragment.java delete mode 100644 MotoActions/src/com/moto/actions/GestureSettingsActivity.java delete mode 100644 MotoActions/src/com/moto/actions/GestureSettingsFragment.java delete mode 100644 MotoActions/src/com/moto/actions/KeyHandler.java delete mode 100644 MotoActions/src/com/moto/actions/MotoActionsSearchIndexablesProvider.java delete mode 100644 MotoActions/src/com/moto/actions/MotoActionsService.java delete mode 100644 MotoActions/src/com/moto/actions/MotoActionsSettings.java delete mode 100644 MotoActions/src/com/moto/actions/SensorAction.java delete mode 100644 MotoActions/src/com/moto/actions/SensorHelper.java delete mode 100644 MotoActions/src/com/moto/actions/ServiceWrapper.java delete mode 100644 MotoActions/src/com/moto/actions/actions/CameraActivationAction.java delete mode 100644 MotoActions/src/com/moto/actions/actions/CameraActivationSensor.java delete mode 100644 MotoActions/src/com/moto/actions/actions/ChopChopSensor.java delete mode 100644 MotoActions/src/com/moto/actions/actions/Constants.java delete mode 100644 MotoActions/src/com/moto/actions/actions/FlipToMute.java delete mode 100644 MotoActions/src/com/moto/actions/actions/LiftToSilence.java delete mode 100644 MotoActions/src/com/moto/actions/actions/ProximitySilencer.java delete mode 100644 MotoActions/src/com/moto/actions/actions/TorchAction.java delete mode 100644 MotoActions/src/com/moto/actions/actions/UpdatedStateNotifier.java delete mode 100644 MotoActions/src/com/moto/actions/doze/DozePulseAction.java delete mode 100644 MotoActions/src/com/moto/actions/doze/GlanceSensor.java delete mode 100644 MotoActions/src/com/moto/actions/doze/ProximitySensor.java delete mode 100644 MotoActions/src/com/moto/actions/doze/ScreenReceiver.java delete mode 100644 MotoActions/src/com/moto/actions/doze/ScreenStateNotifier.java delete mode 100644 MotoActions/src/com/moto/actions/util/FileUtils.java diff --git a/MotoActions/Android.mk b/MotoActions/Android.mk deleted file mode 100644 index ccbaeca..0000000 --- a/MotoActions/Android.mk +++ /dev/null @@ -1,25 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_PACKAGE_NAME := MotoActions -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_CERTIFICATE := platform -LOCAL_PRIVILEGED_MODULE := true -LOCAL_USE_AAPT2 := true - -LOCAL_PROGUARD_FLAG_FILES := proguard.flags - -LOCAL_RESOURCE_DIR := \ - $(LOCAL_PATH)/res \ - $(TOP)/packages/resources/devicesettings/res \ - $(TOP)/packages/resources/devicesettings-custom/res - -LOCAL_PROGUARD_ENABLED := disabled - -include frameworks/base/packages/SettingsLib/common.mk - -include $(BUILD_PACKAGE) diff --git a/MotoActions/AndroidManifest.xml b/MotoActions/AndroidManifest.xml deleted file mode 100644 index 09f0c76..0000000 --- a/MotoActions/AndroidManifest.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MotoActions/res/drawable/ambient_png.png b/MotoActions/res/drawable/ambient_png.png deleted file mode 100644 index 144975ac5aeb40d979ca7f19dda8145288b01e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99782 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%0DR;1yOV0tXI39B)ucsp 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 E2IF){(*OVf diff --git a/MotoActions/res/drawable/ic_actions_chop.xml b/MotoActions/res/drawable/ic_actions_chop.xml deleted file mode 100644 index b267975..0000000 --- a/MotoActions/res/drawable/ic_actions_chop.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/MotoActions/res/drawable/ic_actions_flip.xml b/MotoActions/res/drawable/ic_actions_flip.xml deleted file mode 100644 index 64a7a6e..0000000 --- a/MotoActions/res/drawable/ic_actions_flip.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/drawable/ic_actions_lift.xml b/MotoActions/res/drawable/ic_actions_lift.xml deleted file mode 100644 index 147dd28..0000000 --- a/MotoActions/res/drawable/ic_actions_lift.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/MotoActions/res/drawable/ic_actions_twist.xml b/MotoActions/res/drawable/ic_actions_twist.xml deleted file mode 100644 index 138da1d..0000000 --- a/MotoActions/res/drawable/ic_actions_twist.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/drawable/ic_actions_wave.xml b/MotoActions/res/drawable/ic_actions_wave.xml deleted file mode 100644 index 6d06034..0000000 --- a/MotoActions/res/drawable/ic_actions_wave.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/drawable/ic_double_tap.xml b/MotoActions/res/drawable/ic_double_tap.xml deleted file mode 100644 index 12ed106..0000000 --- a/MotoActions/res/drawable/ic_double_tap.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_fingerprint.xml b/MotoActions/res/drawable/ic_fingerprint.xml deleted file mode 100644 index 089fefe..0000000 --- a/MotoActions/res/drawable/ic_fingerprint.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_gesture.png b/MotoActions/res/drawable/ic_gesture.png deleted file mode 100644 index c9a36462ed05ea985046342819690d70738978ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7705 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 TYnnS&00000NkvXXu0mjfk<;!) diff --git a/MotoActions/res/drawable/ic_hand.xml b/MotoActions/res/drawable/ic_hand.xml deleted file mode 100644 index 21ece7e..0000000 --- a/MotoActions/res/drawable/ic_hand.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_pickup.xml b/MotoActions/res/drawable/ic_pickup.xml deleted file mode 100644 index 32670aa..0000000 --- a/MotoActions/res/drawable/ic_pickup.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_settings_doze.xml b/MotoActions/res/drawable/ic_settings_doze.xml deleted file mode 100644 index 04d2846..0000000 --- a/MotoActions/res/drawable/ic_settings_doze.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/drawable/ic_settings_fingerprint.xml b/MotoActions/res/drawable/ic_settings_fingerprint.xml deleted file mode 100644 index 21e26c9..0000000 --- a/MotoActions/res/drawable/ic_settings_fingerprint.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_settings_gestures.xml b/MotoActions/res/drawable/ic_settings_gestures.xml deleted file mode 100644 index a51bbd4..0000000 --- a/MotoActions/res/drawable/ic_settings_gestures.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/MotoActions/res/drawable/ic_settings_gestures_dashboard.xml b/MotoActions/res/drawable/ic_settings_gestures_dashboard.xml deleted file mode 100644 index 18f3b95..0000000 --- a/MotoActions/res/drawable/ic_settings_gestures_dashboard.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/MotoActions/res/drawable/ic_settings_screen_off_gestures.xml b/MotoActions/res/drawable/ic_settings_screen_off_gestures.xml deleted file mode 100644 index cbad92b..0000000 --- a/MotoActions/res/drawable/ic_settings_screen_off_gestures.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_swipe_left.xml b/MotoActions/res/drawable/ic_swipe_left.xml deleted file mode 100644 index 33d5ed2..0000000 --- a/MotoActions/res/drawable/ic_swipe_left.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_swipe_right.xml b/MotoActions/res/drawable/ic_swipe_right.xml deleted file mode 100644 index 6042b53..0000000 --- a/MotoActions/res/drawable/ic_swipe_right.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_tap.xml b/MotoActions/res/drawable/ic_tap.xml deleted file mode 100644 index 1599ca4..0000000 --- a/MotoActions/res/drawable/ic_tap.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/MotoActions/res/drawable/ic_tap_hold.xml b/MotoActions/res/drawable/ic_tap_hold.xml deleted file mode 100644 index e064f67..0000000 --- a/MotoActions/res/drawable/ic_tap_hold.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/ic_vibrate.xml b/MotoActions/res/drawable/ic_vibrate.xml deleted file mode 100644 index 37faede..0000000 --- a/MotoActions/res/drawable/ic_vibrate.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/MotoActions/res/drawable/motoactions_png.png b/MotoActions/res/drawable/motoactions_png.png deleted file mode 100644 index 92a1adc9dbf4da9bbc4d4d935d0817d12630cc50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56793 zcmYg%2UL^G^ES#A5KvH>NE4A>rFXc1q98>&geFKYp@m*V0Y#chlMd2*?*vqO4L$VU z2?;eJ)b9oE?|;6WL(U<|?#|B6JTvpmzM<->iuVW~6XM|D+K?4Wp4kHfEEd;@B z;FDj2msvPCPjFr<{Hx_Tg_!m6HC*?b$F7T64a@}IA|U*r6 zAKX1pnZM>Jd?0^K`kVBTDRO-u!C+;{SJ!_;{DIncj<@-li>RyRfB=m2K&oZ^DX(fm z0LBauwCp1Ja!xtY!pDCiBUM(nOYeNdnbykDMVLZOEOKPxL3sL5BP3d81sv}&sI#>+ z_C^?0wQ)QhNxvJ6>kEwE{(M%5QVTdK)D-*&#}qnw5p5+LaWQkyDt)~19TbH$n%4BW zz_&_08}C-m+-snR?2f09NP7#C@72Ojf2yp@U|M_+%u-lEnOc`|m5Ru<*4sFGGQNVh za7_KS9tTu1;nt8YjW?p_yy0_&WUj1fG(On+A-GAsp^(wM7wTRk332uE=_BG(1}qh( zhRyQxGTF6Qgb;h2-`?b*Y6$5II&hTNrJ`fY0Tds;j!l(;Cmuinl!(CtsHLx%L?gO`|aar9X8%yDtXGyAQK_s}0|=c+ws@$4Df zkht;=200~fw+klA!!q9ktDR&F{e$xXlDFOS0!)VZ6h)h%4VSc(IfO-d8Ap>mTR*eW z0pG#-R(=ad@84(A8I!5ptj#v*+Zh4=;W|bn-Xe+&*kvCn8AP0}NshxU9AHYExb+>` zz0ViB40x^n29T6T^qW4rZ=*WNtIWJ4ad5gOa6a5$T$J5Am2o-UeZ`>CP%`7~hAQ^( zs&8og-alA?gTpV3gVVd~lzt3|yX}=y8G$%wsP`L@jsJ{KD~^3yOo;OY*j(8}&JbKm zOqFfP>M^>30#N2jYrw|hEvV5mlIuCrf z-@XzAhwH9#cl{d4U$(s(Ck(ELkC2&RrGxwK?VAm!um8;xS={;b*`}{%Ve#>@ANVX8 z{m=DxKjA{o_1I4{PSai0aFU^)4vSOUpB?KQ+L8uZV*njc)8Kq?Nqy7Ne92Th^24F6 z5YwAxRwRn^A^aYWEHzWK<354NjPP)yn38hM_qqPJYBjy%{gM%PuXm=7HqYNoDMvNM zXAexlr0BW%nz8GpgFkOHGxtwcF_T|ko1>y}Y{jQa#KN8HK?`qXe|?#4mSnfU|4~`> z?0TgSBDcB=DGJI@fOGO-uy!Yw<9n{6e6w{=(ri%W?X!{Ijz$PqB6 zh`rDzo%?mT3L%q!)Is8E?GSE@vlF9 z68jd5poJ!78Up@!Wwu+!?l`Ajo=-8&!q z+oLR%;^~6JSpHiirgMU}aoGv*w5!QYBlv~AikRldU-G8tUEmbsU#~ovZoD-?mrzav zb^Ec!kbZP6!0(qL_3I}uTOUz3;yQ2sH~e0iv##RO@ZB37JO+>;>gC4oaH-#dJ~zA6 zrXtkrM0SPGn$k&>L-7Aw;7Lr(JxN>7AaQqm+vDNa(r<3jUW+43a3#Le|4m;FAc_K$ z8;4FM?tkhlufEW5Hy^nN1O&kE#J^>3A4#uF;kH(RatUADhIlaM&|Ld9PTl^H7jaGL%#*IdS6S+bO9f6SN$#t$mWiQ-?$CVpzUHc;eqe1~V zeeUx=t;DQIy}nL7oGK;;6&wK0ie&w^U-{^@N&9TMY!7gf@0HeipN@sr7e;rF(*qeh0{ke6OxjdJU-0=tZU7uV`

TjG?ib7*wuQFUN3BVX+Ds4;A*k!9!8UHmT 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 - - - - - diff --git a/MotoActions/res/layout/actions.xml b/MotoActions/res/layout/actions.xml deleted file mode 100644 index f1ae15d..0000000 --- a/MotoActions/res/layout/actions.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/MotoActions/res/layout/doze.xml b/MotoActions/res/layout/doze.xml deleted file mode 100644 index dac8633..0000000 --- a/MotoActions/res/layout/doze.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/MotoActions/res/layout/fp_gesture.xml b/MotoActions/res/layout/fp_gesture.xml deleted file mode 100644 index 40a5ed4..0000000 --- a/MotoActions/res/layout/fp_gesture.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/MotoActions/res/layout/gesture.xml b/MotoActions/res/layout/gesture.xml deleted file mode 100644 index 21e6adf..0000000 --- a/MotoActions/res/layout/gesture.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/MotoActions/res/layout/preference_category_material_settings.xml b/MotoActions/res/layout/preference_category_material_settings.xml deleted file mode 100644 index 5a1043d..0000000 --- a/MotoActions/res/layout/preference_category_material_settings.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MotoActions/res/layout/preference_material_settings.xml b/MotoActions/res/layout/preference_material_settings.xml deleted file mode 100644 index 9682e32..0000000 --- a/MotoActions/res/layout/preference_material_settings.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/MotoActions/res/layout/switch_bar.xml b/MotoActions/res/layout/switch_bar.xml deleted file mode 100644 index 408d8f0..0000000 --- a/MotoActions/res/layout/switch_bar.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/MotoActions/res/values-pt-rBR/strings.xml b/MotoActions/res/values-pt-rBR/strings.xml deleted file mode 100644 index b598e12..0000000 --- a/MotoActions/res/values-pt-rBR/strings.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Moto Ações - - - Gestos do dispositivo - Gerenciar os gestos do dispositivo - - - Gerenciar os gestos da tela ambiente - - - Gestos no sensor biométrico - Habilitar o uso de gestos no sensor biométrico - Gerenciar os gestos do sensor biométrico - Ações com a tela ligada - Toque único - Selecione a ação para toque único - Toque duplo - Selecione a ação para toque duplo - Toque longo - Selecione a ação para toque longo - Deslizar para a esquerda - Selecione a ação para deslizar para a esquerda - Deslizar para a direita - Selecione a ação para deslizar para a direita - - - Habilitar com a tela desligada - Habilitar os gestos no sensor biométrico quando a tela estiver desligada.\n\nO desbloqueio por impressão digital deve estar desativado para usar esse recurso. - Ações com a tela desligada - - - Não fazer nada - Início - Ligar/desligar tela - Acordar o dispositivo - Voltar - Recentes - Último app - Aumentar volume - Diminuir volume - Assistente de voz - Tocar/pausar - Faixa anterior - Próxima faixa - Ligar/desligar lanterna - Abrir câmera - Tirar uma captura de tela - Abrir navegador - Abrir discador - Abrir app de mail - Abrir app de mensagens - - - Tocar para ativar - Toque duas vezes em qualquer parte da tela para ativar o dispositivo - - - Retorno tátil - Vibrar quando um gesto for detectado - - diff --git a/MotoActions/res/values/array.xml b/MotoActions/res/values/array.xml deleted file mode 100644 index 872aca0..0000000 --- a/MotoActions/res/values/array.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - @string/action_none - @string/action_home - @string/action_power - @string/action_back - @string/action_recents - @string/action_last_app - @string/action_volume_up - @string/action_volume_down - @string/action_voice_assistant - @string/action_play_pause - @string/action_previous_track - @string/action_next_track - @string/action_flashlight - @string/action_camera - @string/action_screenshot - - - 0 - 100 - 101 - 102 - 103 - 121 - 104 - 105 - 106 - 107 - 108 - 109 - 110 - 111 - 112 - - - - @string/action_none - @string/action_power - @string/action_volume_up - @string/action_volume_down - @string/action_play_pause - @string/action_previous_track - @string/action_next_track - @string/action_flashlight - @string/action_camera - - - 0 - 101 - 104 - 105 - 107 - 108 - 109 - 110 - 111 - - diff --git a/MotoActions/res/values/styles.xml b/MotoActions/res/values/styles.xml deleted file mode 100644 index d39be67..0000000 --- a/MotoActions/res/values/styles.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/MotoActions/res/xml/actions_panel.xml b/MotoActions/res/xml/actions_panel.xml deleted file mode 100644 index 9c1d8bc..0000000 --- a/MotoActions/res/xml/actions_panel.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/MotoActions/res/xml/doze_panel.xml b/MotoActions/res/xml/doze_panel.xml deleted file mode 100644 index cea6485..0000000 --- a/MotoActions/res/xml/doze_panel.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - diff --git a/MotoActions/res/xml/doze_panel_indexable.xml b/MotoActions/res/xml/doze_panel_indexable.xml deleted file mode 100644 index c3972a3..0000000 --- a/MotoActions/res/xml/doze_panel_indexable.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/xml/fp_gesture_panel.xml b/MotoActions/res/xml/fp_gesture_panel.xml deleted file mode 100644 index 41fca73..0000000 --- a/MotoActions/res/xml/fp_gesture_panel.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MotoActions/res/xml/fp_gesture_panel_indexable.xml b/MotoActions/res/xml/fp_gesture_panel_indexable.xml deleted file mode 100644 index a632548..0000000 --- a/MotoActions/res/xml/fp_gesture_panel_indexable.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/MotoActions/res/xml/main_panel.xml b/MotoActions/res/xml/main_panel.xml deleted file mode 100644 index b1f9885..0000000 --- a/MotoActions/res/xml/main_panel.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/MotoActions/src/com/moto/actions/ActionsPreferenceActivity.java b/MotoActions/src/com/moto/actions/ActionsPreferenceActivity.java deleted file mode 100644 index b2538d8..0000000 --- a/MotoActions/src/com/moto/actions/ActionsPreferenceActivity.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; -import android.preference.PreferenceActivity; - -public class ActionsPreferenceActivity extends PreferenceActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - } - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new ActionsPreferenceFragment()).commit(); - } - } diff --git a/MotoActions/src/com/moto/actions/ActionsPreferenceFragment.java b/MotoActions/src/com/moto/actions/ActionsPreferenceFragment.java deleted file mode 100644 index e98fbd3..0000000 --- a/MotoActions/src/com/moto/actions/ActionsPreferenceFragment.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2015-2016 The CyanogenMod Project - * Copyright (C) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; -import androidx.preference.PreferenceFragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -public class ActionsPreferenceFragment extends PreferenceFragment { - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View view = LayoutInflater.from(getContext()).inflate(R.layout.actions, container, false); - ((ViewGroup) view).addView(super.onCreateView(inflater, container, savedInstanceState)); - return view; - } - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.main_panel); - } -} diff --git a/MotoActions/src/com/moto/actions/BootCompletedReceiver.java b/MotoActions/src/com/moto/actions/BootCompletedReceiver.java deleted file mode 100644 index 7f61a99..0000000 --- a/MotoActions/src/com/moto/actions/BootCompletedReceiver.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.content.BroadcastReceiver; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.content.ServiceConnection; -import android.os.IBinder; -import android.util.Log; - -import com.moto.actions.actions.Constants; -import com.moto.actions.ServiceWrapper.LocalBinder; - -public class BootCompletedReceiver extends BroadcastReceiver { - static final String TAG = "MotoActions"; - final String NAVBAR_SHOWN = "navbar_shown"; - - private ServiceWrapper mServiceWrapper; - - @Override - public void onReceive(final Context context, Intent intent) { - Log.i(TAG, "Booting"); - - if (intent.getAction() != null && !intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { - return; - } - - // Restore nodes to saved preference values - for (String pref : Constants.sPrefKeys) { - Constants.writePreference(context, pref); - } - - context.startService(new Intent(context, ServiceWrapper.class)); - } - - private ServiceConnection serviceConnection = new ServiceConnection() { - @Override - public void onServiceConnected(ComponentName className, IBinder service) { - LocalBinder binder = (LocalBinder) service; - mServiceWrapper = binder.getService(); - mServiceWrapper.start(); - } - - @Override - public void onServiceDisconnected(ComponentName className) { - mServiceWrapper = null; - } - }; -} diff --git a/MotoActions/src/com/moto/actions/DozeSettingsActivity.java b/MotoActions/src/com/moto/actions/DozeSettingsActivity.java deleted file mode 100644 index 273d66c..0000000 --- a/MotoActions/src/com/moto/actions/DozeSettingsActivity.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; -import android.preference.PreferenceActivity; - -public class DozeSettingsActivity extends PreferenceActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - getActionBar().setTitle(R.string.ambient_display_title); - } - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new DozeSettingsFragment()).commit(); - } -} diff --git a/MotoActions/src/com/moto/actions/DozeSettingsFragment.java b/MotoActions/src/com/moto/actions/DozeSettingsFragment.java deleted file mode 100644 index 6965c96..0000000 --- a/MotoActions/src/com/moto/actions/DozeSettingsFragment.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; -import androidx.preference.PreferenceFragment; -import android.provider.Settings; -import androidx.preference.Preference; -import androidx.preference.SwitchPreference; -import android.view.MenuItem; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CompoundButton; -import android.widget.Switch; -import android.widget.TextView; - -public class DozeSettingsFragment extends PreferenceFragment { - - private SwitchPreference mHandwavePreference; - private SwitchPreference mPickupPreference; - - private TextView mSwitchBarText; - private Switch mAmbientDisplaySwitch; - - private String KEY_GESTURE_HAND_WAVE = "gesture_hand_wave"; - private String KEY_GESTURE_PICK_UP = "gesture_pick_up"; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View view = LayoutInflater.from(getContext()).inflate(R.layout.doze, container, false); - ((ViewGroup) view).addView(super.onCreateView(inflater, container, savedInstanceState)); - return view; - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - View switchBar = view.findViewById(R.id.switch_bar); - mAmbientDisplaySwitch = (Switch) switchBar.findViewById(android.R.id.switch_widget); - mAmbientDisplaySwitch.setChecked(MotoActionsSettings.isDozeEnabled(getActivity().getContentResolver())); - mAmbientDisplaySwitch.setOnCheckedChangeListener(mAmbientDisplayPrefListener); - - switchBar.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mAmbientDisplaySwitch.toggle(); - } - }); - - mSwitchBarText = switchBar.findViewById(R.id.switch_text); - mSwitchBarText.setText(MotoActionsSettings.isDozeEnabled(getActivity().getContentResolver()) ? R.string.switch_bar_on : - R.string.switch_bar_off); - } - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.doze_panel); - boolean dozeEnabled = MotoActionsSettings.isDozeEnabled(getActivity().getContentResolver()); - mHandwavePreference = (SwitchPreference) findPreference(KEY_GESTURE_HAND_WAVE); - mPickupPreference = (SwitchPreference) findPreference(KEY_GESTURE_PICK_UP); - updatePrefs(dozeEnabled); - } - - private CompoundButton.OnCheckedChangeListener mAmbientDisplayPrefListener = - new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean enable) { - if (enableDoze(enable)) { - updatePrefs(enable); - mSwitchBarText.setText(enable ? R.string.switch_bar_on : R.string.switch_bar_off); - } - } - }; - - private void updatePrefs(boolean enabled){ - mHandwavePreference.setEnabled(enabled); - mPickupPreference.setEnabled(enabled); - } - - private boolean enableDoze(boolean enable) { - return Settings.Secure.putInt(getActivity().getContentResolver(), - Settings.Secure.DOZE_ENABLED, enable ? 1 : 0); - } -} diff --git a/MotoActions/src/com/moto/actions/FPGestureSettingsActivity.java b/MotoActions/src/com/moto/actions/FPGestureSettingsActivity.java deleted file mode 100644 index a02c721..0000000 --- a/MotoActions/src/com/moto/actions/FPGestureSettingsActivity.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; - -import android.preference.PreferenceActivity; - -public class FPGestureSettingsActivity extends PreferenceActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - getActionBar().setTitle(R.string.fingerprint_gestures_title); - } - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new FPGestureSettingsFragment()).commit(); - } - } diff --git a/MotoActions/src/com/moto/actions/FPGestureSettingsFragment.java b/MotoActions/src/com/moto/actions/FPGestureSettingsFragment.java deleted file mode 100644 index 253ae94..0000000 --- a/MotoActions/src/com/moto/actions/FPGestureSettingsFragment.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.app.ActionBar; -import android.os.Bundle; -import android.content.Context; -import android.content.SharedPreferences.Editor; -import android.preference.PreferenceManager; -import androidx.preference.PreferenceCategory; -import androidx.preference.SwitchPreference; -import android.hardware.fingerprint.FingerprintManager; -import androidx.preference.PreferenceFragment; -import android.view.MenuItem; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CompoundButton; -import android.widget.Switch; -import android.widget.TextView; - -import com.moto.actions.actions.Constants; - -import static com.moto.actions.actions.Constants.FP_HOME_KEY; -import static com.moto.actions.actions.Constants.FP_HOME_KEY_OFF; - -public class FPGestureSettingsFragment extends PreferenceFragment { - - private SwitchPreference mFPScreenOffGesture; - private PreferenceCategory mFPScreenOffCategory; - private PreferenceCategory mFPScreenOnCategory; - - private TextView mSwitchBarText; - private Switch mFPGestureSwitch; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View view = LayoutInflater.from(getContext()).inflate(R.layout.fp_gesture, container, false); - ((ViewGroup) view).addView(super.onCreateView(inflater, container, savedInstanceState)); - return view; - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - View switchBar = view.findViewById(R.id.switch_bar); - mFPGestureSwitch = (Switch) switchBar.findViewById(android.R.id.switch_widget); - mFPGestureSwitch.setChecked(isFPGestureEnabled()); - mFPGestureSwitch.setOnCheckedChangeListener(mFPGesturePrefListener); - - switchBar.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mFPGestureSwitch.toggle(); - } - }); - - mSwitchBarText = switchBar.findViewById(R.id.switch_text); - mSwitchBarText.setText(isFPGestureEnabled() ? R.string.switch_bar_on : - R.string.switch_bar_off); - } - - private void updatePrefs(boolean enabled){ - Editor prefEditor = PreferenceManager.getDefaultSharedPreferences(getActivity()).edit(); - prefEditor.putBoolean(FP_HOME_KEY, enabled); - prefEditor.apply(); - mFPScreenOnCategory.setEnabled(enabled); - mFPScreenOffGesture.setEnabled(enabled); - mFPScreenOffCategory.setEnabled(enabled); - if(enabled){ - boolean hasEnrolledFingerprints = hasEnrolledFingerprints(); - mFPScreenOffGesture.setEnabled(!hasEnrolledFingerprints); - mFPScreenOffCategory.setEnabled(!hasEnrolledFingerprints); - } - } - - private boolean isFPGestureEnabled(){ - return Constants.isPreferenceEnabled(getActivity(), FP_HOME_KEY); - } - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.fp_gesture_panel); - mFPScreenOffGesture = (SwitchPreference) findPreference(FP_HOME_KEY_OFF); - mFPScreenOffCategory = (PreferenceCategory) findPreference("fp_keys_scr_off"); - mFPScreenOnCategory = (PreferenceCategory) findPreference("fp_keys_scr_on"); - updatePrefs(isFPGestureEnabled()); - } - - private CompoundButton.OnCheckedChangeListener mFPGesturePrefListener = - new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean enable) { - updatePrefs(enable); - mSwitchBarText.setText(enable ? R.string.switch_bar_on : R.string.switch_bar_off); - } - }; - - private boolean hasEnrolledFingerprints(){ - FingerprintManager fingerprintManager = (FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE); - return fingerprintManager.hasEnrolledFingerprints(); - } - -} diff --git a/MotoActions/src/com/moto/actions/GestureSettingsActivity.java b/MotoActions/src/com/moto/actions/GestureSettingsActivity.java deleted file mode 100644 index dc99555..0000000 --- a/MotoActions/src/com/moto/actions/GestureSettingsActivity.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; - -import android.preference.PreferenceActivity; - -public class GestureSettingsActivity extends PreferenceActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - } - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new GestureSettingsFragment()).commit(); - } - } diff --git a/MotoActions/src/com/moto/actions/GestureSettingsFragment.java b/MotoActions/src/com/moto/actions/GestureSettingsFragment.java deleted file mode 100644 index 3daf02c..0000000 --- a/MotoActions/src/com/moto/actions/GestureSettingsFragment.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.os.Bundle; -import androidx.preference.PreferenceFragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -public class GestureSettingsFragment extends PreferenceFragment { - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View view = LayoutInflater.from(getContext()).inflate(R.layout.gesture, container, false); - ((ViewGroup) view).addView(super.onCreateView(inflater, container, savedInstanceState)); - return view; - } - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.actions_panel); - } - -} diff --git a/MotoActions/src/com/moto/actions/KeyHandler.java b/MotoActions/src/com/moto/actions/KeyHandler.java deleted file mode 100644 index 8cca7e9..0000000 --- a/MotoActions/src/com/moto/actions/KeyHandler.java +++ /dev/null @@ -1,756 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * Copyright (C) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.app.ActivityManager; -import android.app.ActivityManagerNative; -import android.app.ISearchManager; -import android.app.KeyguardManager; -import android.content.ActivityNotFoundException; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.res.Resources; -import android.hardware.Sensor; -import android.hardware.camera2.CameraAccessException; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CameraManager; -import android.hardware.input.InputManager; -import android.media.AudioAttributes; -import android.media.session.MediaSessionLegacyHelper; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.os.RemoteException; -import android.os.ServiceManager; -import android.os.SystemClock; -import android.os.UserHandle; -import android.os.VibrationEffect; -import android.os.Vibrator; -import android.provider.MediaStore; -import android.provider.Settings; -import android.util.Log; -import android.view.InputDevice; -import android.view.KeyCharacterMap; -import android.view.KeyEvent; -import android.view.ViewConfiguration; - -import com.android.internal.os.DeviceKeyHandler; -import com.android.internal.util.ArrayUtils; - -import com.moto.actions.util.FileUtils; - -import java.util.List; - -import static com.moto.actions.actions.Constants.*; - -public class KeyHandler implements DeviceKeyHandler { - - private static final String TAG = KeyHandler.class.getSimpleName(); - - private static final int GESTURE_REQUEST = 1; - private static final int FP_ACTION_REQUEST = 2; - - private static final String ACTION_DISMISS_KEYGUARD = - "com.android.keyguard.action.DISMISS_KEYGUARD_SECURELY"; - - private static final String GESTURE_WAKEUP_REASON = "keyhandler-gesture-wakeup"; - private static final int GESTURE_WAKELOCK_DURATION = 3000; - private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() - .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) - .build(); - private final Context mContext; - private final PowerManager mPowerManager; - WakeLock mGestureWakeLock; - private KeyguardManager mKeyguardManager; - private FPScreenOffGesturesHandler mFPScreenOffGesturesHandler; - private CameraManager mCameraManager; - private String mRearCameraId; - private boolean mTorchEnabled; - private Vibrator mVibrator; - private ISearchManager mSearchManagerService; - private Handler mHandler; - private int fpTapCounts = 0; - private boolean fpTapPending = false; - private boolean fpGesturePending = false; - private Runnable doubleTapRunnable = new Runnable() { - public void run() { - int action = 0; - if (fpTapCounts > 1) { - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEY_DBLTAP_NODE))); - } else { - if (isSingleTapEnabledOnFP()) { - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEYS_NODE))); - } - } - - if (action != 0) { - boolean isActionSupported = ArrayUtils.contains(mPowerManager.isScreenOn() ? sFPSupportedActions : sFPSupportedActionsScreenOff, action); - if (isActionSupported) { - fireFPAction(action, true); - } - } - resetDoubleTapOnFP(); - } - }; - private Runnable fpGestureRunnable = new Runnable() { - public void run() { - resetFPGestureDelay(); - } - }; - - public KeyHandler(Context context) { - mContext = context; - - mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - mFPScreenOffGesturesHandler = new FPScreenOffGesturesHandler(); - - mGestureWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, - "GestureWakeLock"); - - mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); - if (mVibrator == null || !mVibrator.hasVibrator()) { - mVibrator = null; - } - - mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); - mCameraManager.registerTorchCallback(new MyTorchCallback(), null); - - mHandler = new Handler(Looper.getMainLooper()); - } - - static long[] getLongIntArray(Resources r, int resid) { - int[] ar = r.getIntArray(resid); - if (ar == null) { - return null; - } - long[] out = new long[ar.length]; - for (int i = 0; i < ar.length; i++) { - out[i] = ar[i]; - } - return out; - } - - private static ActivityInfo getRunningActivityInfo(Context context) { - final ActivityManager am = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - final PackageManager pm = context.getPackageManager(); - - List tasks = am.getRunningTasks(1); - if (tasks != null && !tasks.isEmpty()) { - ActivityManager.RunningTaskInfo top = tasks.get(0); - try { - return pm.getActivityInfo(top.topActivity, 0); - } catch (PackageManager.NameNotFoundException e) { - } - } - return null; - } - - private static void dispatchMediaKeyWithWakeLock(int keycode, Context context) { - if (ActivityManagerNative.isSystemReady()) { - KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(), - SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN, keycode, 0); - MediaSessionLegacyHelper.getHelper(context).sendMediaButtonEvent(event, true); - event = KeyEvent.changeAction(event, KeyEvent.ACTION_UP); - MediaSessionLegacyHelper.getHelper(context).sendMediaButtonEvent(event, true); - } - } - - private static void switchToLastApp(Context context) { - final ActivityManager am = - (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - ActivityManager.RunningTaskInfo lastTask = getLastTask(context, am); - - if (lastTask != null) { - am.moveTaskToFront(lastTask.id, ActivityManager.MOVE_TASK_NO_USER_ACTION); - } - } - - private static ActivityManager.RunningTaskInfo getLastTask(Context context, - final ActivityManager am) { - final String defaultHomePackage = resolveCurrentLauncherPackage(context); - List tasks = am.getRunningTasks(5); - - for (int i = 1; i < tasks.size(); i++) { - String packageName = tasks.get(i).topActivity.getPackageName(); - if (!packageName.equals(defaultHomePackage) - && !packageName.equals(context.getPackageName()) - && !packageName.equals("com.android.systemui")) { - return tasks.get(i); - } - } - return null; - } - - private static String resolveCurrentLauncherPackage(Context context) { - final Intent launcherIntent = new Intent(Intent.ACTION_MAIN) - .addCategory(Intent.CATEGORY_HOME); - final PackageManager pm = context.getPackageManager(); - final ResolveInfo launcherInfo = pm.resolveActivity(launcherIntent, 0); - return launcherInfo.activityInfo.packageName; - } - - private String getRearCameraId() { - if (mRearCameraId == null) { - try { - for (final String cameraId : mCameraManager.getCameraIdList()) { - CameraCharacteristics characteristics = - mCameraManager.getCameraCharacteristics(cameraId); - int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING); - if (cOrientation == CameraCharacteristics.LENS_FACING_BACK) { - mRearCameraId = cameraId; - break; - } - } - } catch (CameraAccessException e) { - // Ignore - } - } - return mRearCameraId; - } - - private Intent getLaunchableIntent(Intent intent) { - PackageManager pm = mContext.getPackageManager(); - List resInfo = pm.queryIntentActivities(intent, 0); - if (resInfo.isEmpty()) { - return null; - } - return pm.getLaunchIntentForPackage(resInfo.get(0).activityInfo.packageName); - } - - private void triggerCameraAction() { - ensureKeyguardManager(); - WakeLock wl = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "GestureWakeLock"); - wl.acquire(500); - if (mKeyguardManager.inKeyguardRestrictedInputMode()) { - launchSecureCamera(); - } else { - launchCamera(); - } - } - - private void launchCamera() { - Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(Intent.FLAG_FROM_BACKGROUND); - if (getBestActivityInfo(intent) != null) { - // Only launch if we can succeed, but let the user pick the action - mContext.startActivity(intent); - } - } - - private void launchSecureCamera() { - // Keyguard won't allow a picker, try to pick the secure intent in the package - // that would be the one used for a default action of launching the camera - Intent normalIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); - normalIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - normalIntent.addFlags(Intent.FLAG_FROM_BACKGROUND); - - Intent secureIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE); - secureIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - secureIntent.addFlags(Intent.FLAG_FROM_BACKGROUND); - - ActivityInfo normalActivity = getBestActivityInfo(normalIntent); - ActivityInfo secureActivity = getBestActivityInfo(secureIntent, normalActivity); - if (secureActivity != null) { - secureIntent.setComponent(new ComponentName(secureActivity.applicationInfo.packageName, secureActivity.name)); - mContext.startActivity(secureIntent); - } - } - - private ActivityInfo getBestActivityInfo(Intent intent) { - PackageManager pm = mContext.getPackageManager(); - ResolveInfo resolveInfo = pm.resolveActivity(intent, 0); - if (resolveInfo != null) { - return resolveInfo.activityInfo; - } else { - // If the resolving failed, just find our own best match - return getBestActivityInfo(intent, null); - } - } - - private ActivityInfo getBestActivityInfo(Intent intent, ActivityInfo match) { - PackageManager pm = mContext.getPackageManager(); - List activities = pm.queryIntentActivities(intent, 0); - ActivityInfo best = null; - if (activities.size() > 0) { - best = activities.get(0).activityInfo; - if (match != null) { - String packageName = match.applicationInfo.packageName; - for (int i = activities.size() - 1; i >= 0; i--) { - ActivityInfo activityInfo = activities.get(i).activityInfo; - if (packageName.equals(activityInfo.applicationInfo.packageName)) { - best = activityInfo; - } - } - } - } - return best; - } - - private void openBrowser() { - mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION); - mPowerManager.wakeUp(SystemClock.uptimeMillis(), GESTURE_WAKEUP_REASON); - final Intent intent = getLaunchableIntent( - new Intent(Intent.ACTION_VIEW, Uri.parse("http:"))); - startActivitySafely(intent); - } - - private void openDialer() { - mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION); - mPowerManager.wakeUp(SystemClock.uptimeMillis(), GESTURE_WAKEUP_REASON); - final Intent intent = new Intent(Intent.ACTION_DIAL, null); - startActivitySafely(intent); - } - - private void openEmail() { - mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION); - mPowerManager.wakeUp(SystemClock.uptimeMillis(), GESTURE_WAKEUP_REASON); - final Intent intent = getLaunchableIntent( - new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:"))); - startActivitySafely(intent); - } - - private void openMessages() { - mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION); - mPowerManager.wakeUp(SystemClock.uptimeMillis(), GESTURE_WAKEUP_REASON); - final String defaultApplication = Settings.Secure.getString( - mContext.getContentResolver(), "sms_default_application"); - final PackageManager pm = mContext.getPackageManager(); - final Intent intent = pm.getLaunchIntentForPackage(defaultApplication); - if (intent != null) { - startActivitySafely(intent); - } - } - - private void toggleFlashlight() { - String rearCameraId = getRearCameraId(); - if (rearCameraId != null) { - mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION); - try { - mCameraManager.setTorchMode(rearCameraId, !mTorchEnabled); - mTorchEnabled = !mTorchEnabled; - } catch (CameraAccessException e) { - // Ignore - } - } - } - - private void ensureKeyguardManager() { - if (mKeyguardManager == null) { - mKeyguardManager = - (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); - } - } - - private void resetDoubleTapOnFP() { - fpTapCounts = 0; - fpTapPending = false; - mHandler.removeCallbacks(doubleTapRunnable); - } - - private void detectDoubleTapOnFP() { - fpTapCounts++; - if (fpTapCounts == 1 || fpTapCounts == 2) { - doHapticFeedbackFP(false); - } - if (!fpTapPending) { - fpTapPending = true; - mHandler.postDelayed(doubleTapRunnable, ViewConfiguration.getDoubleTapTimeout()); - } - } - - private boolean isSingleTapEnabledOnFP() { - return !FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEYS_NODE)).equals("0"); - } - - private boolean isDoubleTapEnabledOnFP() { - return !FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEY_DBLTAP_NODE)).equals("0"); - } - - private boolean isHapticFeedbackEnabledOnFP() { - return !FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_HAPTIC_NODE)).equals("0"); - } - - private String getFPNodeBasedOnScreenState(String node) { - if (mPowerManager.isScreenOn()) { - return node; - } - switch (node) { - case FP_KEYS_NODE: - return FP_KEYS_SCREENOFF_NODE; - case FP_HAPTIC_NODE: - return FP_HAPTIC_SCREENOFF_NODE; - case FP_KEY_DBLTAP_NODE: - return FP_KEY_SCREENOFF_DBLTAP_NODE; - case FP_KEY_HOLD_NODE: - return FP_KEY_SCREENOFF_HOLD_NODE; - case FP_KEY_RIGHT_NODE: - return FP_KEY_SCREENOFF_RIGHT_NODE; - case FP_KEY_LEFT_NODE: - return FP_KEY_SCREENOFF_LEFT_NODE; - } - return node; - } - - public KeyEvent handleKeyEvent(KeyEvent event) { - int scanCode = event.getScanCode(); - - if (DEBUG) { - Log.d(TAG, "DEBUG: action=" + event.getAction() - + ", flags=" + event.getFlags() - + ", keyCode=" + event.getKeyCode() - + ", scanCode=" + event.getScanCode() - + ", metaState=" + event.getMetaState() - + ", repeatCount=" + event.getRepeatCount()); - } - - boolean isFPScanCode = ArrayUtils.contains(sSupportedFPGestures, scanCode); - if (!isFPScanCode) { - return event; - } - - boolean isFPGestureEnabled = FileUtils.readOneLine(FP_HOME_NODE).equals("1"); - boolean isFPGestureEnabledOnScreenOff = FileUtils.readOneLine(FP_HOME_OFF_NODE).equals("1"); - - boolean isScreenOn = mPowerManager.isScreenOn(); - - // We only want ACTION_UP event - if (event.getAction() != KeyEvent.ACTION_UP) { - return null; - } - - if (isFPScanCode){ - if (fpGesturePending) { - return event; - } else { - resetFPGestureDelay(); - fpGesturePending = true; - mHandler.postDelayed(fpGestureRunnable, 10); - } - } - - if (scanCode != FP_TAP_SCANCODE) { - resetDoubleTapOnFP(); - } - - if (isFPScanCode) { - if ((!isFPGestureEnabled) || (!isScreenOn && !isFPGestureEnabledOnScreenOff)) { - resetDoubleTapOnFP(); - return event; - } - if (!isScreenOn && isFPGestureEnabledOnScreenOff) { - processFPScreenOffScancode(scanCode); - } else { - processFPScancode(scanCode); - } - } - return null; - } - - private void processFPScancode(int scanCode) { - int action = 0; - boolean isScreenOn = mPowerManager.isScreenOn(); - switch (scanCode) { - case FP_TAP_SCANCODE: - if (isDoubleTapEnabledOnFP()) { - detectDoubleTapOnFP(); - return; - } else { - resetDoubleTapOnFP(); - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEYS_NODE))); - } - break; - case FP_HOLD_SCANCODE: - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEY_HOLD_NODE))); - break; - case FP_RIGHT_SCANCODE: - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEY_RIGHT_NODE))); - break; - case FP_LEFT_SCANCODE: - action = str2int(FileUtils.readOneLine(getFPNodeBasedOnScreenState(FP_KEY_LEFT_NODE))); - break; - } - boolean isActionSupported = ArrayUtils.contains(isScreenOn ? sFPSupportedActions : sFPSupportedActionsScreenOff, action); - if (isActionSupported) { - fireFPAction(action, false); - } - } - - private void fireFPAction(int action, boolean isDoubleTap) { - ensureKeyguardManager(); - boolean isHapticFeedbackEnabledOnFP = isHapticFeedbackEnabledOnFP(); - if (isDoubleTap && action != ACTION_CAMERA && action != ACTION_FLASHLIGHT) { - isHapticFeedbackEnabledOnFP = false; - } - if (isHapticFeedbackEnabledOnFP){ - if (action == ACTION_CAMERA || action == ACTION_FLASHLIGHT) { - vibrate(action == ACTION_CAMERA ? 500 : 250); - }else if (action != ACTION_VOICE_ASSISTANT) { - doHapticFeedbackFP(false); - } - } - switch (action) { - case ACTION_HOME: - if (!mKeyguardManager.inKeyguardRestrictedInputMode()) { - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_HOME); - } - break; - case ACTION_POWER: - toggleScreenState(); - break; - case ACTION_BACK: - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_BACK); - break; - case ACTION_RECENTS: - if (!mKeyguardManager.inKeyguardRestrictedInputMode()) { - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_APP_SWITCH); - } - break; - case ACTION_VOLUME_UP: - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_VOLUME_UP); - break; - case ACTION_VOLUME_DOWN: - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_VOLUME_DOWN); - break; - case ACTION_VOICE_ASSISTANT: - if (!mKeyguardManager.inKeyguardRestrictedInputMode()) { - fireGoogleNowOnTap(); - } - return; - case ACTION_PLAY_PAUSE: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, mContext); - break; - case ACTION_PREVIOUS_TRACK: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_PREVIOUS, mContext); - break; - case ACTION_NEXT_TRACK: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_NEXT, mContext); - break; - case ACTION_FLASHLIGHT: - toggleFlashlight(); - break; - case ACTION_CAMERA: - triggerCameraAction(); - break; - case ACTION_SCREENSHOT: - triggerVirtualKeypress(mHandler, KeyEvent.KEYCODE_SYSRQ); - break; - case ACTION_LAST_APP: - if (!mKeyguardManager.inKeyguardRestrictedInputMode()) { - switchToLastApp(mContext); - } - break; - } - } - - private void vibrate(int intensity) { - if (mVibrator == null) { - return; - } - mVibrator.vibrate(intensity); - } - - private void toggleScreenState() { - if (mPowerManager.isScreenOn()) { - mPowerManager.goToSleep(SystemClock.uptimeMillis()); - } else { - mPowerManager.wakeUp(SystemClock.uptimeMillis()); - } - } - - private void triggerVirtualKeypress(final Handler handler, final int keyCode) { - final InputManager im = InputManager.getInstance(); - long now = SystemClock.uptimeMillis(); - - final KeyEvent downEvent = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, - keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, - KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_CLASS_BUTTON); - final KeyEvent upEvent = KeyEvent.changeAction(downEvent, - KeyEvent.ACTION_UP); - - // add a small delay to make sure everything behind got focus - handler.postDelayed(new Runnable() { - @Override - public void run() { - im.injectInputEvent(downEvent, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); - } - }, 10); - - handler.postDelayed(new Runnable() { - @Override - public void run() { - im.injectInputEvent(upEvent, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); - } - }, 20); - } - - private void fireGoogleNowOnTap() { - doHapticFeedbackFP(true); - mSearchManagerService = ISearchManager.Stub.asInterface(ServiceManager.getService(Context.SEARCH_SERVICE)); - if (mSearchManagerService != null) { - try { - mSearchManagerService.launchAssist(mContext.getUserId(), new Bundle()); - } catch (RemoteException e) { - } - } - } - - private int str2int(String str) { - if (str == null || str.isEmpty()) { - return 0; - } - try { - return Integer.valueOf(str); - } catch (Exception e) { - return 0; - } - } - - private void processFPScreenOffScancode(int scanCode) { - if (!mFPScreenOffGesturesHandler.hasMessages(FP_ACTION_REQUEST)) { - Message msg = mFPScreenOffGesturesHandler.obtainMessage(FP_ACTION_REQUEST); - msg.arg1 = scanCode; - mFPScreenOffGesturesHandler.sendMessage(msg); - } - } - - private void resetFPGestureDelay() { - fpGesturePending = false; - mHandler.removeCallbacks(fpGestureRunnable); - } - - private void fireScreenOffAction(int action) { - boolean haptic = Settings.System.getInt(mContext.getContentResolver(), KEY_GESTURE_ENABLE_HAPTIC_FEEDBACK, 1) != 0; - if (haptic && (action == ACTION_CAMERA || action == ACTION_FLASHLIGHT)) { - vibrate(action == ACTION_CAMERA ? 500 : 250); - } - if (haptic && action == ACTION_POWER){ - doHapticFeedbackScreenOff(); - } - switch (action) { - case ACTION_POWER: - toggleScreenState(); - break; - case ACTION_PLAY_PAUSE: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, mContext); - break; - case ACTION_PREVIOUS_TRACK: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_PREVIOUS, mContext); - break; - case ACTION_NEXT_TRACK: - dispatchMediaKeyWithWakeLock(KeyEvent.KEYCODE_MEDIA_NEXT, mContext); - break; - case ACTION_FLASHLIGHT: - toggleFlashlight(); - break; - case ACTION_CAMERA: - triggerCameraAction(); - break; - case ACTION_BROWSER: - openBrowser(); - break; - case ACTION_DIALER: - openDialer(); - break; - case ACTION_EMAIL: - openEmail(); - break; - case ACTION_MESSAGES: - openMessages(); - break; - } - if (action != ACTION_FLASHLIGHT && action != ACTION_CAMERA && action != ACTION_POWER) { - doHapticFeedbackScreenOff(); - } - } - - private void startActivitySafely(Intent intent) { - intent.addFlags( - Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_SINGLE_TOP - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - try { - UserHandle user = new UserHandle(UserHandle.USER_CURRENT); - mContext.startActivityAsUser(intent, null, user); - } catch (ActivityNotFoundException e) { - // Ignore - } - } - - private void doHapticFeedbackScreenOff() { - if (mVibrator == null) { - return; - } - boolean enabled = Settings.System.getInt(mContext.getContentResolver(), KEY_GESTURE_ENABLE_HAPTIC_FEEDBACK, 1) != 0; - if (enabled) { - mVibrator.vibrate(50); - } - } - - private void doHapticFeedbackFP(boolean longpress) { - if (mVibrator == null) { - return; - } - - if (isHapticFeedbackEnabledOnFP()) { - mHandler.post(new Runnable() { - public void run() { - int owningUid; - String owningPackage; - owningUid = android.os.Process.myUid(); - owningPackage = mContext.getOpPackageName(); - VibrationEffect effect = VibrationEffect.createOneShot(longpress ? 50 : 40, VibrationEffect.DEFAULT_AMPLITUDE); - mVibrator.vibrate(owningUid, owningPackage, effect, null, VIBRATION_ATTRIBUTES); - } - }); - } - } - - private class FPScreenOffGesturesHandler extends Handler { - @Override - public void handleMessage(Message msg) { - processFPScancode(msg.arg1); - } - } - - 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; - } - } -} diff --git a/MotoActions/src/com/moto/actions/MotoActionsSearchIndexablesProvider.java b/MotoActions/src/com/moto/actions/MotoActionsSearchIndexablesProvider.java deleted file mode 100644 index 2c48ba6..0000000 --- a/MotoActions/src/com/moto/actions/MotoActionsSearchIndexablesProvider.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.database.Cursor; -import android.database.MatrixCursor; -import android.provider.SearchIndexableResource; -import android.provider.SearchIndexablesProvider; - -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_ICON_RESID; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_ACTION; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RANK; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RESID; -import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS; -import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS; -import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS; - -public class MotoActionsSearchIndexablesProvider extends SearchIndexablesProvider { - private static final String TAG = "MotoActionsSearchIndexablesProvider"; - - @Override - public boolean onCreate() { - return true; - } - - @Override - public Cursor queryXmlResources(String[] projection) { - MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS); - - cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.actions_panel, - GestureSettingsActivity.class.getName(), - R.drawable.ic_settings_gestures))); - - cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.fp_gesture_panel, - FPGestureSettingsActivity.class.getName(), - R.drawable.ic_settings_fingerprint))); - cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.fp_gesture_panel_indexable, - FPGestureSettingsActivity.class.getName(), - R.drawable.ic_settings_fingerprint))); - - cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.doze_panel, - DozeSettingsActivity.class.getName(), - R.drawable.ic_settings_doze))); - cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.doze_panel_indexable, - DozeSettingsActivity.class.getName(), - R.drawable.ic_settings_doze))); - - return cursor; - } - - private static Object[] generateResourceRef(SearchIndexableResource sir) { - Object[] ref = new Object[7]; - ref[COLUMN_INDEX_XML_RES_RANK] = sir.rank; - ref[COLUMN_INDEX_XML_RES_RESID] = sir.xmlResId; - ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = null; - ref[COLUMN_INDEX_XML_RES_ICON_RESID] = sir.iconResId; - ref[COLUMN_INDEX_XML_RES_INTENT_ACTION] = "com.android.settings.action.EXTRA_SETTINGS"; - ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE] = "com.moto.actions"; - ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS] = sir.className; - return ref; - } - - @Override - public Cursor queryRawData(String[] projection) { - MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS); - return cursor; - } - - @Override - public Cursor queryNonIndexableKeys(String[] projection) { - MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); - return cursor; - } -} diff --git a/MotoActions/src/com/moto/actions/MotoActionsService.java b/MotoActions/src/com/moto/actions/MotoActionsService.java deleted file mode 100644 index 235c0a9..0000000 --- a/MotoActions/src/com/moto/actions/MotoActionsService.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.app.IntentService; -import android.content.Context; -import android.content.Intent; -import android.os.PowerManager; -import android.util.Log; - -import java.util.List; -import java.util.LinkedList; - -import com.moto.actions.actions.UpdatedStateNotifier; -import com.moto.actions.actions.CameraActivationSensor; -import com.moto.actions.actions.ChopChopSensor; -import com.moto.actions.actions.FlipToMute; -import com.moto.actions.actions.LiftToSilence; -import com.moto.actions.actions.ProximitySilencer; - -import com.moto.actions.doze.DozePulseAction; -import com.moto.actions.doze.GlanceSensor; -import com.moto.actions.doze.ProximitySensor; -import com.moto.actions.doze.ScreenReceiver; -import com.moto.actions.doze.ScreenStateNotifier; - -public class MotoActionsService extends IntentService implements ScreenStateNotifier, - UpdatedStateNotifier { - private static final String TAG = "MotoActions"; - - private final PowerManager mPowerManager; - private final PowerManager.WakeLock mWakeLock; - - private final List mScreenStateNotifiers = new LinkedList<>(); - private final List mUpdatedStateNotifiers = new LinkedList<>(); - - public MotoActionsService(Context context) { - super("MotoActionService"); - - Log.d(TAG, "Starting"); - - MotoActionsSettings motoActionsSettings = new MotoActionsSettings(context, this); - SensorHelper sensorHelper = new SensorHelper(context); - new ScreenReceiver(context, this); - - DozePulseAction mDozePulseAction = new DozePulseAction(context); - mScreenStateNotifiers.add(mDozePulseAction); - - // Actionable sensors get screen on/off notifications - mScreenStateNotifiers.add(new GlanceSensor(motoActionsSettings, sensorHelper, mDozePulseAction)); - mScreenStateNotifiers.add(new ProximitySensor(motoActionsSettings, sensorHelper, mDozePulseAction)); - - // Other actions that are always enabled - mUpdatedStateNotifiers.add(new CameraActivationSensor(motoActionsSettings, sensorHelper)); - mUpdatedStateNotifiers.add(new ChopChopSensor(motoActionsSettings, sensorHelper)); - mUpdatedStateNotifiers.add(new ProximitySilencer(motoActionsSettings, context, sensorHelper)); - mUpdatedStateNotifiers.add(new FlipToMute(motoActionsSettings, context, sensorHelper)); - mUpdatedStateNotifiers.add(new LiftToSilence(motoActionsSettings, context, sensorHelper)); - - mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - String tag = context.getPackageName() + ":ServiceWakeLock"; - mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, tag); - updateState(); - } - - @Override - protected void onHandleIntent(Intent intent) { - } - - @Override - public void screenTurnedOn() { - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - } - for (ScreenStateNotifier screenStateNotifier : mScreenStateNotifiers) { - screenStateNotifier.screenTurnedOn(); - } - } - - @Override - public void screenTurnedOff() { - if (mWakeLock.isHeld()) { - mWakeLock.release(); - } - for (ScreenStateNotifier screenStateNotifier : mScreenStateNotifiers) { - screenStateNotifier.screenTurnedOff(); - } - } - - public void updateState() { - if (mPowerManager.isInteractive()) { - screenTurnedOn(); - } else { - screenTurnedOff(); - } - for (UpdatedStateNotifier notifier : mUpdatedStateNotifiers) { - notifier.updateState(); - } - } -} diff --git a/MotoActions/src/com/moto/actions/MotoActionsSettings.java b/MotoActions/src/com/moto/actions/MotoActionsSettings.java deleted file mode 100644 index af40fba..0000000 --- a/MotoActions/src/com/moto/actions/MotoActionsSettings.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.content.ContentResolver; -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.provider.Settings; - -import android.util.Log; - -import com.moto.actions.actions.Constants; -import com.moto.actions.actions.UpdatedStateNotifier; -import com.moto.actions.actions.CameraActivationAction; -import com.moto.actions.actions.TorchAction; - -public class MotoActionsSettings implements SharedPreferences.OnSharedPreferenceChangeListener { - private static final String TAG = "MotoActions"; - - private static final String GESTURE_CAMERA_ACTION_KEY = "gesture_camera_action"; - private static final String GESTURE_CHOP_CHOP_KEY = "gesture_chop_chop"; - private static final String GESTURE_PICK_UP_KEY = "gesture_pick_up"; - private static final String GESTURE_IR_WAKEUP_KEY = "gesture_hand_wave"; - private static final String GESTURE_IR_SILENCER_KEY = "gesture_ir_silencer"; - private static final String GESTURE_FLIP_TO_MUTE_KEY = "gesture_flip_to_mute"; - private static final String GESTURE_LIFT_TO_SILENCE_KEY = "gesture_lift_to_silence"; - - private final Context mContext; - private final UpdatedStateNotifier mUpdatedStateNotifier; - - private boolean mCameraGestureEnabled; - private boolean mChopChopEnabled; - private boolean mPickUpGestureEnabled; - private boolean mIrWakeUpEnabled; - private boolean mIrSilencerEnabled; - private boolean mFlipToMuteEnabled; - private boolean mLiftToSilenceEnabled; - - public MotoActionsSettings(Context context, UpdatedStateNotifier updatedStateNotifier) { - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - loadPreferences(sharedPrefs); - sharedPrefs.registerOnSharedPreferenceChangeListener(this); - mContext = context; - mUpdatedStateNotifier = updatedStateNotifier; - } - - public boolean isCameraGestureEnabled() { - return mCameraGestureEnabled; - } - - public boolean isChopChopGestureEnabled() { - return mChopChopEnabled; - } - - public static boolean isDozeEnabled(ContentResolver contentResolver) { - return (Settings.Secure.getInt(contentResolver, Settings.Secure.DOZE_ENABLED, 1) != 0); - } - - public boolean isDozeEnabled() { - return isDozeEnabled(mContext.getContentResolver()); - } - - public boolean isIrWakeupEnabled() { - return isDozeEnabled() && mIrWakeUpEnabled; - } - - public boolean isPickUpEnabled() { - return isDozeEnabled() && mPickUpGestureEnabled; - } - - public boolean isIrSilencerEnabled() { - return mIrSilencerEnabled; - } - - public boolean isFlipToMuteEnabled() { - return mFlipToMuteEnabled; - } - - public boolean isLiftToSilenceEnabled() { - return mLiftToSilenceEnabled; - } - - public void cameraAction() { - new CameraActivationAction(mContext).action(); - } - - public void chopChopAction() { - new TorchAction(mContext).action(); - } - - private void loadPreferences(SharedPreferences sharedPreferences) { - mCameraGestureEnabled = sharedPreferences.getBoolean(GESTURE_CAMERA_ACTION_KEY, true); - mChopChopEnabled = sharedPreferences.getBoolean(GESTURE_CHOP_CHOP_KEY, true); - mIrWakeUpEnabled = sharedPreferences.getBoolean(GESTURE_IR_WAKEUP_KEY, false); - mPickUpGestureEnabled = sharedPreferences.getBoolean(GESTURE_PICK_UP_KEY, true); - mIrSilencerEnabled = sharedPreferences.getBoolean(GESTURE_IR_SILENCER_KEY, false); - mFlipToMuteEnabled = sharedPreferences.getBoolean(GESTURE_FLIP_TO_MUTE_KEY, false); - mLiftToSilenceEnabled = sharedPreferences.getBoolean(GESTURE_LIFT_TO_SILENCE_KEY, false); - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - boolean updated = true; - - if (GESTURE_CAMERA_ACTION_KEY.equals(key)) { - mCameraGestureEnabled = sharedPreferences.getBoolean(GESTURE_CAMERA_ACTION_KEY, true); - } else if (GESTURE_CHOP_CHOP_KEY.equals(key)) { - mChopChopEnabled = sharedPreferences.getBoolean(GESTURE_CHOP_CHOP_KEY, true); - } else if (GESTURE_IR_WAKEUP_KEY.equals(key)) { - mIrWakeUpEnabled = sharedPreferences.getBoolean(GESTURE_IR_WAKEUP_KEY, false); - } else if (GESTURE_PICK_UP_KEY.equals(key)) { - mPickUpGestureEnabled = sharedPreferences.getBoolean(GESTURE_PICK_UP_KEY, true); - } else if (GESTURE_IR_SILENCER_KEY.equals(key)) { - mIrSilencerEnabled = sharedPreferences.getBoolean(GESTURE_IR_SILENCER_KEY, false); - } else if (GESTURE_FLIP_TO_MUTE_KEY.equals(key)) { - mFlipToMuteEnabled = sharedPreferences.getBoolean(GESTURE_FLIP_TO_MUTE_KEY, false); - } else if (GESTURE_LIFT_TO_SILENCE_KEY.equals(key)) { - mLiftToSilenceEnabled = sharedPreferences.getBoolean(GESTURE_LIFT_TO_SILENCE_KEY, false); - } else if (Constants.FP_HOME_KEY.equals(key) || Constants.FP_HAPTIC_KEY.equals(key) || Constants.FP_HOME_KEY_OFF.equals(key) || Constants.FP_HAPTIC_SCREENOFF_KEY.equals(key) || Constants.FP_KEYS.equals(key) || Constants.FP_KEY_DBLTAP.equals(key) || Constants.FP_KEY_HOLD.equals(key) || Constants.FP_KEY_LEFT.equals(key) || Constants.FP_KEY_RIGHT.equals(key) - || Constants.FP_KEYS_OFF.equals(key) || Constants.FP_KEY_DBLTAP_OFF.equals(key) || Constants.FP_KEY_HOLD_OFF.equals(key) || Constants.FP_KEY_LEFT_OFF.equals(key) || Constants.FP_KEY_RIGHT_OFF.equals(key)) { - Constants.writePreference(mContext, key); - updated = false; - } else { - updated = false; - } - - if (updated) { - mUpdatedStateNotifier.updateState(); - } - } -} diff --git a/MotoActions/src/com/moto/actions/SensorAction.java b/MotoActions/src/com/moto/actions/SensorAction.java deleted file mode 100644 index 11a5df2..0000000 --- a/MotoActions/src/com/moto/actions/SensorAction.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -public interface SensorAction { - void action(); -} diff --git a/MotoActions/src/com/moto/actions/SensorHelper.java b/MotoActions/src/com/moto/actions/SensorHelper.java deleted file mode 100644 index 6312ffe..0000000 --- a/MotoActions/src/com/moto/actions/SensorHelper.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import java.util.List; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; - -public class SensorHelper { - private static final String TAG = "MotoActions"; - - private static final int SENSOR_TYPE_MMI_CAMERA_ACTIVATION = 65540; - private static final int SENSOR_TYPE_MMI_CHOP_CHOP = 65546; - private static final int SENSOR_TYPE_MMI_FLAT_UP = 65537; - private static final int SENSOR_TYPE_MMI_FLAT_DOWN = 65538; - private static final int SENSOR_TYPE_MMI_STOW = 65539; - private static final int SENSOR_TYPE_MMI_GLANCE = 65548; - - private static final int BATCH_LATENCY_IN_MS = 100; - - private final Context mContext; - private final SensorManager mSensorManager; - - public SensorHelper(Context context) { - mContext = context; - mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); - dumpSensorsList(); - } - - private void dumpSensorsList() { - try { - FileOutputStream out = mContext.openFileOutput("sensors.txt", Context.MODE_PRIVATE); - OutputStreamWriter writer = new OutputStreamWriter(out); - - List sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); - for (Sensor sensor : sensorList) { - writer.write("sensor " + sensor.getType() + " = " + sensor.getName() - + " max batch: " + sensor.getFifoMaxEventCount() + " isWakeUp: " + sensor.isWakeUpSensor() + "\n"); - } - writer.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public Sensor getCameraActivationSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_CAMERA_ACTIVATION, true); - } - - public Sensor getChopChopSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_CHOP_CHOP, true); - } - - public Sensor getFlatUpSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_FLAT_UP, true); - } - - public Sensor getFlatDownSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_FLAT_DOWN, true); - } - - public Sensor getGlanceSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_GLANCE, true); - } - - public Sensor getProximitySensor() { - return mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true); - } - - public Sensor getStowSensor() { - return mSensorManager.getDefaultSensor(SENSOR_TYPE_MMI_STOW, true); - } - - public void registerListener(Sensor sensor, SensorEventListener listener) { - if (!mSensorManager.registerListener(listener, sensor, - SensorManager.SENSOR_DELAY_NORMAL, BATCH_LATENCY_IN_MS * 1000)) { - throw new RuntimeException("Failed to registerListener for sensor " + sensor); - } - } - - public void unregisterListener(SensorEventListener listener) { - mSensorManager.unregisterListener(listener); - } -} diff --git a/MotoActions/src/com/moto/actions/ServiceWrapper.java b/MotoActions/src/com/moto/actions/ServiceWrapper.java deleted file mode 100644 index 1724f58..0000000 --- a/MotoActions/src/com/moto/actions/ServiceWrapper.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions; - -import android.content.Intent; -import android.os.Binder; -import android.os.Bundle; -import android.os.IBinder; -import android.util.Log; - -public class ServiceWrapper extends android.app.Service { - static final String TAG = "MotoActions-ServiceWrapper"; - - private final IBinder mBinder = new LocalBinder(); - private MotoActionsService mMotoActionsService; - - public interface ServiceCallback { - void sendResults(int resultCode, Bundle b); - } - - public class LocalBinder extends Binder { - ServiceWrapper getService() { - // Return this instance of the service so clients can call public - // methods - return ServiceWrapper.this; - } - } - - @Override - public void onCreate() { - Log.i(TAG, "onCreate"); - super.onCreate(); - mMotoActionsService = new MotoActionsService(this); - } - - @Override - public IBinder onBind(Intent intent) { - Log.i(TAG, "onBind"); - return null; - } - - public void setCallback(ServiceCallback callback) { - } - - public void start() { - Log.i(TAG, "start"); - } - - public void stop() { - } -} diff --git a/MotoActions/src/com/moto/actions/actions/CameraActivationAction.java b/MotoActions/src/com/moto/actions/actions/CameraActivationAction.java deleted file mode 100644 index f77e27c..0000000 --- a/MotoActions/src/com/moto/actions/actions/CameraActivationAction.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.app.KeyguardManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.os.VibrationEffect; -import android.os.Vibrator; -import android.provider.MediaStore; - -import com.moto.actions.SensorAction; - -import java.util.List; - -public class CameraActivationAction implements SensorAction { - private static final String TAG = "MotoActions"; - - private static final int TURN_SCREEN_ON_WAKE_LOCK_MS = 500; - - private final Context mContext; - private final KeyguardManager mKeyguardManager; - private final PackageManager mPackageManager; - private final PowerManager mPowerManager; - - public CameraActivationAction(Context context) { - mContext = context; - mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); - mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - mPackageManager = context.getPackageManager(); - } - - @Override - public void action() { - vibrate(); - turnScreenOn(); - if (mKeyguardManager.isKeyguardLocked()) { - launchSecureCamera(); - } else { - launchCamera(); - } - } - - private void vibrate() { - Vibrator vib = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); - if (vib == null) return; - VibrationEffect effect = VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE); - vib.vibrate(effect); - } - - private void turnScreenOn() { - String tag = mContext.getPackageName() + ":CameraWakeLock"; - WakeLock wl = mPowerManager.newWakeLock( - PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, tag); - wl.acquire(TURN_SCREEN_ON_WAKE_LOCK_MS); - } - - private void launchCamera() { - Intent intent = createIntent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); - if (getBestActivityInfo(intent) != null) { - // Only launch if we can succeed, but let the user pick the action - mContext.startActivity(intent); - } - } - - private void launchSecureCamera() { - // Keyguard won't allow a picker, try to pick the secure intent in the package - // that would be the one used for a default action of launching the camera - Intent normalIntent = createIntent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); - Intent secureIntent = createIntent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE); - ActivityInfo normalActivity = getBestActivityInfo(normalIntent); - ActivityInfo secureActivity = getBestActivityInfo(secureIntent, normalActivity); - if (secureActivity != null) { - secureIntent.setComponent(componentName(secureActivity)); - mContext.startActivity(secureIntent); - } - } - - private Intent createIntent(String intentName) { - Intent intent = new Intent(intentName); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(Intent.FLAG_FROM_BACKGROUND); - return intent; - } - - private ActivityInfo getBestActivityInfo(Intent intent) { - ResolveInfo resolveInfo = mPackageManager.resolveActivity(intent, 0); - if (resolveInfo != null) { - return resolveInfo.activityInfo; - } else { - // If the resolving failed, just find our own best match - return getBestActivityInfo(intent, null); - } - } - - private ActivityInfo getBestActivityInfo(Intent intent, ActivityInfo match) { - List activities = mPackageManager.queryIntentActivities(intent, 0); - ActivityInfo best = null; - if (activities.size() > 0) { - best = activities.get(0).activityInfo; - if (match != null) { - String packageName = match.applicationInfo.packageName; - for (int i = activities.size()-1; i >= 0; i--) { - ActivityInfo activityInfo = activities.get(i).activityInfo; - if (packageName.equals(activityInfo.applicationInfo.packageName)) { - best = activityInfo; - } - } - } - } - return best; - } - - private ComponentName componentName(ActivityInfo activity) { - return new ComponentName(activity.applicationInfo.packageName, activity.name); - } -} diff --git a/MotoActions/src/com/moto/actions/actions/CameraActivationSensor.java b/MotoActions/src/com/moto/actions/actions/CameraActivationSensor.java deleted file mode 100644 index 1c219ae..0000000 --- a/MotoActions/src/com/moto/actions/actions/CameraActivationSensor.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorHelper; - -public class CameraActivationSensor implements SensorEventListener, UpdatedStateNotifier { - private static final String TAG = "MotoActions-CameraSensor"; - - private final MotoActionsSettings mMotoActionsSettings; - - private boolean mIsEnabled; - - public CameraActivationSensor(MotoActionsSettings motoActionsSettings, SensorHelper sensorHelper) { - mMotoActionsSettings = motoActionsSettings; - Sensor sensor = sensorHelper.getCameraActivationSensor(); - sensorHelper.registerListener(sensor, this); - } - - @Override - public synchronized void updateState() { - if (mMotoActionsSettings.isCameraGestureEnabled() && !mIsEnabled) { - Log.d(TAG, "Enabling"); - mIsEnabled = true; - } else if (! mMotoActionsSettings.isCameraGestureEnabled() && mIsEnabled) { - Log.d(TAG, "Disabling"); - mIsEnabled = false; - } - } - - @Override - public void onSensorChanged(SensorEvent event) { - Log.d(TAG, "activate camera"); - if (mIsEnabled) mMotoActionsSettings.cameraAction(); - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } -} diff --git a/MotoActions/src/com/moto/actions/actions/ChopChopSensor.java b/MotoActions/src/com/moto/actions/actions/ChopChopSensor.java deleted file mode 100644 index fc9f12e..0000000 --- a/MotoActions/src/com/moto/actions/actions/ChopChopSensor.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2015-2016 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorHelper; - -public class ChopChopSensor implements SensorEventListener, UpdatedStateNotifier { - private static final String TAG = "MotoActions-ChopChopSensor"; - - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final Sensor mSensor; - private final Sensor mProx; - - private boolean mIsEnabled; - private boolean mProxIsCovered; - - public ChopChopSensor(MotoActionsSettings motoActionsSettings, SensorHelper sensorHelper) { - mMotoActionsSettings = motoActionsSettings; - mSensorHelper = sensorHelper; - mSensor = sensorHelper.getChopChopSensor(); - mProx = sensorHelper.getProximitySensor(); - } - - @Override - public synchronized void updateState() { - if (mMotoActionsSettings.isChopChopGestureEnabled() && !mIsEnabled) { - Log.d(TAG, "Enabling"); - mSensorHelper.registerListener(mSensor, this); - mSensorHelper.registerListener(mProx, mProxListener); - mIsEnabled = true; - } else if (! mMotoActionsSettings.isChopChopGestureEnabled() && mIsEnabled) { - Log.d(TAG, "Disabling"); - mSensorHelper.unregisterListener(this); - mSensorHelper.unregisterListener(mProxListener); - mIsEnabled = false; - } - } - - @Override - public void onSensorChanged(SensorEvent event) { - Log.d(TAG, "chop chop triggered"); - if (mProxIsCovered) { - Log.d(TAG, "proximity sensor covered, ignoring chop-chop"); - return; - } - mMotoActionsSettings.chopChopAction(); - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } - - private SensorEventListener mProxListener = new SensorEventListener() { - @Override - public synchronized void onSensorChanged(SensorEvent event) { - mProxIsCovered = event.values[0] < mProx.getMaximumRange(); - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - }; - -} diff --git a/MotoActions/src/com/moto/actions/actions/Constants.java b/MotoActions/src/com/moto/actions/actions/Constants.java deleted file mode 100644 index 307f75d..0000000 --- a/MotoActions/src/com/moto/actions/actions/Constants.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * Copyright (C) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import java.util.HashMap; -import java.util.Map; - -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.moto.actions.util.FileUtils; - -public class Constants { - - public static final boolean DEBUG = false; - - private static final String TAG = "MotoActions"; - - // FP gestures - public static final int FP_TAP_SCANCODE = 616; - public static final int FP_HOLD_SCANCODE = 617; - public static final int FP_RIGHT_SCANCODE = 620; - public static final int FP_LEFT_SCANCODE = 621; - public static final int[] sSupportedFPGestures = new int[]{ - FP_TAP_SCANCODE, - FP_HOLD_SCANCODE, - FP_RIGHT_SCANCODE, - FP_LEFT_SCANCODE - }; - - // FP actions - public static final int ACTION_HOME = 100; - public static final int ACTION_POWER = 101; - public static final int ACTION_BACK = 102; - public static final int ACTION_RECENTS = 103; - public static final int ACTION_VOLUME_UP = 104; - public static final int ACTION_VOLUME_DOWN = 105; - public static final int ACTION_VOICE_ASSISTANT = 106; - public static final int ACTION_PLAY_PAUSE = 107; - public static final int ACTION_PREVIOUS_TRACK = 108; - public static final int ACTION_NEXT_TRACK = 109; - public static final int ACTION_FLASHLIGHT = 110; - public static final int ACTION_CAMERA = 111; - public static final int ACTION_SCREENSHOT = 112; - public static final int ACTION_BROWSER = 116; - public static final int ACTION_DIALER = 117; - public static final int ACTION_EMAIL = 118; - public static final int ACTION_MESSAGES = 119; - public static final int ACTION_LAST_APP = 121; - public static final int[] sFPSupportedActions = new int[]{ - ACTION_HOME, - ACTION_POWER, - ACTION_BACK, - ACTION_RECENTS, - ACTION_VOLUME_UP, - ACTION_VOLUME_DOWN, - ACTION_VOICE_ASSISTANT, - ACTION_PLAY_PAUSE, - ACTION_PREVIOUS_TRACK, - ACTION_NEXT_TRACK, - ACTION_FLASHLIGHT, - ACTION_CAMERA, - ACTION_SCREENSHOT, - ACTION_LAST_APP - }; - public static final int[] sFPSupportedActionsScreenOff = new int[]{ - ACTION_POWER, - ACTION_VOLUME_UP, - ACTION_VOLUME_DOWN, - ACTION_PLAY_PAUSE, - ACTION_PREVIOUS_TRACK, - ACTION_NEXT_TRACK, - ACTION_FLASHLIGHT, - ACTION_CAMERA - }; - - // Swap keys - public static final String FP_HOME_KEY = "fp_home"; - public static final String FP_HOME_KEY_OFF = "fp_home_scr_off"; - - // Swap nodes - public static final String FP_HOME_NODE = "/sys/homebutton/enable"; - public static final String FP_HOME_OFF_NODE = "/sys/homebutton/enable_off"; - - // Haptic node - public static final String FP_HAPTIC_NODE = "/sys/homebutton/haptic"; - public static final String FP_HAPTIC_KEY = "fp_haptic"; - public static final String FP_HAPTIC_SCREENOFF_NODE = "/sys/homebutton/haptic_off"; - public static final String FP_HAPTIC_SCREENOFF_KEY = "fp_haptic_scr_off"; - - // List of keys - public static final String FP_KEYS = "fp_keys"; - public static final String FP_KEY_DBLTAP = "fp_key_dbltap"; - public static final String FP_KEY_HOLD = "fp_key_hold"; - public static final String FP_KEY_LEFT = "fp_key_left"; - public static final String FP_KEY_RIGHT = "fp_key_right"; - - public static final String FP_KEYS_OFF = "fp_keys_off"; - public static final String FP_KEY_DBLTAP_OFF = "fp_key_dbltap_off"; - public static final String FP_KEY_HOLD_OFF = "fp_key_hold_off"; - public static final String FP_KEY_LEFT_OFF = "fp_key_left_off"; - public static final String FP_KEY_RIGHT_OFF = "fp_key_right_off"; - - // Keys nodes - public static final String FP_KEYS_NODE = "/sys/homebutton/key"; - public static final String FP_KEY_DBLTAP_NODE = "/sys/homebutton/key_dbltap"; - public static final String FP_KEY_HOLD_NODE = "/sys/homebutton/key_hold"; - public static final String FP_KEY_LEFT_NODE = "/sys/homebutton/key_left"; - public static final String FP_KEY_RIGHT_NODE = "/sys/homebutton/key_right"; - - public static final String FP_KEYS_SCREENOFF_NODE = "/sys/homebutton/key_screenoff"; - public static final String FP_KEY_SCREENOFF_DBLTAP_NODE = "/sys/homebutton/key_screenoff_dbltap"; - public static final String FP_KEY_SCREENOFF_HOLD_NODE = "/sys/homebutton/key_screenoff_hold"; - public static final String FP_KEY_SCREENOFF_LEFT_NODE = "/sys/homebutton/key_screenoff_left"; - public static final String FP_KEY_SCREENOFF_RIGHT_NODE = "/sys/homebutton/key_screenoff_right"; - - // Screen off gestures haptic - public static final String KEY_GESTURE_ENABLE_HAPTIC_FEEDBACK = "screen_off_gesture_haptic_feedback"; - - // Holds -> mapping - public static final Map sBooleanNodePreferenceMap = new HashMap<>(); - - // Holds -> mapping - public static final Map sNodeDefaultMap = new HashMap<>(); - - public static final String[] sPrefKeys = { - FP_HOME_KEY, - FP_HOME_KEY_OFF, - FP_HAPTIC_KEY, - FP_HAPTIC_SCREENOFF_KEY, - FP_KEYS, - FP_KEY_DBLTAP, - FP_KEY_HOLD, - FP_KEY_RIGHT, - FP_KEY_LEFT, - FP_KEYS_OFF, - FP_KEY_DBLTAP_OFF, - FP_KEY_HOLD_OFF, - FP_KEY_RIGHT_OFF, - FP_KEY_LEFT_OFF, - FP_HOME_KEY_OFF, - }; - - static { - sBooleanNodePreferenceMap.put(FP_HOME_KEY, FP_HOME_NODE); - sBooleanNodePreferenceMap.put(FP_HOME_KEY_OFF, FP_HOME_OFF_NODE); - sBooleanNodePreferenceMap.put(FP_HAPTIC_KEY, FP_HAPTIC_NODE); - sBooleanNodePreferenceMap.put(FP_HAPTIC_SCREENOFF_KEY, FP_HAPTIC_SCREENOFF_NODE); - sBooleanNodePreferenceMap.put(FP_KEYS, FP_KEYS_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_DBLTAP, FP_KEY_DBLTAP_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_HOLD, FP_KEY_HOLD_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_LEFT, FP_KEY_LEFT_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_RIGHT, FP_KEY_RIGHT_NODE); - sBooleanNodePreferenceMap.put(FP_KEYS_OFF, FP_KEYS_SCREENOFF_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_DBLTAP_OFF, FP_KEY_SCREENOFF_DBLTAP_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_HOLD_OFF, FP_KEY_SCREENOFF_HOLD_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_LEFT_OFF, FP_KEY_SCREENOFF_LEFT_NODE); - sBooleanNodePreferenceMap.put(FP_KEY_RIGHT_OFF, FP_KEY_SCREENOFF_RIGHT_NODE); - sNodeDefaultMap.put(FP_HOME_KEY, false); - sNodeDefaultMap.put(FP_HOME_KEY_OFF, false); - sNodeDefaultMap.put(FP_HAPTIC_KEY, false); - sNodeDefaultMap.put(FP_HAPTIC_SCREENOFF_KEY, false); - sNodeDefaultMap.put(FP_KEYS, "0"); - sNodeDefaultMap.put(FP_KEY_DBLTAP, "0"); - sNodeDefaultMap.put(FP_KEY_HOLD, "0"); - sNodeDefaultMap.put(FP_KEY_LEFT, "0"); - sNodeDefaultMap.put(FP_KEY_RIGHT, "0"); - sNodeDefaultMap.put(FP_KEYS_OFF, "0"); - sNodeDefaultMap.put(FP_KEY_DBLTAP_OFF, "0"); - sNodeDefaultMap.put(FP_KEY_HOLD_OFF, "0"); - sNodeDefaultMap.put(FP_KEY_LEFT_OFF, "0"); - sNodeDefaultMap.put(FP_KEY_RIGHT_OFF, "0"); - } - - public static boolean isPreferenceEnabled(Context context, String key) { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); - return preferences.getBoolean(key, (Boolean) sNodeDefaultMap.get(key)); - } - - public static String GetPreference(Context context, String key) { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); - return preferences.getString(key, (String) sNodeDefaultMap.get(key)); - } - - public static void writePreference(Context context, String pref) { - - String value = "1"; - - if (!pref.equals(FP_KEYS) && !pref.equals(FP_KEY_DBLTAP) && !pref.equals(FP_KEY_HOLD) && !pref.equals(FP_KEY_LEFT) && !pref.equals(FP_KEY_RIGHT) && - !pref.equals(FP_KEYS_OFF) && !pref.equals(FP_KEY_DBLTAP_OFF) && !pref.equals(FP_KEY_HOLD_OFF) && !pref.equals(FP_KEY_LEFT_OFF) && !pref.equals(FP_KEY_RIGHT_OFF)) - value = isPreferenceEnabled(context, pref) ? "1" : "0"; - else - value = GetPreference(context, pref); - - String node = sBooleanNodePreferenceMap.get(pref); - - if (!FileUtils.writeLine(node, value)) { - Log.w(TAG, "Write " + value + " to node " + node + - "failed while restoring saved preference values"); - } - } -} diff --git a/MotoActions/src/com/moto/actions/actions/FlipToMute.java b/MotoActions/src/com/moto/actions/actions/FlipToMute.java deleted file mode 100644 index a7c753f..0000000 --- a/MotoActions/src/com/moto/actions/actions/FlipToMute.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.app.NotificationManager; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.os.VibrationEffect; -import android.os.Vibrator; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorHelper; - -public class FlipToMute implements UpdatedStateNotifier { - private static final String TAG = "MotoActions-FlipToMute"; - - private final NotificationManager mNotificationManager; - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final Sensor mFlatDown; - private final Sensor mStow; - - private boolean canVibrate = false; - private boolean mIsEnabled; - private boolean mIsFlatDown; - private boolean mIsStowed; - private int mFilter; - private Context mContext; - private Receiver mReceiver; - - public FlipToMute(MotoActionsSettings motoActionsSettings, Context context, - SensorHelper sensorHelper) { - mMotoActionsSettings = motoActionsSettings; - mContext = context; - mSensorHelper = sensorHelper; - mFlatDown = sensorHelper.getFlatDownSensor(); - mStow = sensorHelper.getStowSensor(); - mNotificationManager = - (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - if (mNotificationManager != null) { - mFilter = mNotificationManager.getCurrentInterruptionFilter(); - } - mReceiver = new Receiver(); - } - - @Override - public void updateState() { - if (mMotoActionsSettings.isFlipToMuteEnabled() && !mIsEnabled) { - Log.d(TAG, "Enabling"); - mSensorHelper.registerListener(mFlatDown, mFlatDownListener); - mSensorHelper.registerListener(mStow, mStowListener); - mContext.registerReceiver(mReceiver, - new IntentFilter(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED)); - mIsEnabled = true; - } else if (!mMotoActionsSettings.isFlipToMuteEnabled() && mIsEnabled) { - Log.d(TAG, "Disabling"); - mSensorHelper.unregisterListener(mFlatDownListener); - mSensorHelper.unregisterListener(mStowListener); - mContext.unregisterReceiver(mReceiver); - mIsEnabled = false; - } - } - - private SensorEventListener mFlatDownListener = new SensorEventListener() { - @Override - public synchronized void onSensorChanged(SensorEvent event) { - mIsFlatDown = (event.values[0] != 0); - sensorChange(); - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - }; - - private SensorEventListener mStowListener = new SensorEventListener() { - @Override - public synchronized void onSensorChanged(SensorEvent event) { - mIsStowed = (event.values[0] != 0); - sensorChange(); - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - }; - - private void sensorChange() { - - Log.d(TAG, "event: " + mIsFlatDown + " mIsStowed=" + mIsStowed); - - if (mIsFlatDown && mIsStowed) { - vibrate(); - canVibrate = true; - mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY); - Log.d(TAG, "Interrupt filter: Allow priority"); - } else if (!mIsFlatDown) { - if (canVibrate) { - vibrate(); - canVibrate = false; - } - mNotificationManager.setInterruptionFilter(mFilter); - Log.d(TAG, "Interrupt filter: Restore"); - } - } - - private void vibrate() { - Vibrator vib = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); - if (vib == null) return; - VibrationEffect effect = VibrationEffect.createOneShot(250, VibrationEffect.DEFAULT_AMPLITUDE); - vib.vibrate(effect); - } - - public class Receiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - if (!mIsFlatDown && !mIsStowed) { - if (mNotificationManager == null) return; - mFilter = mNotificationManager.getCurrentInterruptionFilter(); - Log.d(TAG, "Interrupt filter: Backup"); - } - } - } -} diff --git a/MotoActions/src/com/moto/actions/actions/LiftToSilence.java b/MotoActions/src/com/moto/actions/actions/LiftToSilence.java deleted file mode 100644 index 6b36dc2..0000000 --- a/MotoActions/src/com/moto/actions/actions/LiftToSilence.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.telephony.PhoneStateListener; -import android.telecom.TelecomManager; -import android.telephony.TelephonyManager; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorHelper; - -public class LiftToSilence extends PhoneStateListener implements SensorEventListener, UpdatedStateNotifier { - private static final String TAG = "MotoActions-LiftToSilence"; - - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final Sensor mFlatUpSensor; - private final Sensor mStowSensor; - - private final TelecomManager mTelecomManager; - private final TelephonyManager mTelephonyManager; - - private boolean mIsRinging; - private boolean mIsStowed; - private boolean mLastFlatUp; - - public LiftToSilence(MotoActionsSettings motoActionsSettings, Context context, - SensorHelper sensorHelper) { - mMotoActionsSettings = motoActionsSettings; - mSensorHelper = sensorHelper; - mFlatUpSensor = sensorHelper.getFlatUpSensor(); - mStowSensor = sensorHelper.getStowSensor(); - mTelecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - } - - @Override - public void updateState() { - if (mMotoActionsSettings.isLiftToSilenceEnabled()) { - mTelephonyManager.listen(this, LISTEN_CALL_STATE); - } else { - mTelephonyManager.listen(this, 0); - } - } - - @Override - public synchronized void onCallStateChanged(int state, String incomingNumber) { - if (state == TelephonyManager.CALL_STATE_RINGING && !mIsRinging) { - Log.d(TAG, "Ringing started"); - mSensorHelper.registerListener(mFlatUpSensor, this); - mSensorHelper.registerListener(mStowSensor, mStowListener); - mIsRinging = true; - } else if (state != TelephonyManager.CALL_STATE_RINGING && mIsRinging) { - Log.d(TAG, "Ringing stopped"); - mSensorHelper.unregisterListener(this); - mSensorHelper.unregisterListener(mStowListener); - mIsRinging = false; - } - } - - - @Override - public synchronized void onSensorChanged(SensorEvent event) { - boolean thisFlatUp = (event.values[0] != 0); - - Log.d(TAG, "event: " + thisFlatUp + " mLastFlatUp=" + mLastFlatUp + " mIsStowed=" + - mIsStowed); - - if (mLastFlatUp && !thisFlatUp && !mIsStowed) { - mTelecomManager.silenceRinger(); - } - mLastFlatUp = thisFlatUp; - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - - private SensorEventListener mStowListener = new SensorEventListener() { - @Override - public synchronized void onSensorChanged(SensorEvent event) { - mIsStowed = (event.values[0] != 0); - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - }; -} diff --git a/MotoActions/src/com/moto/actions/actions/ProximitySilencer.java b/MotoActions/src/com/moto/actions/actions/ProximitySilencer.java deleted file mode 100644 index 71c2cfa..0000000 --- a/MotoActions/src/com/moto/actions/actions/ProximitySilencer.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.telephony.PhoneStateListener; -import android.telecom.TelecomManager; -import android.telephony.TelephonyManager; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorHelper; - -import static android.telephony.TelephonyManager.*; - -public class ProximitySilencer extends PhoneStateListener implements SensorEventListener, UpdatedStateNotifier { - private static final String TAG = "MotoActions-ProximitySilencer"; - - private static final int SILENCE_DELAY_MS = 500; - - private final TelecomManager mTelecomManager; - private final TelephonyManager mTelephonyManager; - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final Sensor mSensor; - private boolean mIsRinging; - private long mRingStartedMs; - private boolean mCoveredRinging; - - public ProximitySilencer(MotoActionsSettings motoActionsSettings, Context context, - SensorHelper sensorHelper) { - mTelecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - - mMotoActionsSettings = motoActionsSettings; - mSensorHelper = sensorHelper; - mSensor = sensorHelper.getProximitySensor(); - mCoveredRinging = false; - mIsRinging = false; - } - - @Override - public void updateState() { - if (mMotoActionsSettings.isIrSilencerEnabled()) { - mTelephonyManager.listen(this, LISTEN_CALL_STATE); - } else { - mTelephonyManager.listen(this, 0); - } - } - - @Override - public synchronized void onSensorChanged(SensorEvent event) { - boolean isNear = event.values[0] < mSensor.getMaximumRange(); - long now = System.currentTimeMillis(); - - if (isNear){ - mCoveredRinging = mIsRinging && (now - mRingStartedMs >= SILENCE_DELAY_MS); - return; - } - - if (mIsRinging) { - Log.d(TAG, "event: " + event.values[0] + ", " + " covered " + Boolean.toString(mCoveredRinging)); - if (mCoveredRinging) { - Log.d(TAG, "Silencing ringer"); - mTelecomManager.silenceRinger(); - } else { - Log.d(TAG, "Ignoring silence gesture: " + now + " is too close to " + - mRingStartedMs + ", delay=" + SILENCE_DELAY_MS); - } - mCoveredRinging = false; - } - } - - @Override - public synchronized void onCallStateChanged(int state, String incomingNumber) { - if (state == CALL_STATE_RINGING && !mIsRinging) { - Log.d(TAG, "Ringing started"); - mSensorHelper.registerListener(mSensor, this); - mIsRinging = true; - mRingStartedMs = System.currentTimeMillis(); - } else if (state != CALL_STATE_RINGING && mIsRinging) { - Log.d(TAG, "Ringing stopped"); - mSensorHelper.unregisterListener(this); - mIsRinging = false; - } - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } -} diff --git a/MotoActions/src/com/moto/actions/actions/TorchAction.java b/MotoActions/src/com/moto/actions/actions/TorchAction.java deleted file mode 100644 index 7a44449..0000000 --- a/MotoActions/src/com/moto/actions/actions/TorchAction.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -import android.content.Context; -import android.hardware.camera2.CameraAccessException; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CameraManager; -import android.os.VibrationEffect; -import android.os.Vibrator; -import androidx.annotation.NonNull; - -import com.moto.actions.SensorAction; - -public class TorchAction implements SensorAction { - private static final String TAG = "MotoActions"; - - private CameraManager mCameraManager; - private final Vibrator mVibrator; - private String mRearCameraId; - private static boolean mTorchEnabled; - - public TorchAction(Context mContext) { - mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); - mCameraManager.registerTorchCallback(new MyTorchCallback(), null); - mVibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); - try { - for (final String cameraId : mCameraManager.getCameraIdList()) { - CameraCharacteristics characteristics = - mCameraManager.getCameraCharacteristics(cameraId); - int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING); - if (cOrientation == CameraCharacteristics.LENS_FACING_BACK) { - mRearCameraId = cameraId; - break; - } - } - } catch (CameraAccessException e) { - // Noop - } - } - - @Override - public void action() { - VibrationEffect vibrationEffect = VibrationEffect.createOneShot(250, VibrationEffect.DEFAULT_AMPLITUDE); - mVibrator.vibrate(vibrationEffect); - if (mRearCameraId != null) { - try { - mCameraManager.setTorchMode(mRearCameraId, !mTorchEnabled); - mTorchEnabled = !mTorchEnabled; - } catch (CameraAccessException e) { - // Noop - } - } - } - - private class MyTorchCallback extends CameraManager.TorchCallback { - - @Override - public void onTorchModeChanged(@NonNull String cameraId, boolean enabled) { - if (!cameraId.equals(mRearCameraId)) - return; - mTorchEnabled = enabled; - } - - @Override - public void onTorchModeUnavailable(@NonNull String cameraId) { - if (!cameraId.equals(mRearCameraId)) - return; - mTorchEnabled = false; - } - } -} diff --git a/MotoActions/src/com/moto/actions/actions/UpdatedStateNotifier.java b/MotoActions/src/com/moto/actions/actions/UpdatedStateNotifier.java deleted file mode 100644 index 3cc346e..0000000 --- a/MotoActions/src/com/moto/actions/actions/UpdatedStateNotifier.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.actions; - -public interface UpdatedStateNotifier { - void updateState(); -} diff --git a/MotoActions/src/com/moto/actions/doze/DozePulseAction.java b/MotoActions/src/com/moto/actions/doze/DozePulseAction.java deleted file mode 100644 index 8ac4ab0..0000000 --- a/MotoActions/src/com/moto/actions/doze/DozePulseAction.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.doze; - -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -import com.moto.actions.SensorAction; - -public class DozePulseAction implements SensorAction, ScreenStateNotifier { - private static final String TAG = "MotoActions"; - - private static final int DELAY_BETWEEN_DOZES_IN_MS = 1500; - - private final Context mContext; - - private long mLastDoze; - - public DozePulseAction(Context context) { - mContext = context; - } - - @Override - public void screenTurnedOn() { - } - - @Override - public void screenTurnedOff() { - mLastDoze = System.currentTimeMillis(); - } - - public void action() { - if (mayDoze()) { - Log.d(TAG, "Sending doze.pulse intent"); - mContext.sendBroadcast(new Intent("com.android.systemui.doze.pulse")); - } - } - - private synchronized boolean mayDoze() { - long now = System.currentTimeMillis(); - if (now - mLastDoze > DELAY_BETWEEN_DOZES_IN_MS) { - Log.d(TAG, "Allowing doze"); - mLastDoze = now; - return true; - } else { - Log.d(TAG, "Denying doze"); - return false; - } - } -} diff --git a/MotoActions/src/com/moto/actions/doze/GlanceSensor.java b/MotoActions/src/com/moto/actions/doze/GlanceSensor.java deleted file mode 100644 index 1b6e0db..0000000 --- a/MotoActions/src/com/moto/actions/doze/GlanceSensor.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.doze; - -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorAction; -import com.moto.actions.SensorHelper; - -public class GlanceSensor implements ScreenStateNotifier { - private static final String TAG = "MotoActions-GlanceSensor"; - - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final SensorAction mSensorAction; - private final Sensor mSensor; - - private boolean mEnabled; - - public GlanceSensor(MotoActionsSettings motoActionsSettings, SensorHelper sensorHelper, - SensorAction action) { - mMotoActionsSettings = motoActionsSettings; - mSensorHelper = sensorHelper; - mSensorAction = action; - - mSensor = sensorHelper.getGlanceSensor(); - } - - @Override - public void screenTurnedOn() { - if (mEnabled) { - Log.d(TAG, "Disabling"); - mSensorHelper.unregisterListener(mGlanceListener); - mEnabled = false; - } - } - - @Override - public void screenTurnedOff() { - if (mMotoActionsSettings.isPickUpEnabled() && !mEnabled) { - Log.d(TAG, "Enabling"); - mSensorHelper.registerListener(mSensor, mGlanceListener); - mEnabled = true; - } - } - - private SensorEventListener mGlanceListener = new SensorEventListener() { - @Override - public void onSensorChanged(SensorEvent event) { - Log.d(TAG, "triggered"); - mSensorAction.action(); - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } - }; -} diff --git a/MotoActions/src/com/moto/actions/doze/ProximitySensor.java b/MotoActions/src/com/moto/actions/doze/ProximitySensor.java deleted file mode 100644 index 6ee3cbc..0000000 --- a/MotoActions/src/com/moto/actions/doze/ProximitySensor.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.doze; - -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.util.Log; - -import com.moto.actions.MotoActionsSettings; -import com.moto.actions.SensorAction; -import com.moto.actions.SensorHelper; - -public class ProximitySensor implements ScreenStateNotifier, SensorEventListener { - private static final String TAG = "MotoActions-ProximitySensor"; - - private final MotoActionsSettings mMotoActionsSettings; - private final SensorHelper mSensorHelper; - private final SensorAction mSensorAction; - private final Sensor mSensor; - - private boolean mEnabled; - - private boolean mSawNear = false; - - public ProximitySensor(MotoActionsSettings motoActionsSettings, SensorHelper sensorHelper, - SensorAction action) { - mMotoActionsSettings = motoActionsSettings; - mSensorHelper = sensorHelper; - mSensorAction = action; - - mSensor = sensorHelper.getProximitySensor(); - } - - @Override - public void screenTurnedOn() { - if (mEnabled) { - Log.d(TAG, "Disabling"); - mSensorHelper.unregisterListener(this); - mEnabled = false; - } - } - - @Override - public void screenTurnedOff() { - if (mMotoActionsSettings.isIrWakeupEnabled() && !mEnabled) { - Log.d(TAG, "Enabling"); - mSensorHelper.registerListener(mSensor, this); - mEnabled = true; - } - } - - @Override - public void onSensorChanged(SensorEvent event) { - boolean isNear = event.values[0] < mSensor.getMaximumRange(); - if (mSawNear && !isNear) { - Log.d(TAG, "wave triggered"); - mSensorAction.action(); - } - mSawNear = isNear; - } - - @Override - public void onAccuracyChanged(Sensor mSensor, int accuracy) { - } -} diff --git a/MotoActions/src/com/moto/actions/doze/ScreenReceiver.java b/MotoActions/src/com/moto/actions/doze/ScreenReceiver.java deleted file mode 100644 index b9aa691..0000000 --- a/MotoActions/src/com/moto/actions/doze/ScreenReceiver.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.doze; - -import java.util.List; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; - -import com.moto.actions.actions.Constants; - -public class ScreenReceiver extends BroadcastReceiver { - private final ScreenStateNotifier mNotifier; - - public ScreenReceiver(Context context, ScreenStateNotifier notifier) { - mNotifier = notifier; - - IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); - filter.addAction(Intent.ACTION_SCREEN_OFF); - context.registerReceiver(this, filter); - } - - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction() == null) return; - - if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { - mNotifier.screenTurnedOff(); - } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { - mNotifier.screenTurnedOn(); - } - } -} diff --git a/MotoActions/src/com/moto/actions/doze/ScreenStateNotifier.java b/MotoActions/src/com/moto/actions/doze/ScreenStateNotifier.java deleted file mode 100644 index 438fff2..0000000 --- a/MotoActions/src/com/moto/actions/doze/ScreenStateNotifier.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * Copyright (c) 2017 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.doze; - -public interface ScreenStateNotifier { - void screenTurnedOn(); - void screenTurnedOff(); -} diff --git a/MotoActions/src/com/moto/actions/util/FileUtils.java b/MotoActions/src/com/moto/actions/util/FileUtils.java deleted file mode 100644 index dec3446..0000000 --- a/MotoActions/src/com/moto/actions/util/FileUtils.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.moto.actions.util; - -import android.util.Log; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; - -public final class FileUtils { - private static final String TAG = "FileUtils"; - - private FileUtils() { - // This class is not supposed to be instantiated - } - - /** - * Reads the first line of text from the given file. - * Reference {@link BufferedReader#readLine()} for clarification on what a line is - * - * @return the read line contents, or null on failure - */ - public static String readOneLine(String fileName) { - String line = "0"; - BufferedReader reader = null; - - try { - reader = new BufferedReader(new FileReader(fileName), 512); - line = reader.readLine(); - } catch (FileNotFoundException e) { - Log.w(TAG, "No such file " + fileName + " for reading", e); - } catch (IOException e) { - Log.e(TAG, "Could not read from file " + fileName, e); - } finally { - try { - if (reader != null) { - reader.close(); - } - } catch (IOException e) { - // Ignored, not much we can do anyway - } - } - - return line; - } - - /** - * Writes the given value into the given file - * - * @return true on success, false on failure - */ - public static boolean writeLine(String fileName, String value) { - BufferedWriter writer = null; - - try { - writer = new BufferedWriter(new FileWriter(fileName)); - writer.write(value); - } catch (FileNotFoundException e) { - Log.w(TAG, "No such file " + fileName + " for writing", e); - return false; - } catch (IOException e) { - Log.e(TAG, "Could not write to file " + fileName, e); - return false; - } finally { - try { - if (writer != null) { - writer.close(); - } - } catch (IOException e) { - // Ignored, not much we can do anyway - } - } - - return true; - } - - /** - * Checks whether the given file exists - * - * @return true if exists, false if not - */ - public static boolean fileExists(String fileName) { - final File file = new File(fileName); - return file.exists(); - } - - /** - * Checks whether the given file is readable - * - * @return true if readable, false if not - */ - public static boolean isFileReadable(String fileName) { - final File file = new File(fileName); - return file.exists() && file.canRead(); - } - - /** - * Checks whether the given file is writable - * - * @return true if writable, false if not - */ - public static boolean isFileWritable(String fileName) { - final File file = new File(fileName); - return file.exists() && file.canWrite(); - } -} diff --git a/aosp.dependencies b/aosp.dependencies index a978d26..ff06cca 100644 --- a/aosp.dependencies +++ b/aosp.dependencies @@ -9,5 +9,11 @@ "repository": "kernel_motorola_msm8953", "target_path": "kernel/motorola/msm8953", "branch": "eleven" + }, + { + "repository" : "hardware_motorola", + "target_path" : "hardware/motorola", + "branch" : "eleven", + "remote" : "pixel" } ]