From 0700dcb625fdbb737764d541d6ebb0ece89ccad5 Mon Sep 17 00:00:00 2001 From: Moataz Ibrahim El-DiSooQi Date: Mon, 20 Feb 2017 10:13:08 +0200 Subject: [PATCH] add Smart Location V 0.1 not complete --- .../sampleeasylocator/MainActivity.java | 2 +- .../controller/service/SmartLocationAPI.java | 23 ++++- .../service/SmartLocationBusiness.java | 95 +++++++++++++++++++ 3 files changed, 117 insertions(+), 3 deletions(-) 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 7f7520d..8fbc08e 100644 --- a/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java +++ b/SampleEasyLocator/app/src/main/java/com/pureix/sampleeasylocator/MainActivity.java @@ -90,7 +90,7 @@ public class MainActivity extends AppCompatActivity { } }); - SmartLocationAPI smartLocationAPI = new SmartLocationAPI(); + SmartLocationAPI smartLocationAPI = new SmartLocationAPI(MainActivity.this); smartLocationAPI.smart(true); if(!smartLocationAPI.isSmart()) { smartLocationAPI.customLocation(new CustomLocation()); diff --git a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/SmartLocationAPI.java b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/SmartLocationAPI.java index 599f609..6ecacc0 100644 --- a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/SmartLocationAPI.java +++ b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/controller/service/SmartLocationAPI.java @@ -1,6 +1,9 @@ package com.pureix.easylocator.controller.service; +import android.content.Context; + import com.pureix.easylocator.model.bean.CustomLocation; +import com.pureix.easylocator.service.SmartLocationBusiness; import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener; /** @@ -11,9 +14,19 @@ public class SmartLocationAPI { private boolean isSmart = true; private LocationReceiverListener locationReceiverListener; + private SmartLocationBusiness smartLocationBusiness; + private Context context; + + public SmartLocationAPI(Context context) { + this.context = context; + + smartLocationBusiness = new SmartLocationBusiness(); + smartLocationBusiness.setSmart(isSmart); + } public void smart(boolean isSmart) { this.isSmart = isSmart; + smartLocationBusiness.setSmart(isSmart); } public boolean isSmart() { @@ -21,10 +34,16 @@ public class SmartLocationAPI } public void customLocation(CustomLocation customLocation) { - + smartLocationBusiness.setCustomLocation(customLocation); } - public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) { + public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) + { + smartLocationBusiness.start(context); this.locationReceiverListener = locationReceiverListener; } + + public void pause() { + smartLocationBusiness.pause(context); + } } diff --git a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/SmartLocationBusiness.java b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/SmartLocationBusiness.java index b69a34f..be8523b 100644 --- a/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/SmartLocationBusiness.java +++ b/SampleEasyLocator/easylocator/src/main/java/com/pureix/easylocator/service/SmartLocationBusiness.java @@ -1,8 +1,103 @@ package com.pureix.easylocator.service; +import android.content.Context; +import android.widget.Toast; + +import com.google.android.gms.location.DetectedActivity; +import com.pureix.easylocator.controller.service.ActivityRecognitionAPI; +import com.pureix.easylocator.model.bean.CustomLocation; +import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener; + +import java.util.ArrayList; + /** * Created by MelDiSooQi on 2/18/2017. */ public class SmartLocationBusiness { + + private CustomLocation customLocation; + private boolean smart; + + public void start(final Context context) { + if(smart) { + ActivityRecognitionAPI.start(context); + + ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() { + @Override + public void updateDetectedActivitiesList(ArrayList updatedActivities) { + ArrayList activityArrayList = + ActivityRecognitionAPI.getArrayList(updatedActivities); + + DetectedActivity detectedActivity = null; + int biggestNumber = -1; + for (int i = 0; i < activityArrayList.size(); i++) { + DetectedActivity currentActivity = activityArrayList.get(i); + int confidence = activityArrayList.get(i).getConfidence(); + + if (biggestNumber < confidence) { + biggestNumber = confidence; + detectedActivity = currentActivity; + } + } + Toast.makeText(context, + ActivityRecognitionAPI.getActivityString(context, + detectedActivity.getType()) + " - " + + detectedActivity.getConfidence() + + "%" + "\n", Toast.LENGTH_SHORT).show(); + decideAction(detectedActivity); + } + }); + }else{ + // if not smart use User Custom Location + } + } + + private void decideAction(DetectedActivity detectedActivity) { + int type = detectedActivity.getType(); + + if(DetectedActivity.STILL == type){ + + } + + if(DetectedActivity.ON_FOOT == type){ + + } + + if(DetectedActivity.WALKING == type){ + + } + + if(DetectedActivity.RUNNING == type){ + + } + + if(DetectedActivity.ON_BICYCLE == type){ + + } + + if(DetectedActivity.IN_VEHICLE == type){ + + } + + if(DetectedActivity.TILTING == type){ + + } + + if(DetectedActivity.UNKNOWN == type){ + + } + } + + public void setCustomLocation(CustomLocation customLocation) { + this.customLocation = customLocation; + } + + public void setSmart(boolean smart) { + this.smart = smart; + } + + public void pause(Context context) { + ActivityRecognitionAPI.start(context); + } }