Add ArrayList for ActivityRecognitionAPI

This commit is contained in:
MOATAZ IBRAHIM ELDESOUKI TAWFEEK MOHAMMED 2017-02-14 22:18:27 +02:00
parent c5a5881c58
commit a8f7892e23
4 changed files with 85 additions and 6 deletions

View File

@ -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<DetectedActivity> updatedActivities) {
//Toast.makeText(MainActivity.this, "okay", Toast.LENGTH_SHORT).show();
ArrayList<DetectedActivity> 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();
}
});

View File

@ -13,8 +13,15 @@
tools:context="com.pureix.sampleeasylocator.MainActivity"
tools:showIn="@layout/activity_main">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
android:text="" />
</ScrollView>
</RelativeLayout>

View File

@ -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<DetectedActivity> 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<DetectedActivity> getArrayList(ArrayList<DetectedActivity> detectedActivities)
{
HashMap<Integer, Integer> 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<DetectedActivity> tempList = new ArrayList<DetectedActivity>();
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<DetectedActivity> getArrayAdapter(ArrayList<DetectedActivity> 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;
}
}

View File

@ -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,