Ver código fonte

screen event

David 9 anos atrás
pai
commit
15c2a663a8

+ 9 - 2
app/src/main/java/com/example/david/libretasker/EventReceiver.java

@@ -9,6 +9,7 @@ import android.util.Log;
 import com.example.david.libretasker.Actions.Actions;
 import com.example.david.libretasker.Events.Event;
 import com.example.david.libretasker.Events.NetworkEvent;
+import com.example.david.libretasker.Events.ScreenEvent;
 import com.example.david.libretasker.Events.TimeEvent;
 import com.example.david.libretasker.UserData.UserData;
 
@@ -32,8 +33,8 @@ public class EventReceiver extends BroadcastReceiver {
 
         HashMap<String, Object> data = new HashMap<>();
 
-        HashMap<String, Object> event = new HashMap<>();
-        ArrayList<HashMap<String, Object>> actions = new ArrayList<>();
+        HashMap<String, Object> event;
+        ArrayList<HashMap<String, Object>> actions;
 
         switch (intent.getAction()) {
 
@@ -47,6 +48,12 @@ public class EventReceiver extends BroadcastReceiver {
                 e = new TimeEvent();
                 data = UserData.getData("DateTime");
                 break;
+
+            case Intent.ACTION_SCREEN_ON:
+            case Intent.ACTION_SCREEN_OFF:
+                e = new ScreenEvent();
+                data = UserData.getData("Screen");
+                break;
             default:
                 Log.d(TAG, intent.getAction());
                 break;

+ 2 - 3
app/src/main/java/com/example/david/libretasker/Events/Events.java

@@ -11,10 +11,9 @@ public class Events {
         ArrayList<String> ret = new ArrayList<>();
         ret.add("Network");
         ret.add("Date/Time");
+        ret.add("Screen on/off");
         /*
-         * Date(Day)
-         * Date/Time
-         * Display On/Off/Unlocked
+         * Display Unlocked
          * Missed Call, Phone ringing, received text
          * Power: Battery charged, low, full ??
          */

+ 33 - 0
app/src/main/java/com/example/david/libretasker/Events/ScreenEvent.java

@@ -0,0 +1,33 @@
+package com.example.david.libretasker.Events;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.PowerManager;
+import android.view.Display;
+import android.view.WindowManager;
+
+import java.util.HashMap;
+
+/**
+ * Created by david on 02/01/17.
+ */
+
+public class ScreenEvent implements Event {
+    @Override
+    public boolean trigger(Context ctx, HashMap<String, Object> hm) {
+
+        boolean screenOn = false;
+        boolean targetOFF = (hm.get("OFF")!=null && (boolean)hm.get("OFF"));
+
+        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+            Display d = ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
+            screenOn = (d.getState() == d.STATE_ON);
+        } else {
+            PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
+            //noinspection deprecation
+            screenOn = pm.isScreenOn();
+        }
+
+        return (screenOn != targetOFF);
+    }
+}

+ 3 - 0
app/src/main/java/com/example/david/libretasker/MainService.java

@@ -34,6 +34,9 @@ public class MainService extends Service {
         filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
         filter.addAction(Intent.ACTION_TIME_CHANGED);
         filter.addAction(BCAST_CONFIGCHANGED);
+
+        filter.addAction(Intent.ACTION_SCREEN_ON);
+        filter.addAction(Intent.ACTION_SCREEN_OFF);
         //startForeground(); //TODO: ??
 
         this.registerReceiver(receiver, filter);

+ 11 - 3
app/src/main/java/com/example/david/libretasker/UserData/UserData.java

@@ -19,10 +19,10 @@ public class UserData {
         ArrayList<HashMap<String, Object>> actions = new ArrayList<>();
         HashMap<String, Object> event = new HashMap<>();
         HashMap<String, Object> action = new HashMap<>();
+        HashMap<String, Object> action2 = new HashMap<>();
 
         switch (key) {
             case "Network":
-                HashMap<String, Object> action2 = new HashMap<>();
 
                 event.put("SSIDs", Arrays.asList("Cueva", "Cueva2"));
                 event.put("type", ConnectivityManager.TYPE_WIFI);
@@ -46,14 +46,14 @@ public class UserData {
                 break;
             case "DateTime":
 
-                event.put("Hour", Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8));
+                event.put("Hour", Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 17));
                 event.put("InvertHour", false);
 
                 event.put("Minute", null); //Null == *
                 event.put("InvertMinute", null);
 
                 event.put("DOM", null); //Null == *
-                event.put("DOW", Arrays.asList(0,1,2,3,4,5)); //Monday through friday, 0-8 AM
+                event.put("DOW", Arrays.asList(0,1,2,3,4,5)); //Monday through friday, 0-8, 17
 
                 event.put("Month", null); //Null == *
 
@@ -63,6 +63,14 @@ public class UserData {
 
                 actions.add(action);
 
+                break;
+            case "Screen":
+                event.put("OFF", true);
+                action.put("Type", "Beep");
+                actions.add(action);
+
+                //action2.put("Type", "Toast");
+                //action2.put("Value", "Screen ON!");
                 break;
         }
         assoc.put("Event", event);