From b04bd12d3e211d9e15bd611125fbeb93a353ab04 Mon Sep 17 00:00:00 2001
From: Peter De Jonckheere <peter.de-jonckheere.2014@uni.strath.ac.uk>
Date: Thu, 28 Jun 2018 15:15:04 +0100
Subject: [PATCH] Added more awareness api stuff.

---
 src/main/AndroidManifest.xml                  |  2 +
 .../sedentary/frontEnd/RequestPermission.java | 37 +++++++++++++++++++
 .../stimulusStrategy/Accelerometer.java       | 28 ++++++++++++--
 .../stimulusStrategy/SigMotionDetect.java     | 33 ++++++++++++++++-
 4 files changed, 95 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/com/notificationFramework/sedentary/frontEnd/RequestPermission.java

diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index fabde00..3bf6cb4 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -28,6 +28,8 @@
         </activity>
         <activity android:name="com.notificationFramework.sedentary.frontEnd.NotificationClicked">
         </activity>
+        <activity android:name="com.notificationFramework.sedentary.frontEnd.RequestPermission">
+        </activity>
         <activity android:name="com.notificationFramework.sedentary.frontEnd.AdvancedSettings">
         </activity>
         <service android:name="com.notificationFramework.notification.SedentaryNotification">
diff --git a/src/main/java/com/notificationFramework/sedentary/frontEnd/RequestPermission.java b/src/main/java/com/notificationFramework/sedentary/frontEnd/RequestPermission.java
new file mode 100644
index 0000000..22a781c
--- /dev/null
+++ b/src/main/java/com/notificationFramework/sedentary/frontEnd/RequestPermission.java
@@ -0,0 +1,37 @@
+package com.notificationFramework.sedentary.frontEnd;
+
+import android.Manifest;
+import android.os.Bundle;
+import android.support.v4.app.ActivityCompat;
+import android.support.v7.app.AppCompatActivity;
+
+/**
+ * Created by pharmacy on 28/06/2018.
+ */
+
+public class RequestPermission extends AppCompatActivity{
+
+    /**
+     *
+     * @param savedInstanceState contains information pertaining to previous states of the activity
+     *                           if it has been used before
+     * @see android.support.v7.app.AppCompatActivity
+     */
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+    }
+
+    /**
+     * When this activity is started regardless of whether it has been created a clicked
+     * notification is recorded.
+     */
+    @Override
+    protected void onStart() {
+        super.onStart();
+        ActivityCompat.requestPermissions(this,
+                new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
+                0);
+    }
+}
diff --git a/src/main/java/com/notificationFramework/stimulusStrategy/Accelerometer.java b/src/main/java/com/notificationFramework/stimulusStrategy/Accelerometer.java
index dc2bf74..407200b 100644
--- a/src/main/java/com/notificationFramework/stimulusStrategy/Accelerometer.java
+++ b/src/main/java/com/notificationFramework/stimulusStrategy/Accelerometer.java
@@ -16,10 +16,15 @@ import android.support.annotation.Nullable;
 import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 
+import com.google.android.gms.awareness.Awareness;
+import com.google.android.gms.awareness.state.Weather;
+import com.google.android.gms.location.places.PlaceLikelihood;
 import com.notificationFramework.sedentary.frontEnd.R;
+import com.notificationFramework.sedentary.frontEnd.RequestPermission;
 import com.notificationFramework.sedentary.frontEnd.SaveFile;
 
 import java.util.Calendar;
+import java.util.List;
 
 
 /**
@@ -165,7 +170,7 @@ public class Accelerometer extends Service implements StimulusStrategy, SensorEv
         PendingIntent pi = PendingIntent.getBroadcast(getBaseContext(),
                 R.integer.alarm_rc, i, PendingIntent.FLAG_UPDATE_CURRENT);
         am.cancel(pi);
-        collectData();
+        getExtraData();
         SaveFile.recordNotification(0, 0, 1,0, this);
         setUpClock();
     }
@@ -235,8 +240,25 @@ public class Accelerometer extends Service implements StimulusStrategy, SensorEv
     }
 
 
-    private void collectData(){
-
+    private void getExtraData(){
+        try {
+            double latitude = Awareness.getSnapshotClient(this).getLocation()
+                    .getResult().getLocation().getLatitude();
+            double longitude = Awareness.getSnapshotClient(this).getLocation()
+                    .getResult().getLocation().getLongitude();
+            List<PlaceLikelihood> placeLikelihoods = Awareness.getSnapshotClient(this)
+                    .getPlaces().getResult().getPlaceLikelihoods();
+            Weather weather = Awareness.getSnapshotClient(this).getWeather().getResult()
+                    .getWeather();
+            SharedPreferences.Editor editor = preferences.edit();
+            editor.putLong("",Double.doubleToLongBits(latitude));
+            editor.putLong("",Double.doubleToLongBits(longitude));
+            //editor.putString("", ) place names
+            //editor.putInt("",) weather so temperature
+        }catch(SecurityException e){
+            Intent i = new Intent(this, RequestPermission.class);
+            startActivity(i);
+        }
     }
 
     /**
diff --git a/src/main/java/com/notificationFramework/stimulusStrategy/SigMotionDetect.java b/src/main/java/com/notificationFramework/stimulusStrategy/SigMotionDetect.java
index 7365b88..40cbf21 100644
--- a/src/main/java/com/notificationFramework/stimulusStrategy/SigMotionDetect.java
+++ b/src/main/java/com/notificationFramework/stimulusStrategy/SigMotionDetect.java
@@ -1,11 +1,13 @@
 package com.notificationFramework.stimulusStrategy;
 
+import android.Manifest;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
 import android.hardware.TriggerEvent;
@@ -13,15 +15,23 @@ import android.hardware.TriggerEventListener;
 import android.os.IBinder;
 import android.os.SystemClock;
 import android.support.annotation.Nullable;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 
 import com.google.android.gms.awareness.Awareness;
+import com.google.android.gms.awareness.state.Weather;
 import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.location.places.PlaceLikelihood;
+import com.notificationFramework.sedentary.frontEnd.MainActivity;
 import com.notificationFramework.sedentary.frontEnd.R;
+import com.notificationFramework.sedentary.frontEnd.RequestPermission;
 import com.notificationFramework.sedentary.frontEnd.SaveFile;
 
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
 
 /**
  * Created by Peter De Jonckheere on 17/01/2018.
@@ -79,6 +89,8 @@ public class SigMotionDetect extends Service implements StimulusStrategy {
      */
     private int prevMinutes;
 
+    private GoogleApiClient client;
+
 
     /**
      * The method which is called when the SigMotionDetect service is started. Sets up a number of
@@ -95,8 +107,9 @@ public class SigMotionDetect extends Service implements StimulusStrategy {
      */
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
-        GoogleApiClient client = new GoogleApiClient.Builder(this)
-                .addApi(Awareness.API).build();
+        client = new GoogleApiClient.Builder(this)
+                .addApi(Awareness.getSnapshotClient(this).getApi()).build();
+        client.connect();
         am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
         setUpClock();
         setUpDailyProgress();
@@ -154,6 +167,7 @@ public class SigMotionDetect extends Service implements StimulusStrategy {
                     R.integer.alarm_rc, i, 0);
             am.cancel(pi);
             SaveFile.recordNotification(0, 0, 1, 0, this);
+            getExtraData();
             setUpClock();
             prevSeconds = seconds;
         }
@@ -259,6 +273,21 @@ public class SigMotionDetect extends Service implements StimulusStrategy {
     }
 
 
+    private void getExtraData(){
+        try {
+            double latitude = Awareness.getSnapshotClient(this).getLocation()
+                    .getResult().getLocation().getLatitude();
+            double longitude = Awareness.getSnapshotClient(this).getLocation()
+                    .getResult().getLocation().getLongitude();
+            List<PlaceLikelihood> placeLikelihoods = Awareness.getSnapshotClient(this)
+                    .getPlaces().getResult().getPlaceLikelihoods();
+            Weather weather = Awareness.getSnapshotClient(this).getWeather().getResult()
+                    .getWeather();
+        }catch(SecurityException e){
+            Intent i = new Intent(this, RequestPermission.class);
+            startActivity(i);
+        }
+    }
     /**
      * The method which reponds to a bind request for this service.
      *
-- 
GitLab