Quellcode durchsuchen

start setting up actions

David vor 9 Jahren
Ursprung
Commit
8fc7e00677

+ 11 - 0
app/src/main/java/com/example/david/libretasker/ActionManager.java

@@ -0,0 +1,11 @@
+package com.example.david.libretasker;
+
+/**
+ * Created by david on 01/01/17.
+ */
+
+public class ActionManager {
+    void triggerAction(){
+
+    }
+}

+ 13 - 0
app/src/main/java/com/example/david/libretasker/Actions/Action.java

@@ -0,0 +1,13 @@
+package com.example.david.libretasker.Actions;
+
+import android.content.Context;
+
+import java.util.HashMap;
+
+/**
+ * Created by david on 01/01/17.
+ */
+
+public interface Action {
+    void start(Context context, HashMap data);
+}

+ 21 - 0
app/src/main/java/com/example/david/libretasker/Actions/Actions.java

@@ -0,0 +1,21 @@
+package com.example.david.libretasker.Actions;
+
+import android.content.Context;
+import android.widget.Toast;
+
+/**
+ * Created by david on 01/01/17.
+ */
+
+public class Actions {
+    public static void Action(Context context, String name, Object payload) {
+        switch(name){
+            case "Toast":
+                Toast.makeText(context, (String)payload, Toast.LENGTH_SHORT).show();
+                return;
+            default:
+                Toast.makeText(context, name + " " + (String)payload, Toast.LENGTH_SHORT).show();
+                return;
+        }
+    }
+}

+ 16 - 0
app/src/main/java/com/example/david/libretasker/Actions/ToastAction.java

@@ -0,0 +1,16 @@
+package com.example.david.libretasker.Actions;
+
+import android.content.Context;
+import android.widget.Toast;
+
+import java.util.HashMap;
+
+/**
+ * Created by david on 01/01/17.
+ */
+
+public class ToastAction implements Action {
+    @Override
+    public void start(Context context, HashMap data) {
+    }
+}

+ 43 - 8
app/src/main/java/com/example/david/libretasker/EventReceiver.java

@@ -4,30 +4,65 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.util.Log;
 import android.util.Log;
 
 
-import com.example.david.libretasker.Events.NetworkManager;
+import com.example.david.libretasker.Actions.Actions;
+import com.example.david.libretasker.Actions.ToastAction;
+import com.example.david.libretasker.Events.NetworkEvent;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.List;
 
 
 /**
 /**
  * Created by david on 01/01/17.
  * Created by david on 01/01/17.
  */
  */
 
 
 public class EventReceiver extends BroadcastReceiver {
 public class EventReceiver extends BroadcastReceiver {
-    NetworkManager nm = new NetworkManager();
-    String TAG =" EventReceiver";
+    String TAG = " EventReceiver";
     @Override
     @Override
     public void onReceive(Context context, Intent intent) {
     public void onReceive(Context context, Intent intent) {
         switch (intent.getAction()) {
         switch (intent.getAction()) {
             case ConnectivityManager.CONNECTIVITY_ACTION:
             case ConnectivityManager.CONNECTIVITY_ACTION:
-                HashMap hm = new HashMap<String, Object>();
-                ArrayList ssids = new ArrayList<String>();
-                ssids.add("Cueva");
+                NetworkEvent ne = new NetworkEvent();
+
+                HashMap<String, Object> hm = new HashMap();
+                hm.put("SSIDs", Arrays.asList("Cueva", "Cueva2"));
+                hm.put("type", ConnectivityManager.TYPE_WIFI);
+                hm.put("state", NetworkInfo.State.CONNECTED);
+                hm.put("trigger_type", "Toast");
+                hm.put("trigger_value", "Connected to cuevita");
+
+                HashMap<String, Object> hm2 = new HashMap(hm);
+                hm2.put("SSIDs", Arrays.asList("Banana"));
+                hm2.put("trigger_value", "Connected to banana");
+
+                HashMap<String, Object> hm3 = new HashMap(hm);
+                hm3.remove("SSIDs");
+                hm3.put("type", ConnectivityManager.TYPE_MOBILE);
+                hm3.put("trigger_type", "Bread");
+                hm3.put("trigger_value", "Connected to mobile");
+
+                //ne.trigger(context, hm);
+
+                ArrayList<HashMap<String, Object>> nes = new ArrayList<HashMap<String, Object>>();
+                nes.add(hm);
+                nes.add(hm2);
+                nes.add(hm3);
+
+                for(HashMap<String, Object> el: nes ){
+                    if ( ne.trigger(context, el) ) {
+                        Log.d(TAG, "OK");
+                        Actions.Action(context, (String)el.get("trigger_type"), el.get("trigger_value"));
+                    } else {
+                        Log.d(TAG, "NOT OK");
+                        //NO Action
+                    }
+                }
 
 
-                hm.put("SSIDs", ssids);
-                nm.trigger(context, hm);
                 break;
                 break;
             default:
             default:
                 Log.d(TAG, intent.getAction());
                 Log.d(TAG, intent.getAction());

+ 1 - 1
app/src/main/java/com/example/david/libretasker/Events/Event.java

@@ -9,5 +9,5 @@ import java.util.HashMap;
  */
  */
 
 
 public interface Event {
 public interface Event {
-    public void trigger(Context ctx, HashMap<String, Object> hm);
+    public boolean trigger(Context ctx, HashMap<String, Object> hm);
 }
 }

+ 42 - 13
app/src/main/java/com/example/david/libretasker/Events/NetworkManager.java

@@ -7,33 +7,53 @@ import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
  * Created by david on 01/01/17.
  * Created by david on 01/01/17.
  */
  */
-
-public class NetworkManager implements Event  {
+public class NetworkEvent implements Event {
     @Override
     @Override
-    public void trigger(Context context, HashMap<String, Object> hm) {
-        List<String> SSIDs = (ArrayList<String>)hm.get("SSIDs");
-        //SSIDs.add("Cueva");
+    public boolean trigger(Context context, HashMap data) {
+
+        assert (data.get("type") != null);
+
+        Connection c = new Connection();
+        c.state = (NetworkInfo.State)data.get("state");
+        c.type = (int) data.get("type");
+        c.ValidSSIDs =(List<String>)data.get("SSIDs");
+
 
 
         ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo mActive = conn.getActiveNetworkInfo();
         NetworkInfo mActive = conn.getActiveNetworkInfo();
 
 
         if (mActive == null) {
         if (mActive == null) {
             Toast.makeText(context, "No active connection" , Toast.LENGTH_SHORT).show();
             Toast.makeText(context, "No active connection" , Toast.LENGTH_SHORT).show();
-            return;
+            return false;
+        }
+
+        if (c.state != null && c.state != mActive.getState()) {
+            return false;
         }
         }
-        if (!mActive.isConnected()) {
+        /*if (!mActive.isConnected()) {
             Toast.makeText(context, "Active connection is disconnected" , Toast.LENGTH_SHORT).show();
             Toast.makeText(context, "Active connection is disconnected" , Toast.LENGTH_SHORT).show();
             return;
             return;
-        }
+        }*/
+        if (mActive.getType() != c.type)
+            return false;
 
 
+        if (c.ValidSSIDs != null && c.ValidSSIDs.size() > 0 && c.type == ConnectivityManager.TYPE_WIFI){
+            WifiManager wifiManager = (WifiManager) context.getSystemService (Context.WIFI_SERVICE);
+            WifiInfo info = wifiManager.getConnectionInfo ();
+            String ssid  = info.getSSID(); //Returns "ssid"
+            ssid = ssid.substring(1, ssid.length()-1);
+            if (!c.ValidSSIDs.contains(ssid))
+                return false;
+        }
 
 
+        return true;
+        /*
         switch (mActive.getType()) {
         switch (mActive.getType()) {
             case ConnectivityManager.TYPE_MOBILE:
             case ConnectivityManager.TYPE_MOBILE:
                 //FIXME: triggers with reason == 'connected' on connection and
                 //FIXME: triggers with reason == 'connected' on connection and
@@ -46,10 +66,8 @@ public class NetworkManager implements Event  {
                 Toast.makeText(context, ss, Toast.LENGTH_SHORT).show();
                 Toast.makeText(context, ss, Toast.LENGTH_SHORT).show();
                 break;
                 break;
             case ConnectivityManager.TYPE_WIFI:
             case ConnectivityManager.TYPE_WIFI:
-                WifiManager wifiManager = (WifiManager) context.getSystemService (Context.WIFI_SERVICE);
-                WifiInfo info = wifiManager.getConnectionInfo ();
-                String ssid  = info.getSSID(); //Returns "ssid"
-                ssid = ssid.substring(1, ssid.length()-1);
+
+
 
 
 
 
                 if (SSIDs.contains(ssid)) {
                 if (SSIDs.contains(ssid)) {
@@ -61,5 +79,16 @@ public class NetworkManager implements Event  {
             default:
             default:
                 break;
                 break;
         }
         }
+        */
+    }
+
+    /**
+     * Created by david on 01/01/17.
+     */
+
+    static class Connection {
+        public int type;
+        public List<String> ValidSSIDs;
+        public NetworkInfo.State state;
     }
     }
 }
 }