Instantly share code, notes, and snippets.
Last active
October 14, 2021 03:12
-
Star
(1)
1
You must be signed in to star a gist -
Fork
(0)
0
You must be signed in to fork a gist
-
Save glutanimate/42ce2a327f32c744dc45 to your computer and use it in GitHub Desktop.
Toggle flashlight on Android via power button press sequence
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<TaskerData sr="" dvi="1" tv="4.6u3m"> | |
<Profile sr="prof92" ve="2"> | |
<cdate>1426618335190</cdate> | |
<clp>true</clp> | |
<edate>1427251395506</edate> | |
<id>92</id> | |
<mid0>93</mid0> | |
<nme>FlashlightButton</nme> | |
<Event sr="con0" ve="2"> | |
<code>208</code> | |
<pri>0</pri> | |
</Event> | |
<State sr="con1" ve="2"> | |
<code>40</code> | |
<pin>true</pin> | |
<Int sr="arg0" val="2"/> | |
<Str sr="arg1" ve="3"/> | |
</State> | |
</Profile> | |
<Project sr="proj0" ve="2"> | |
<cdate>1427144859127</cdate> | |
<name>Flashlight Button</name> | |
<pids>92</pids> | |
<tids>100,101,94,93</tids> | |
<Kid sr="Kid"> | |
<launchID>93</launchID> | |
<pkg>com.glutanimate.flashlightbutton</pkg> | |
<vnme>1.0</vnme> | |
<vnum>2</vnum> | |
</Kid> | |
<Img sr="icon" ve="2"> | |
<nme>hl_aaa_ext_bulb</nme> | |
</Img> | |
</Project> | |
<Task sr="task100"> | |
<cdate>1351255597661</cdate> | |
<edate>1427498501108</edate> | |
<id>100</id> | |
<nme>FlashOn</nme> | |
<pri>10</pri> | |
<Action sr="act0" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3">pm</Str> | |
<Str sr="arg1" ve="3">CONTEXT</Str> | |
<Str sr="arg2" ve="3">getPackageManager | |
{PackageManager} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act1" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3">%hasflash</Str> | |
<Str sr="arg1" ve="3">pm</Str> | |
<Str sr="arg2" ve="3">hasSystemFeature | |
{boolean} (String)</Str> | |
<Str sr="arg3" ve="3">android.hardware.camera.flash</Str> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act10" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3"/> | |
<Str sr="arg1" ve="3">cam</Str> | |
<Str sr="arg2" ve="3">setParameters | |
{} (android.hardware.Camera$Parameters)</Str> | |
<Str sr="arg3" ve="3">params</Str> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act11" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3"/> | |
<Str sr="arg1" ve="3">cam</Str> | |
<Str sr="arg2" ve="3">startPreview | |
{} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act12" ve="7"> | |
<code>130</code> | |
<Str sr="arg0" ve="3">FlashAutoOff</Str> | |
<Int sr="arg1"> | |
<var>%priority-1</var> | |
</Int> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Int sr="arg5" val="0"/> | |
</Action> | |
<Action sr="act13" ve="7"> | |
<code>35</code> | |
<Int sr="arg0" val="0"/> | |
<Int sr="arg1" val="1"/> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
<Int sr="arg4" val="0"/> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%FlashCtl</lhs> | |
<op>0</op> | |
<rhs>0</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act14" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3"/> | |
<Str sr="arg1" ve="3">cam</Str> | |
<Str sr="arg2" ve="3">stopPreview | |
{} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act15" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3"/> | |
<Str sr="arg1" ve="3">cam</Str> | |
<Str sr="arg2" ve="3">release | |
{} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act16" ve="7"> | |
<code>137</code> | |
<Int sr="arg0" val="0"/> | |
<Str sr="arg1" ve="3">FlashAutoOff</Str> | |
</Action> | |
<Action sr="act2" ve="7"> | |
<code>37</code> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%hasflash</lhs> | |
<op>1</op> | |
<rhs>true</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act3" ve="7"> | |
<code>548</code> | |
<Str sr="arg0" ve="3">Flash unavailable</Str> | |
<Int sr="arg1" val="0"/> | |
</Action> | |
<Action sr="act4" ve="7"> | |
<code>137</code> | |
<Int sr="arg0" val="1"/> | |
<Str sr="arg1" ve="3"/> | |
</Action> | |
<Action sr="act5" ve="7"> | |
<code>38</code> | |
</Action> | |
<Action sr="act6" ve="7"> | |
<code>549</code> | |
<Str sr="arg0" ve="3">%FlashCtl</Str> | |
<Int sr="arg1" val="0"/> | |
</Action> | |
<Action sr="act7" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3">cam</Str> | |
<Str sr="arg1" ve="3">Camera</Str> | |
<Str sr="arg2" ve="3">open | |
{Camera} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act8" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3">params</Str> | |
<Str sr="arg1" ve="3">cam</Str> | |
<Str sr="arg2" ve="3">getParameters | |
{android.hardware.Camera$Parameters} ()</Str> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
<Action sr="act9" ve="7"> | |
<code>664</code> | |
<Str sr="arg0" ve="3"/> | |
<Str sr="arg1" ve="3">params</Str> | |
<Str sr="arg2" ve="3">setFlashMode | |
{} (String)</Str> | |
<Str sr="arg3" ve="3">torch</Str> | |
<Str sr="arg4" ve="3"/> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3"/> | |
</Action> | |
</Task> | |
<Task sr="task101"> | |
<cdate>1427145843081</cdate> | |
<edate>1427498503240</edate> | |
<id>101</id> | |
<nme>FlashOff</nme> | |
<pri>10</pri> | |
<Action sr="act0" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FlashCtl</Str> | |
<Str sr="arg1" ve="3">0</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
</Task> | |
<Task sr="task93"> | |
<cdate>1426618354356</cdate> | |
<edate>1427498494570</edate> | |
<id>93</id> | |
<nme>FlashlightControl</nme> | |
<pri>10</pri> | |
<Action sr="act0" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%CurrentTime</Str> | |
<Str sr="arg1" ve="3">%TIMEMS</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act1" ve="7"> | |
<code>37</code> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%ScrLastActive</lhs> | |
<op>12</op> | |
<rhs></rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act10" ve="7"> | |
<code>61</code> | |
<Int sr="arg0" val="25"/> | |
</Action> | |
<Action sr="act11" ve="7"> | |
<code>130</code> | |
<Str sr="arg0" ve="3">FlashOff</Str> | |
<Int sr="arg1"> | |
<var>%priority</var> | |
</Int> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Int sr="arg5" val="0"/> | |
</Action> | |
<Action sr="act12" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FlashStatus</Str> | |
<Str sr="arg1" ve="3">off</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act13" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FirstInvocation</Str> | |
<Str sr="arg1" ve="3">1</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act14" ve="7"> | |
<code>16</code> | |
</Action> | |
<Action sr="act15" ve="7"> | |
<code>43</code> | |
<label>Make sure not to trigger twice in a row after 3 display toggles</label> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%FirstInvocation</lhs> | |
<op>0</op> | |
<rhs>1</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act16" ve="7"> | |
<code>549</code> | |
<Str sr="arg0" ve="3">%FirstInvocation</Str> | |
<Int sr="arg1" val="0"/> | |
</Action> | |
<Action sr="act17" ve="7"> | |
<code>38</code> | |
</Action> | |
<Action sr="act18" ve="7"> | |
<code>38</code> | |
</Action> | |
<Action sr="act19" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%ScrLastActive</Str> | |
<Str sr="arg1" ve="3">%TIMEMS</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act2" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%dScrActive</Str> | |
<Str sr="arg1" ve="3">%CurrentTime-%ScrLastActive</Str> | |
<Int sr="arg2" val="1"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act3" ve="7"> | |
<code>37</code> | |
<ConditionList sr="if"> | |
<bool0>And</bool0> | |
<bool1>And</bool1> | |
<Condition sr="c0" ve="3"> | |
<lhs>%dScrActive</lhs> | |
<op>6</op> | |
<rhs>1500</rhs> | |
</Condition> | |
<Condition sr="c1" ve="3"> | |
<lhs>%FlashStatus</lhs> | |
<op>1</op> | |
<rhs>on</rhs> | |
</Condition> | |
<Condition sr="c2" ve="3"> | |
<lhs>%FirstInvocation</lhs> | |
<op>1</op> | |
<rhs>1</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act4" ve="7"> | |
<code>61</code> | |
<Int sr="arg0" val="25"/> | |
</Action> | |
<Action sr="act5" ve="7"> | |
<code>130</code> | |
<Str sr="arg0" ve="3">FlashOn</Str> | |
<Int sr="arg1"> | |
<var>%priority-1</var> | |
</Int> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Int sr="arg5" val="0"/> | |
</Action> | |
<Action sr="act6" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FlashStatus</Str> | |
<Str sr="arg1" ve="3">on</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act7" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FirstInvocation</Str> | |
<Str sr="arg1" ve="3">1</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
<Action sr="act8" ve="7"> | |
<code>16</code> | |
<label>Turn off screen after flashlight toggle</label> | |
</Action> | |
<Action sr="act9" ve="7"> | |
<code>43</code> | |
<ConditionList sr="if"> | |
<bool0>And</bool0> | |
<Condition sr="c0" ve="3"> | |
<lhs>%dScrActive</lhs> | |
<op>6</op> | |
<rhs>1500</rhs> | |
</Condition> | |
<Condition sr="c1" ve="3"> | |
<lhs>%FirstInvocation</lhs> | |
<op>1</op> | |
<rhs>1</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
</Task> | |
<Task sr="task94"> | |
<cdate>1426620544981</cdate> | |
<edate>1427498506490</edate> | |
<id>94</id> | |
<nme>FlashAutoOff</nme> | |
<pri>10</pri> | |
<Action sr="act0" ve="7"> | |
<code>30</code> | |
<Int sr="arg0" val="0"/> | |
<Int sr="arg1" val="0"/> | |
<Int sr="arg2" val="1"/> | |
<Int sr="arg3" val="0"/> | |
<Int sr="arg4" val="0"/> | |
</Action> | |
<Action sr="act1" ve="7"> | |
<code>130</code> | |
<Str sr="arg0" ve="3">FlashOff</Str> | |
<Int sr="arg1"> | |
<var>%priority</var> | |
</Int> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3"/> | |
<Int sr="arg5" val="0"/> | |
</Action> | |
<Action sr="act2" ve="7"> | |
<code>547</code> | |
<Str sr="arg0" ve="3">%FlashStatus</Str> | |
<Str sr="arg1" ve="3">off</Str> | |
<Int sr="arg2" val="0"/> | |
<Int sr="arg3" val="0"/> | |
</Action> | |
</Task> | |
</TaskerData> |
Revision 0.3
- Replaced third-party Tesla plugin with Java call to enable flashlight (based on this method)
- Added a short refractory period after the button-press sequence that prevents accidentally triggering the flashlight toggle more than once
- reduced interval to 1.5s (profile seems to execute faster now)
Any interest in submitting this here: https://github.com/ProLoser/Tasker-Presets/ ?
Just wanted to say that this is working great on my GS4 (SCH-i545PP). I imported as a project and it works. The only issue I thought I had turned out to be caused by my tapping the power key too quickly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Revision 0.1
Initial commit. A more detailed description of this profile and installation instructions may be found here.
Revision 0.2
The latest revision adds the following:
Other changes: