diff --git a/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java b/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java index 14987fa..9362d1a 100644 --- a/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java +++ b/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java @@ -10,8 +10,11 @@ import android.util.Log; import android.view.View; import android.view.Menu; import android.view.MenuItem; +import android.widget.ArrayAdapter; +import android.widget.TextView; import android.widget.Toast; +import com.google.android.gms.location.ActivityRecognition; import com.google.android.gms.location.DetectedActivity; import com.pureix.easylocator.controller.service.ActivityRecognitionAPI; import com.pureix.easylocator.controller.service.BatteryAPI; @@ -25,9 +28,14 @@ import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverLi import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; + +import static com.pureix.easylocator.controller.service.ActivityRecognitionAPI.MONITORED_ACTIVITIES; public class MainActivity extends AppCompatActivity { + private TextView txt; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -35,16 +43,28 @@ public class MainActivity extends AppCompatActivity { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() { + txt = (TextView) findViewById(R.id.txt); + + ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() + { @Override public void updateDetectedActivitiesList(ArrayList updatedActivities) { //Toast.makeText(MainActivity.this, "okay", Toast.LENGTH_SHORT).show(); + ArrayList tempList = ActivityRecognitionAPI.getArrayList(updatedActivities); + + for (int i = 0; i < tempList.size(); i++) { + txt.append(MONITORED_ACTIVITIES[tempList.get(i).getType()-1] +" - " + + tempList.get(i).getConfidence() +" - " + + tempList.get(i).getVersionCode()+"\n"); + } + Toast.makeText(MainActivity.this, ""+tempList, Toast.LENGTH_SHORT).show(); } }); InternetAPI.networkListener(new ConnectivityReceiverListener() { @Override public void onNetworkConnectionChanged(boolean isConnected, int connectionProvider) { + //txt.append(); //Toast.makeText(MainActivity.this, ""+isConnected, Toast.LENGTH_SHORT).show(); } }); diff --git a/SampleEasyLocator/app/src/main/res/layout/content_main.xml b/SampleEasyLocator/app/src/main/res/layout/content_main.xml index 89506fb..abec304 100644 --- a/SampleEasyLocator/app/src/main/res/layout/content_main.xml +++ b/SampleEasyLocator/app/src/main/res/layout/content_main.xml @@ -13,8 +13,15 @@ tools:context="com.pureix.sampleeasylocator.MainActivity" tools:showIn="@layout/activity_main"> - + + + + + diff --git a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/ActivityRecognitionAPI.java b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/ActivityRecognitionAPI.java index 456b7e1..f53a9b0 100644 --- a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/ActivityRecognitionAPI.java +++ b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/ActivityRecognitionAPI.java @@ -2,17 +2,26 @@ package com.pureix.easylocator.controller.service; import android.content.Context; import android.content.Intent; +import android.widget.ArrayAdapter; +import com.google.android.gms.location.DetectedActivity; import com.pureix.easylocator.service.activityRecognitionService.ActivitiesRecognitionService; +import com.pureix.easylocator.service.activityRecognitionService.Constants; import com.pureix.easylocator.service.activityRecognitionService.broadcastReceiver.InitializeActivityRecognitionBroadcast; import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener; +import java.util.ArrayList; +import java.util.HashMap; + /** * Created by MelDiSooQi on 2/11/2017. */ public class ActivityRecognitionAPI { + public static final int[] MONITORED_ACTIVITIES = Constants.MONITORED_ACTIVITIES; + private static ArrayAdapter arrayAdapter; + private static InitializeActivityRecognitionBroadcast broadcast; public static ActivityRecognitionListener activitiesRecognitionListener; @@ -34,4 +43,47 @@ public class ActivityRecognitionAPI public static void setActivitiesRecognitionListener(ActivityRecognitionListener activitiesRecognitionListener) { ActivityRecognitionAPI.activitiesRecognitionListener = activitiesRecognitionListener; } + + /** + * Process list of recently detected activities and updates the list of {@code DetectedActivity} + * objects backing this adapter. + * + * @param detectedActivities the freshly detected activities + */ + public static ArrayList getArrayList(ArrayList detectedActivities) + { + HashMap detectedActivitiesMap = new HashMap<>(); + for (DetectedActivity activity : detectedActivities) { + detectedActivitiesMap.put(activity.getType(), activity.getConfidence()); + } + // Every time we detect new activities, we want to reset the confidence level of ALL + // activities that we monitor. Since we cannot directly change the confidence + // of a DetectedActivity, we use a temporary list of DetectedActivity objects. If an + // activity was freshly detected, we use its confidence level. Otherwise, we set the + // confidence level to zero. + ArrayList tempList = new ArrayList(); + for (int i = 0; i < ActivityRecognitionAPI.MONITORED_ACTIVITIES.length; i++) { + int confidence = detectedActivitiesMap.containsKey(ActivityRecognitionAPI.MONITORED_ACTIVITIES[i]) ? + detectedActivitiesMap.get(ActivityRecognitionAPI.MONITORED_ACTIVITIES[i]) : 0; + + tempList.add(new DetectedActivity(ActivityRecognitionAPI.MONITORED_ACTIVITIES[i], + confidence)); + } + + return tempList; + } + + public static ArrayAdapter getArrayAdapter(ArrayList tempList) + { + // Remove all items. + arrayAdapter.clear(); + + // Adding the new list items notifies attached observers that the underlying data has + // changed and views reflecting the data should refresh. + for (DetectedActivity detectedActivity: tempList) { + arrayAdapter.add(detectedActivity); + } + + return arrayAdapter; + } } diff --git a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/activityRecognitionService/Constants.java b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/activityRecognitionService/Constants.java index 89932cb..0880ee1 100644 --- a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/activityRecognitionService/Constants.java +++ b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/activityRecognitionService/Constants.java @@ -54,7 +54,7 @@ public final class Constants { /** * List of DetectedActivity types that we monitor in this sample. */ - protected static final int[] MONITORED_ACTIVITIES = { + public static final int[] MONITORED_ACTIVITIES = { DetectedActivity.STILL, DetectedActivity.ON_FOOT, DetectedActivity.WALKING,