diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java b/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java index 2c3fe63..a3dfc70 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java @@ -2,10 +2,13 @@ package com.jens.automation2; import android.Manifest; import android.app.Activity; +import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.os.Looper; import android.os.VibrationEffect; import android.os.Vibrator; import android.view.View; @@ -22,6 +25,7 @@ public class ActivityManageActionVibrate extends Activity { TextView etVibratePattern; Button bTestVibratePattern, bSaveVibratePattern; + ProgressDialog pdPleaseWait = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) @@ -60,7 +64,20 @@ public class ActivityManageActionVibrate extends Activity if (ActivityPermissions.havePermission(Manifest.permission.VIBRATE, ActivityManageActionVibrate.this)) { String pattern = etVibratePattern.getText().toString(); - Actions.vibrate(false, pattern); + + String[] patternArray = pattern.split(","); + long sum = 0; + for(String element : patternArray) + sum += Long.parseLong(element); + + if(sum <= 2000) + Actions.vibrate(false, pattern); + else + { + pdPleaseWait = ProgressDialog.show(ActivityManageActionVibrate.this, null, getResources().getString(R.string.pleaseWait)); + VibrateTask vt = new VibrateTask(); + vt.execute(pattern); + } } } } @@ -84,4 +101,22 @@ public class ActivityManageActionVibrate extends Activity return true; } + + class VibrateTask extends AsyncTask + { + @Override + protected Void doInBackground(String... strings) + { + String pattern = (String)strings[0]; + Actions.vibrate(false, pattern); + return null; + } + + @Override + protected void onPostExecute(Void unused) + { + pdPleaseWait.dismiss(); + super.onPostExecute(unused); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/jens/automation2/Miscellaneous.java b/app/src/main/java/com/jens/automation2/Miscellaneous.java index 8748a33..ca8d0e0 100644 --- a/app/src/main/java/com/jens/automation2/Miscellaneous.java +++ b/app/src/main/java/com/jens/automation2/Miscellaneous.java @@ -163,7 +163,7 @@ public class Miscellaneous extends Service else if(method.equals(ActivityManageActionTriggerUrl.methodPost)) connection.setRequestMethod("POST"); - if(httpParams.size() > 0) + if(httpParams.size() > 0) { connection.setRequestMethod("POST"); connection.setDoInput(true); diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java index c4cbc73..369b8db 100644 --- a/app/src/main/java/com/jens/automation2/Trigger.java +++ b/app/src/main/java/com/jens/automation2/Trigger.java @@ -1240,6 +1240,12 @@ public class Trigger public boolean hasStateNotAppliedSinceLastRuleExecution() { + /* + There is no easy event to tell when a tag has been disconnected again. + */ + if(getTriggerType().equals(Trigger_Enum.nfcTag)) + return true; + if(getParentRule().getLastExecution() == null) { Miscellaneous.logEvent("i", "Trigger", "Trigger " + this.toString() + " of rule " + getParentRule().getName() + " has NOT applied since the parent rule\'s last activation.", 4); diff --git a/app/src/main/java/com/jens/automation2/receivers/NfcReceiver.java b/app/src/main/java/com/jens/automation2/receivers/NfcReceiver.java index dee14a4..b146937 100644 --- a/app/src/main/java/com/jens/automation2/receivers/NfcReceiver.java +++ b/app/src/main/java/com/jens/automation2/receivers/NfcReceiver.java @@ -8,10 +8,10 @@ import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.Tag; +import android.nfc.tech.IsoDep; import android.nfc.tech.Ndef; import android.nfc.tech.NdefFormatable; import android.os.AsyncTask; -import android.os.Build; import android.util.Log; import android.widget.Toast; @@ -56,9 +56,9 @@ public class NfcReceiver if(action == null) { Miscellaneous.logEvent("i", "NFC", "action=null", 5); - return; + return; } - + if(action.equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) { Miscellaneous.logEvent("i", "NFC", "ACTION_NDEF_DISCOVERED", 4); @@ -275,7 +275,7 @@ public class NfcReceiver { format.connect(); format.format(completeMessageToWrite); - Miscellaneous.logEvent("i", "NFC", "Done writing tag.", 2); + Miscellaneous.logEvent("i", "NFC", "Done writing tag.", 2); return true; } catch(IOException e) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 01de932..650f3af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -969,4 +969,5 @@ close far proximity is between \"%1$s\" and \"%2$s\" + Please wait. \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/145.txt b/fastlane/metadata/android/en-US/changelogs/145.txt index f608bb2..e9235ed 100644 --- a/fastlane/metadata/android/en-US/changelogs/145.txt +++ b/fastlane/metadata/android/en-US/changelogs/145.txt @@ -8,5 +8,7 @@ * Fixed: Variable trigger didn't always compare correctly. * Fixed: Permission check for ability to schedule exact timers * Fixed: Crash in Google Play version -* Fixed: Added waiting period for vibrations +* Fixed: Added waiting period for vibrations and separate thread for trying a sequence. +* Fixed: Buttons in NFC screen weren't enabled. +* Fixed: NFC tag triggers didn't cause a second execution if a tag was removed and presented again. * Added Possibility to select UI theme, hence enabling modern UI designs \ No newline at end of file