Add SmartLocationAPI V 0.2 Not Completed

This commit is contained in:
MOATAZ IBRAHIM ELDESOUKI TAWFEEK MOHAMMED 2017-02-22 01:10:04 +02:00
parent 0700dcb625
commit 4eabcfca5a
13 changed files with 434 additions and 103 deletions

View File

@ -17,7 +17,7 @@ import com.pureix.easylocator.controller.service.BatteryAPI;
import com.pureix.easylocator.controller.service.InternetAPI;
import com.pureix.easylocator.controller.service.LocationAPI;
import com.pureix.easylocator.controller.service.SmartLocationAPI;
import com.pureix.easylocator.model.bean.CustomLocation;
import com.pureix.easylocator.model.bean.CustomSettingsLocation;
import com.pureix.easylocator.service.batteryService.listener.BatteryReceiverListener;
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
import com.pureix.easylocator.service.internetService.listener.ConnectivityReceiverListener;
@ -28,6 +28,8 @@ import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private TextView txt;
private LocationAPI locationAPI;
private ActivityRecognitionAPI activityRecognitionAPI;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -37,16 +39,16 @@ public class MainActivity extends AppCompatActivity {
setSupportActionBar(toolbar);
txt = (TextView) findViewById(R.id.txt);
ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener()
activityRecognitionAPI = new ActivityRecognitionAPI(MainActivity.this);
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);
ArrayList<DetectedActivity> tempList = activityRecognitionAPI.getArrayList(updatedActivities);
for (int i = 0; i < tempList.size(); i++) {
txt.append(ActivityRecognitionAPI.getActivityString(MainActivity.this,
txt.append(activityRecognitionAPI.getActivityString(MainActivity.this,
tempList.get(i).getType()) +" - "
+ tempList.get(i).getConfidence()+ "%"+"\n");
}
@ -74,7 +76,8 @@ public class MainActivity extends AppCompatActivity {
}
});
LocationAPI.setLocationReceiverListener(new LocationReceiverListener() {
locationAPI = new LocationAPI(MainActivity.this);
locationAPI.setLocationReceiverListener(new LocationReceiverListener() {
@Override
public void getLastKnownLocation(Location location) {
txt.append("getLastKnownLocation "+location+"\n\n");
@ -93,7 +96,7 @@ public class MainActivity extends AppCompatActivity {
SmartLocationAPI smartLocationAPI = new SmartLocationAPI(MainActivity.this);
smartLocationAPI.smart(true);
if(!smartLocationAPI.isSmart()) {
smartLocationAPI.customLocation(new CustomLocation());
smartLocationAPI.customLocation(new CustomSettingsLocation());
}
smartLocationAPI.setLocationReceiverListener(new LocationReceiverListener() {
@Override
@ -145,21 +148,22 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onResume() {
super.onResume();
ActivityRecognitionAPI.start(MainActivity.this);
LocationAPI.start(MainActivity.this);
activityRecognitionAPI.start();
locationAPI.start();
}
@Override
protected void onPause() {
super.onPause();
ActivityRecognitionAPI.pause(MainActivity.this);
LocationAPI.pause(MainActivity.this);
activityRecognitionAPI.pause();
locationAPI.pause();
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[],
int[] grantResults) {
LocationAPI.onRequestPermissionsResult(requestCode, permissions,
locationAPI.requestPermission(MainActivity.this);
locationAPI.onRequestPermissionsResult(requestCode, permissions,
grantResults);
}
}

View File

@ -12,6 +12,10 @@ import com.pureix.easylocator.service.activityRecognitionService.listener.Activi
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Observable;
import java.util.Observer;
import static com.pureix.easylocator.service.activityRecognitionService.broadcastReceiver.ActivityRecognitionBroadcast.activitiesRecognitionObservable;
/**
* Created by MelDiSooQi on 2/11/2017.
@ -19,13 +23,26 @@ import java.util.HashMap;
public class ActivityRecognitionAPI
{
private static int instanceCounter;
private Context context;
public static final int[] MONITORED_ACTIVITIES = Constants.MONITORED_ACTIVITIES;
private static ArrayAdapter<DetectedActivity> arrayAdapter;
private ArrayAdapter<DetectedActivity> arrayAdapter;
private static InitializeActivityRecognitionBroadcast broadcast;
public static ActivityRecognitionListener activitiesRecognitionListener;
private InitializeActivityRecognitionBroadcast broadcast;
private ActivityRecognitionListener activitiesRecognitionListener;
public static void start(Context context)
public ActivityRecognitionAPI(Context context) {
this.context = context;
instanceCounter++;
}
public static int getInstanceCounter() {
return instanceCounter;
}
public void start()
{
Intent i = new Intent(context, ActivitiesRecognitionService.class);
context.stopService(i);
@ -35,22 +52,35 @@ public class ActivityRecognitionAPI
broadcast.onResume(context);
}
public static void pause(Context context)
public void pause()
{
broadcast.onPause(context);
}
public static void setActivitiesRecognitionListener(ActivityRecognitionListener activitiesRecognitionListener) {
ActivityRecognitionAPI.activitiesRecognitionListener = activitiesRecognitionListener;
public void setActivitiesRecognitionListener(ActivityRecognitionListener activitiesRecognitionListener) {
this.activitiesRecognitionListener = activitiesRecognitionListener;
createListener();
}
private void createListener() {
activitiesRecognitionObservable.addObserver(new Observer() {
@Override
public void update(Observable o, Object updatedActivities) {
if(activitiesRecognitionListener != null) {
activitiesRecognitionListener
.updateDetectedActivitiesList(
(ArrayList<DetectedActivity>) updatedActivities);
}
}
});
}
/**
* 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)
public ArrayList<DetectedActivity> getArrayList(ArrayList<DetectedActivity> detectedActivities)
{
HashMap<Integer, Integer> detectedActivitiesMap = new HashMap<>();
for (DetectedActivity activity : detectedActivities) {
@ -73,7 +103,7 @@ public class ActivityRecognitionAPI
return tempList;
}
public static ArrayAdapter<DetectedActivity> getArrayAdapter(ArrayList<DetectedActivity> tempList)
public ArrayAdapter<DetectedActivity> getArrayAdapter(ArrayList<DetectedActivity> tempList)
{
// Remove all items.
arrayAdapter.clear();
@ -87,7 +117,7 @@ public class ActivityRecognitionAPI
return arrayAdapter;
}
public static String getActivityString(Context context, int detectedActivityType) {
public String getActivityString(Context context, int detectedActivityType) {
return Constants.getActivityString(context, detectedActivityType);
}
}

View File

@ -3,26 +3,46 @@ package com.pureix.easylocator.controller.service;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import com.pureix.easylocator.service.activityRecognitionService.ActivitiesRecognitionService;
import com.pureix.easylocator.service.activityRecognitionService.broadcastReceiver.InitializeActivityRecognitionBroadcast;
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
import com.pureix.easylocator.service.locatonService.LocationService;
import com.pureix.easylocator.service.locatonService.broadcastReceiver.InitializeLocationBroadcast;
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast;
import com.pureix.easylocator.service.locatonService.permission.LocationPermission;
import java.util.Observable;
import java.util.Observer;
import static com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast.locationChangedObservable;
import static com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast.locationLastKnownLocationObservable;
/**
* Created by MelDiSooQi on 2/11/2017.
*/
public class LocationAPI
{
private static InitializeLocationBroadcast broadcast;
private static LocationPermission locationPermission;
public static LocationReceiverListener locationReceiverListener;
private static int instanceCounter;
private Context context;
private InitializeLocationBroadcast broadcast;
private LocationPermission locationPermission;
private LocationReceiverListener locationReceiverListener;
public static void start(Context context)
public LocationAPI(Context context)
{
this.context = context;
instanceCounter++;
}
public static int getInstanceCounter() {
return instanceCounter;
}
public void start()
{
broadcast = new InitializeLocationBroadcast();
broadcast.onResume(context);
@ -32,20 +52,42 @@ public class LocationAPI
context.startService(i);
}
public static void pause(Context context)
public void pause()
{
broadcast.onPause(context);
}
public static void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) {
LocationAPI.locationReceiverListener = locationReceiverListener;
public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) {
this.locationReceiverListener = locationReceiverListener;
createListener();
}
public static void requestPermission(Activity activity){
private void createListener() {
locationLastKnownLocationObservable.addObserver(new Observer() {
@Override
public void update(Observable o, Object location) {
if(locationReceiverListener != null) {
locationReceiverListener.getLastKnownLocation((Location) location);
}
}
});
locationChangedObservable.addObserver(new Observer() {
@Override
public void update(Observable o, Object location) {
if(locationReceiverListener != null) {
locationReceiverListener.onLocationChanged((Location) location);
}
}
});
}
public void requestPermission(Activity activity){
locationPermission = new LocationPermission(activity);
}
public static void onRequestPermissionsResult(int requestCode, String permissions[],
public void onRequestPermissionsResult(int requestCode, String permissions[],
int[] grantResults) {
locationPermission.onRequestPermissionsResult(requestCode, permissions,
grantResults);

View File

@ -2,7 +2,7 @@ package com.pureix.easylocator.controller.service;
import android.content.Context;
import com.pureix.easylocator.model.bean.CustomLocation;
import com.pureix.easylocator.model.bean.CustomSettingsLocation;
import com.pureix.easylocator.service.SmartLocationBusiness;
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
@ -12,6 +12,8 @@ import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverLi
public class SmartLocationAPI
{
private static int instanceCounter;
private boolean isSmart = true;
private LocationReceiverListener locationReceiverListener;
private SmartLocationBusiness smartLocationBusiness;
@ -22,6 +24,11 @@ public class SmartLocationAPI
smartLocationBusiness = new SmartLocationBusiness();
smartLocationBusiness.setSmart(isSmart);
instanceCounter++;
}
public static int getInstanceCounter() {
return instanceCounter;
}
public void smart(boolean isSmart) {
@ -33,8 +40,8 @@ public class SmartLocationAPI
return isSmart;
}
public void customLocation(CustomLocation customLocation) {
smartLocationBusiness.setCustomLocation(customLocation);
public void customLocation(CustomSettingsLocation customSettingsLocation) {
smartLocationBusiness.setCustomSettingsLocation(customSettingsLocation);
}
public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener)
@ -44,6 +51,6 @@ public class SmartLocationAPI
}
public void pause() {
smartLocationBusiness.pause(context);
smartLocationBusiness.pause();
}
}

View File

@ -0,0 +1,19 @@
package com.pureix.easylocator.model;
import java.util.Observable;
/**
* Created by M.Hayle on 6/28/2016.
*/
public class ObservableHandler extends Observable
{
public ObservableHandler()
{}
public void setChange(Object object)
{
setChanged();
notifyObservers(object);
}
}

View File

@ -1,7 +0,0 @@
package com.pureix.easylocator.model.bean;
/**
* Created by MelDiSooQi on 2/18/2017.
*/
public class CustomLocation {
}

View File

@ -0,0 +1,61 @@
package com.pureix.easylocator.model.bean;
/**
* Created by MelDiSooQi on 2/18/2017.
*/
public class CustomSettingsLocation {
private int priority;
private long interval;
private long fastestInterval;
private float smallestDisplacement;
private int detectedActivityType;
private String detectedActivityProvider;
public void setPriority(int priority) {
this.priority = priority;
}
public void setInterval(long interval) {
this.interval = interval;
}
public void setFastestInterval(long fastestInterval) {
this.fastestInterval = fastestInterval;
}
public void setSmallestDisplacement(float smallestDisplacement) {
this.smallestDisplacement = smallestDisplacement;
}
public void setDetectedActivityType(int detectedActivityType) {
this.detectedActivityType = detectedActivityType;
}
public void setDetectedActivityProvider(String detectedActivityProvider) {
this.detectedActivityProvider = detectedActivityProvider;
}
public int getPriority() {
return priority;
}
public long getInterval() {
return interval;
}
public long getFastestInterval() {
return fastestInterval;
}
public float getSmallestDisplacement() {
return smallestDisplacement;
}
public int getDetectedActivityType() {
return detectedActivityType;
}
public String getDetectedActivityProvider() {
return detectedActivityProvider;
}
}

View File

@ -7,4 +7,5 @@ public class LocalStorageConstant
{
//public final static String
public final static String LAST_KNOWN_LOCATION = "LAST_KNOWN_LOCATION";
public final static String CUSTOM_SETTINGS_LOCATION = "CUSTOM_SETTINGS_LOCATION";
}

View File

@ -1,33 +1,64 @@
package com.pureix.easylocator.service;
import android.content.Context;
import android.location.Location;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.location.DetectedActivity;
import com.google.android.gms.location.LocationRequest;
import com.google.gson.Gson;
import com.pureix.easylocator.controller.service.ActivityRecognitionAPI;
import com.pureix.easylocator.model.bean.CustomLocation;
import com.pureix.easylocator.model.ObservableHandler;
import com.pureix.easylocator.model.bean.CustomSettingsLocation;
import com.pureix.easylocator.model.storage.LocalStorage;
import com.pureix.easylocator.model.storage.LocalStorageConstant;
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
/**
* Created by MelDiSooQi on 2/18/2017.
*/
public class SmartLocationBusiness {
public class SmartLocationBusiness
{
private String TAG = "SmartBusinessTAG";
private CustomLocation customLocation;
private boolean smart;
private Context context;
private CustomSettingsLocation customSettingsLocation;
private ActivityRecognitionAPI activityRecognitionAPI;
public void start(final Context context) {
public static final int LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY
= LocationRequest.PRIORITY_HIGH_ACCURACY;
public static final int LOCATION_PRIORITY_PRIORITY_BALANCED_POWER_ACCURACY
= LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
public static final int LOCATION_PRIORITY_PRIORITY_LOW_POWER
= LocationRequest.PRIORITY_LOW_POWER;
public static final int LOCATION_PRIORITY_PRIORITY_NO_POWER
= LocationRequest.PRIORITY_NO_POWER;
private Timer mtimer;
public void start(Context context) {
this.context = context;
SmartBusiness();
}
private void SmartBusiness() {
customSettingsLocation = new CustomSettingsLocation();
if(smart) {
ActivityRecognitionAPI.start(context);
activityRecognitionAPI = new ActivityRecognitionAPI(context);
ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() {
activityRecognitionAPI.start();
activityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() {
@Override
public void updateDetectedActivitiesList(ArrayList<DetectedActivity> updatedActivities) {
ArrayList<DetectedActivity> activityArrayList =
ActivityRecognitionAPI.getArrayList(updatedActivities);
activityRecognitionAPI.getArrayList(updatedActivities);
DetectedActivity detectedActivity = null;
int biggestNumber = -1;
@ -41,10 +72,10 @@ public class SmartLocationBusiness {
}
}
Toast.makeText(context,
ActivityRecognitionAPI.getActivityString(context,
activityRecognitionAPI.getActivityString(context,
detectedActivity.getType()) + " - "
+ detectedActivity.getConfidence()
+ "%" + "\n", Toast.LENGTH_SHORT).show();
+ "%", Toast.LENGTH_SHORT).show();
decideAction(detectedActivity);
}
});
@ -53,11 +84,21 @@ public class SmartLocationBusiness {
}
}
private final static int time = 1000;
private void decideAction(DetectedActivity detectedActivity) {
int type = detectedActivity.getType();
if(DetectedActivity.STILL == type){
customSettingsLocation = new CustomSettingsLocation();
if(DetectedActivity.STILL == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_LOW_POWER);
customSettingsLocation.setInterval(60 * 1000);
customSettingsLocation.setFastestInterval(60 * 1000);
customSettingsLocation.setSmallestDisplacement(10);
}
if(DetectedActivity.ON_FOOT == type){
@ -65,39 +106,114 @@ public class SmartLocationBusiness {
}
if(DetectedActivity.WALKING == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_BALANCED_POWER_ACCURACY);
customSettingsLocation.setInterval(10 * 1000);
customSettingsLocation.setFastestInterval(10 * 1000);
customSettingsLocation.setSmallestDisplacement(5);
}
if(DetectedActivity.RUNNING == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY);
customSettingsLocation.setInterval(4 * 1000);
customSettingsLocation.setFastestInterval(4 * 1000);
customSettingsLocation.setSmallestDisplacement(4);
}
if(DetectedActivity.ON_BICYCLE == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY);
customSettingsLocation.setInterval(4 * 1000);
customSettingsLocation.setFastestInterval(4 * 1000);
customSettingsLocation.setSmallestDisplacement(8);
}
if(DetectedActivity.IN_VEHICLE == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY);
customSettingsLocation.setInterval(2 * 1000);
customSettingsLocation.setFastestInterval(2 * 1000);
customSettingsLocation.setSmallestDisplacement(10);
}
if(DetectedActivity.TILTING == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY);
customSettingsLocation.setInterval(2 * 1000);
customSettingsLocation.setFastestInterval(2 * 1000);
customSettingsLocation.setSmallestDisplacement(10);
}
if(DetectedActivity.UNKNOWN == type){
customSettingsLocation.setDetectedActivityType(type);
customSettingsLocation.setDetectedActivityProvider(activityRecognitionAPI.getActivityString(context, detectedActivity.getType()));
}
customSettingsLocation.setPriority(LOCATION_PRIORITY_PRIORITY_HIGH_ACCURACY);
customSettingsLocation.setInterval(2 * 1000);
customSettingsLocation.setFastestInterval(2 * 1000);
customSettingsLocation.setSmallestDisplacement(10);
}
public void setCustomLocation(CustomLocation customLocation) {
this.customLocation = customLocation;
saveCustomSettingsLocationInLocalStorage(time, customSettingsLocation);
}
private void saveCustomSettingsLocationInLocalStorage(int time,
final CustomSettingsLocation customSettingsLocation)
{
if(mtimer != null) {
mtimer.cancel();
}
mtimer = new Timer();
mtimer.schedule(new TimerTask() {
@Override
public void run() {
new Thread(new Runnable() {
@Override
public void run() {
setCustomSettingsLocationInLocalStorage(customSettingsLocation);
}
}).start();
}
}, time);
}
private CustomSettingsLocation getCustomSettingsLocationInLocalStorage() {
String jsonLocation = (String) LocalStorage.getPreference(context,
LocalStorageConstant.CUSTOM_SETTINGS_LOCATION, null);
return new Gson().fromJson(jsonLocation, CustomSettingsLocation.class);
}
private void setCustomSettingsLocationInLocalStorage(
CustomSettingsLocation customSettingsLocation)
{
Log.e(TAG, "setCustomSettingsLocationInLocalStorage");
String jsonLocation = new Gson().toJson(customSettingsLocation);
LocalStorage.setPreference(context,
LocalStorageConstant.CUSTOM_SETTINGS_LOCATION,
jsonLocation);
}
public void setCustomSettingsLocation(CustomSettingsLocation customSettingsLocation) {
this.customSettingsLocation = customSettingsLocation;
}
public void setSmart(boolean smart) {
this.smart = smart;
}
public void pause(Context context) {
ActivityRecognitionAPI.start(context);
public void pause() {
activityRecognitionAPI.pause();
}
}

View File

@ -8,7 +8,9 @@ import android.widget.Toast;
import com.google.android.gms.location.DetectedActivity;
import com.pureix.easylocator.controller.service.ActivityRecognitionAPI;
import com.pureix.easylocator.model.ObservableHandler;
import com.pureix.easylocator.service.activityRecognitionService.Constants;
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
import java.util.ArrayList;
@ -16,7 +18,9 @@ public class ActivityRecognitionBroadcast extends BroadcastReceiver
{
protected static final String TAG = "activity-detection-response-receiver";
private ArrayList<DetectedActivity> mDetectedActivities;
public static ObservableHandler activitiesRecognitionObservable = new ObservableHandler();
// private ArrayList<DetectedActivity> mDetectedActivities;
public ActivityRecognitionBroadcast() {
}
@ -27,10 +31,6 @@ public class ActivityRecognitionBroadcast extends BroadcastReceiver
ArrayList<DetectedActivity> updatedActivities =
intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);
// Log.d("mezoTag", "okay here we are hhhhh");
// Toast.makeText(context, "okay here we are hhhhh", Toast.LENGTH_SHORT).show();
// mDetectedActivities = new ArrayList<DetectedActivity>();
//
// // Set the confidence level of each monitored activity to zero.
@ -38,10 +38,6 @@ public class ActivityRecognitionBroadcast extends BroadcastReceiver
// mDetectedActivities.add(new DetectedActivity(Constants.MONITORED_ACTIVITIES[i], 0));
// }
if(ActivityRecognitionAPI.activitiesRecognitionListener != null) {
ActivityRecognitionAPI
.activitiesRecognitionListener
.updateDetectedActivitiesList(updatedActivities);
}
activitiesRecognitionObservable.setChange(updatedActivities);
}
}

View File

@ -5,11 +5,13 @@ public final class Constants {
// Milliseconds per second
private static final int MILLISECONDS_PER_SECOND = 1000;
// Update frequency in seconds
private static final int UPDATE_INTERVAL_IN_SECONDS = 60;
// private static final int UPDATE_INTERVAL_IN_SECONDS = 60;
private static final int UPDATE_INTERVAL_IN_SECONDS = 1;
// Update frequency in milliseconds
public static final long UPDATE_INTERVAL = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
// The fastest update frequency, in seconds
private static final int FASTEST_INTERVAL_IN_SECONDS = 60;
// private static final int FASTEST_INTERVAL_IN_SECONDS = 60;
private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
// A fast frequency ceiling in milliseconds
public static final long FASTEST_INTERVAL = MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
// Stores the lat / long pairs in a text file

View File

@ -12,6 +12,7 @@ import android.os.PowerManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
@ -21,17 +22,20 @@ import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.gson.Gson;
import com.pureix.easylocator.model.bean.CustomSettingsLocation;
import com.pureix.easylocator.model.storage.LocalStorage;
import com.pureix.easylocator.model.storage.LocalStorageConstant;
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast;
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationSender;
import java.util.Observable;
import java.util.Observer;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import static com.pureix.easylocator.controller.service.LocationAPI.locationReceiverListener;
import static com.pureix.easylocator.service.SmartLocationBusiness.smartLocationBusinessObservable;
/**
* Created by MelDiSooQi on 1/28/2017.
@ -60,6 +64,7 @@ public class LocationService extends Service implements
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
private GoogleApiClient mGoogleApiClient;
private LocationReceiverListener locationReceiverListener;
/**
* Class used for the client Binder. Because we know this service always
@ -134,6 +139,10 @@ public class LocationService extends Service implements
//update the location every some distance
//mLocationRequest.setSmallestDisplacement(10);
//updateStatus(0);
servicesAvailable = servicesConnected();
/*
@ -143,6 +152,56 @@ public class LocationService extends Service implements
setUpLocationClientIfNeeded();
}
Timer mtimer2;
private void updateStatus(long time) {
mtimer2 = new Timer();
mtimer2.schedule(new TimerTask() {
@Override
public void run() {
new Thread(new Runnable() {
@Override
public void run() {
CustomSettingsLocation customSettingsLocation
= getCustomSettingsLocationInLocalStorage();
if(customSettingsLocation != null)
{
detectedActivityType = customSettingsLocation.getDetectedActivityType();
//Toast.makeText(context, ">>>>"+customSettingsLocation.getDetectedActivityProvider(), Toast.LENGTH_SHORT).show();
Log.d(TAG, ">>>>"+customSettingsLocation.getDetectedActivityProvider());
if(detectedActivityType != tempDetectedActivityType) {
mLocationRequest = LocationRequest.create();
// Use high accuracy
mLocationRequest.setPriority(customSettingsLocation.getPriority());
// Set the update interval to 5 seconds
mLocationRequest.setInterval(customSettingsLocation.getInterval());
// mLocationRequest.setInterval(1000);
// Set the fastest update interval to 1 second
// mLocationRequest.setFastestInterval(1000);
mLocationRequest.setFastestInterval(customSettingsLocation.getFastestInterval());
//update the location every some distance
mLocationRequest.setSmallestDisplacement(customSettingsLocation.getSmallestDisplacement());
tempDetectedActivityType = detectedActivityType;
}
}
updateStatus(500);
}
}).start();
}
}, time);
if (mGoogleApiClient != null) {
if (mGoogleApiClient.isConnected()) {
LocationServices
.FusedLocationApi
.requestLocationUpdates(mGoogleApiClient,
mLocationRequest,
LocationService.this);
}
}
}
private void setUpLocationClientIfNeeded() {
if (mGoogleApiClient == null)
buildGoogleApiClient();
@ -374,6 +433,8 @@ public class LocationService extends Service implements
super.onTaskRemoved(rootIntent);
}
private int detectedActivityType = -1;
private int tempDetectedActivityType = -1;
// Define the callback method that receives location updates
@Override
public void onLocationChanged(Location location) {
@ -392,6 +453,12 @@ public class LocationService extends Service implements
}
}
private CustomSettingsLocation getCustomSettingsLocationInLocalStorage() {
String jsonLocation = (String) LocalStorage.getPreference(context,
LocalStorageConstant.CUSTOM_SETTINGS_LOCATION, null);
return new Gson().fromJson(jsonLocation, CustomSettingsLocation.class);
}
// private void sendLocationToBroadcast(Location location) {
// senderHandler.sendLocationToApp(
// location.getLatitude(),

View File

@ -7,15 +7,15 @@ import android.os.Bundle;
import android.widget.Toast;
import com.google.gson.Gson;
import com.pureix.easylocator.model.ObservableHandler;
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
import com.pureix.easylocator.service.locatonService.ServicesConstant;
import com.pureix.easylocator.service.locatonService.bean.Location;
import static com.pureix.easylocator.controller.service.LocationAPI.locationReceiverListener;
public class LocationBroadcast extends BroadcastReceiver
{
// private static LocationReceiverListener locationReceiverListener;
public static ObservableHandler locationLastKnownLocationObservable = new ObservableHandler();
public static ObservableHandler locationChangedObservable = new ObservableHandler();
boolean isLocationInitialized = false;
@ -65,13 +65,11 @@ public class LocationBroadcast extends BroadcastReceiver
android.location.Location location = new Gson()
.fromJson(jsonLocation, android.location.Location.class);
if(locationReceiverListener != null) {
if ("LocalStorage".equals(location.getProvider())) {
locationReceiverListener.getLastKnownLocation(location);
locationLastKnownLocationObservable.setChange(location);
}
if (!"LocalStorage".equals(location.getProvider())){
locationReceiverListener.onLocationChanged(location);
}
locationChangedObservable.setChange(location);
}
float kMeter = location.getSpeed() * 3.6f;
@ -87,9 +85,4 @@ public class LocationBroadcast extends BroadcastReceiver
//Toast.makeText(context, "AFrom BroadCast : "+s, Toast.LENGTH_SHORT).show();
}
}
// public static void addLocationListener(LocationReceiverListener locationReceiverListener)
// {
// LocationBroadcast.locationReceiverListener = locationReceiverListener;
// }
}