wakelock action

This commit is contained in:
jens 2022-07-02 12:46:34 +02:00
parent 99faa2f7ef
commit 536a5e22f9
2 changed files with 41 additions and 31 deletions

View File

@ -576,6 +576,12 @@ public class Action
else if(execParts.length == 2) else if(execParts.length == 2)
Actions.runExecutable(context, this.getParameter1(), execParts[0], execParts[1]); Actions.runExecutable(context, this.getParameter1(), execParts[0], execParts[1]);
break; break;
case wakelock:
if(this.getParameter1())
Actions.wakeLockStart(context, Long.parseLong(this.getParameter2()));
else
Actions.wakeLockStop();
break;
default: default:
Miscellaneous.logEvent("w", "Action", context.getResources().getString(R.string.unknownActionSpecified), 3); Miscellaneous.logEvent("w", "Action", context.getResources().getString(R.string.unknownActionSpecified), 3);
break; break;

View File

@ -1142,7 +1142,6 @@ public class Actions
{ {
Miscellaneous.logEvent("i", "waitBeforeNextAction", "waitBeforeNextAction for " + String.valueOf(waitTime) + " milliseconds.", 4); Miscellaneous.logEvent("i", "waitBeforeNextAction", "waitBeforeNextAction for " + String.valueOf(waitTime) + " milliseconds.", 4);
wakeLockStart(60000);
try try
{ {
Thread.sleep(waitTime); Thread.sleep(waitTime);
@ -2097,48 +2096,53 @@ public class Actions
public final static int wakeLockTimeoutDisabled = -1; public final static int wakeLockTimeoutDisabled = -1;
static boolean wakeLockStopRequested = false; static boolean wakeLockStopRequested = false;
public static void wakeLockStart(long duration) public static void wakeLockStart(Context context, long duration)
{ {
long waited = 0; Thread lockThread = new Thread(new Runnable()
int step = 1000;
if(duration < 0)
step = 99999;
try
{ {
PowerManager powerManager = (PowerManager) Miscellaneous.getAnyContext().getSystemService(Context.POWER_SERVICE); @Override
PowerManager.WakeLock fullWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Loneworker - FULL WAKE LOCK"); public void run()
fullWakeLock.acquire(); // turn on
do
{ {
wakeLockStopRequested = false;
long waited = 0;
int step = 2000;
try try
{ {
Thread.sleep(step); // turn on duration PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
} PowerManager.WakeLock fullWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Loneworker - FULL WAKE LOCK");
catch (InterruptedException e) fullWakeLock.acquire(); // turn on
{
e.printStackTrace();
}
waited += step; do
{
if(false) //stop requested try
{
Thread.sleep(step); // turn on duration
}
catch (InterruptedException e)
{
e.printStackTrace();
}
if(duration > 0)
waited += step;
if(wakeLockStopRequested) //stop requested
Miscellaneous.logEvent("i", "WakeLockStart", "Stop requested.", 4);
}
while(!wakeLockStopRequested && (duration < 0 || waited <= duration));
fullWakeLock.release();
}
catch (Exception e)
{ {
Miscellaneous.logEvent("i", "WakeLockStart", "Stop requested.", 4);
wakeLockStopRequested = false;
break;
} }
} }
while(waited <= duration); });
fullWakeLock.release(); lockThread.start();
}
catch (Exception e)
{
}
} }
public static void wakeLockStop() public static void wakeLockStop()