Add SmartLocationAPI V 0.2 Not Completed
This commit is contained in:
parent
0700dcb625
commit
4eabcfca5a
|
|
@ -17,7 +17,7 @@ import com.pureix.easylocator.controller.service.BatteryAPI;
|
||||||
import com.pureix.easylocator.controller.service.InternetAPI;
|
import com.pureix.easylocator.controller.service.InternetAPI;
|
||||||
import com.pureix.easylocator.controller.service.LocationAPI;
|
import com.pureix.easylocator.controller.service.LocationAPI;
|
||||||
import com.pureix.easylocator.controller.service.SmartLocationAPI;
|
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.batteryService.listener.BatteryReceiverListener;
|
||||||
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
|
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
|
||||||
import com.pureix.easylocator.service.internetService.listener.ConnectivityReceiverListener;
|
import com.pureix.easylocator.service.internetService.listener.ConnectivityReceiverListener;
|
||||||
|
|
@ -28,6 +28,8 @@ import java.util.ArrayList;
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private TextView txt;
|
private TextView txt;
|
||||||
|
private LocationAPI locationAPI;
|
||||||
|
private ActivityRecognitionAPI activityRecognitionAPI;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -37,16 +39,16 @@ public class MainActivity extends AppCompatActivity {
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
txt = (TextView) findViewById(R.id.txt);
|
txt = (TextView) findViewById(R.id.txt);
|
||||||
|
activityRecognitionAPI = new ActivityRecognitionAPI(MainActivity.this);
|
||||||
ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener()
|
activityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void updateDetectedActivitiesList(ArrayList<DetectedActivity> updatedActivities) {
|
public void updateDetectedActivitiesList(ArrayList<DetectedActivity> updatedActivities) {
|
||||||
//Toast.makeText(MainActivity.this, "okay", Toast.LENGTH_SHORT).show();
|
//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++) {
|
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).getType()) +" - "
|
||||||
+ tempList.get(i).getConfidence()+ "%"+"\n");
|
+ 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
|
@Override
|
||||||
public void getLastKnownLocation(Location location) {
|
public void getLastKnownLocation(Location location) {
|
||||||
txt.append("getLastKnownLocation "+location+"\n\n");
|
txt.append("getLastKnownLocation "+location+"\n\n");
|
||||||
|
|
@ -93,7 +96,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
SmartLocationAPI smartLocationAPI = new SmartLocationAPI(MainActivity.this);
|
SmartLocationAPI smartLocationAPI = new SmartLocationAPI(MainActivity.this);
|
||||||
smartLocationAPI.smart(true);
|
smartLocationAPI.smart(true);
|
||||||
if(!smartLocationAPI.isSmart()) {
|
if(!smartLocationAPI.isSmart()) {
|
||||||
smartLocationAPI.customLocation(new CustomLocation());
|
smartLocationAPI.customLocation(new CustomSettingsLocation());
|
||||||
}
|
}
|
||||||
smartLocationAPI.setLocationReceiverListener(new LocationReceiverListener() {
|
smartLocationAPI.setLocationReceiverListener(new LocationReceiverListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -145,21 +148,22 @@ public class MainActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
ActivityRecognitionAPI.start(MainActivity.this);
|
activityRecognitionAPI.start();
|
||||||
LocationAPI.start(MainActivity.this);
|
locationAPI.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
ActivityRecognitionAPI.pause(MainActivity.this);
|
activityRecognitionAPI.pause();
|
||||||
LocationAPI.pause(MainActivity.this);
|
locationAPI.pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[],
|
public void onRequestPermissionsResult(int requestCode, String permissions[],
|
||||||
int[] grantResults) {
|
int[] grantResults) {
|
||||||
LocationAPI.onRequestPermissionsResult(requestCode, permissions,
|
locationAPI.requestPermission(MainActivity.this);
|
||||||
|
locationAPI.onRequestPermissionsResult(requestCode, permissions,
|
||||||
grantResults);
|
grantResults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,10 @@ import com.pureix.easylocator.service.activityRecognitionService.listener.Activi
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
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.
|
* Created by MelDiSooQi on 2/11/2017.
|
||||||
|
|
@ -19,13 +23,26 @@ import java.util.HashMap;
|
||||||
|
|
||||||
public class ActivityRecognitionAPI
|
public class ActivityRecognitionAPI
|
||||||
{
|
{
|
||||||
|
private static int instanceCounter;
|
||||||
|
|
||||||
|
private Context context;
|
||||||
public static final int[] MONITORED_ACTIVITIES = Constants.MONITORED_ACTIVITIES;
|
public static final int[] MONITORED_ACTIVITIES = Constants.MONITORED_ACTIVITIES;
|
||||||
private static ArrayAdapter<DetectedActivity> arrayAdapter;
|
private ArrayAdapter<DetectedActivity> arrayAdapter;
|
||||||
|
|
||||||
private static InitializeActivityRecognitionBroadcast broadcast;
|
private InitializeActivityRecognitionBroadcast broadcast;
|
||||||
public static ActivityRecognitionListener activitiesRecognitionListener;
|
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);
|
Intent i = new Intent(context, ActivitiesRecognitionService.class);
|
||||||
context.stopService(i);
|
context.stopService(i);
|
||||||
|
|
@ -35,22 +52,35 @@ public class ActivityRecognitionAPI
|
||||||
broadcast.onResume(context);
|
broadcast.onResume(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void pause(Context context)
|
public void pause()
|
||||||
{
|
{
|
||||||
broadcast.onPause(context);
|
broadcast.onPause(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setActivitiesRecognitionListener(ActivityRecognitionListener activitiesRecognitionListener) {
|
public void setActivitiesRecognitionListener(ActivityRecognitionListener activitiesRecognitionListener) {
|
||||||
ActivityRecognitionAPI.activitiesRecognitionListener = 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}
|
* Process list of recently detected activities and updates the list of {@code DetectedActivity}
|
||||||
* objects backing this adapter.
|
* objects backing this adapter.
|
||||||
*
|
*
|
||||||
* @param detectedActivities the freshly detected activities
|
* @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<>();
|
HashMap<Integer, Integer> detectedActivitiesMap = new HashMap<>();
|
||||||
for (DetectedActivity activity : detectedActivities) {
|
for (DetectedActivity activity : detectedActivities) {
|
||||||
|
|
@ -73,7 +103,7 @@ public class ActivityRecognitionAPI
|
||||||
return tempList;
|
return tempList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayAdapter<DetectedActivity> getArrayAdapter(ArrayList<DetectedActivity> tempList)
|
public ArrayAdapter<DetectedActivity> getArrayAdapter(ArrayList<DetectedActivity> tempList)
|
||||||
{
|
{
|
||||||
// Remove all items.
|
// Remove all items.
|
||||||
arrayAdapter.clear();
|
arrayAdapter.clear();
|
||||||
|
|
@ -87,7 +117,7 @@ public class ActivityRecognitionAPI
|
||||||
return arrayAdapter;
|
return arrayAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getActivityString(Context context, int detectedActivityType) {
|
public String getActivityString(Context context, int detectedActivityType) {
|
||||||
return Constants.getActivityString(context, detectedActivityType);
|
return Constants.getActivityString(context, detectedActivityType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,26 +3,46 @@ package com.pureix.easylocator.controller.service;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.location.Location;
|
||||||
|
|
||||||
import com.pureix.easylocator.service.activityRecognitionService.ActivitiesRecognitionService;
|
import com.pureix.easylocator.service.activityRecognitionService.ActivitiesRecognitionService;
|
||||||
import com.pureix.easylocator.service.activityRecognitionService.broadcastReceiver.InitializeActivityRecognitionBroadcast;
|
import com.pureix.easylocator.service.activityRecognitionService.broadcastReceiver.InitializeActivityRecognitionBroadcast;
|
||||||
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
||||||
import com.pureix.easylocator.service.locatonService.LocationService;
|
import com.pureix.easylocator.service.locatonService.LocationService;
|
||||||
import com.pureix.easylocator.service.locatonService.broadcastReceiver.InitializeLocationBroadcast;
|
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 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.
|
* Created by MelDiSooQi on 2/11/2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class LocationAPI
|
public class LocationAPI
|
||||||
{
|
{
|
||||||
private static InitializeLocationBroadcast broadcast;
|
private static int instanceCounter;
|
||||||
private static LocationPermission locationPermission;
|
|
||||||
public static LocationReceiverListener locationReceiverListener;
|
|
||||||
|
|
||||||
|
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 = new InitializeLocationBroadcast();
|
||||||
broadcast.onResume(context);
|
broadcast.onResume(context);
|
||||||
|
|
@ -32,20 +52,42 @@ public class LocationAPI
|
||||||
context.startService(i);
|
context.startService(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void pause(Context context)
|
public void pause()
|
||||||
{
|
{
|
||||||
broadcast.onPause(context);
|
broadcast.onPause(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) {
|
public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener) {
|
||||||
LocationAPI.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);
|
locationPermission = new LocationPermission(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onRequestPermissionsResult(int requestCode, String permissions[],
|
public void onRequestPermissionsResult(int requestCode, String permissions[],
|
||||||
int[] grantResults) {
|
int[] grantResults) {
|
||||||
locationPermission.onRequestPermissionsResult(requestCode, permissions,
|
locationPermission.onRequestPermissionsResult(requestCode, permissions,
|
||||||
grantResults);
|
grantResults);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.pureix.easylocator.controller.service;
|
||||||
|
|
||||||
import android.content.Context;
|
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.SmartLocationBusiness;
|
||||||
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
||||||
|
|
||||||
|
|
@ -12,6 +12,8 @@ import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverLi
|
||||||
|
|
||||||
public class SmartLocationAPI
|
public class SmartLocationAPI
|
||||||
{
|
{
|
||||||
|
private static int instanceCounter;
|
||||||
|
|
||||||
private boolean isSmart = true;
|
private boolean isSmart = true;
|
||||||
private LocationReceiverListener locationReceiverListener;
|
private LocationReceiverListener locationReceiverListener;
|
||||||
private SmartLocationBusiness smartLocationBusiness;
|
private SmartLocationBusiness smartLocationBusiness;
|
||||||
|
|
@ -22,6 +24,11 @@ public class SmartLocationAPI
|
||||||
|
|
||||||
smartLocationBusiness = new SmartLocationBusiness();
|
smartLocationBusiness = new SmartLocationBusiness();
|
||||||
smartLocationBusiness.setSmart(isSmart);
|
smartLocationBusiness.setSmart(isSmart);
|
||||||
|
instanceCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getInstanceCounter() {
|
||||||
|
return instanceCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void smart(boolean isSmart) {
|
public void smart(boolean isSmart) {
|
||||||
|
|
@ -33,8 +40,8 @@ public class SmartLocationAPI
|
||||||
return isSmart;
|
return isSmart;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void customLocation(CustomLocation customLocation) {
|
public void customLocation(CustomSettingsLocation customSettingsLocation) {
|
||||||
smartLocationBusiness.setCustomLocation(customLocation);
|
smartLocationBusiness.setCustomSettingsLocation(customSettingsLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener)
|
public void setLocationReceiverListener(LocationReceiverListener locationReceiverListener)
|
||||||
|
|
@ -44,6 +51,6 @@ public class SmartLocationAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause() {
|
public void pause() {
|
||||||
smartLocationBusiness.pause(context);
|
smartLocationBusiness.pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
package com.pureix.easylocator.model.bean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by MelDiSooQi on 2/18/2017.
|
|
||||||
*/
|
|
||||||
public class CustomLocation {
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,5 +6,6 @@ package com.pureix.easylocator.model.storage;
|
||||||
public class LocalStorageConstant
|
public class LocalStorageConstant
|
||||||
{
|
{
|
||||||
//public final static String
|
//public final static String
|
||||||
public final static String LAST_KNOWN_LOCATION = "LAST_KNOWN_LOCATION";
|
public final static String LAST_KNOWN_LOCATION = "LAST_KNOWN_LOCATION";
|
||||||
|
public final static String CUSTOM_SETTINGS_LOCATION = "CUSTOM_SETTINGS_LOCATION";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,63 +1,104 @@
|
||||||
package com.pureix.easylocator.service;
|
package com.pureix.easylocator.service;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.location.Location;
|
||||||
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.android.gms.location.DetectedActivity;
|
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.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 com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.TimerTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by MelDiSooQi on 2/18/2017.
|
* Created by MelDiSooQi on 2/18/2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SmartLocationBusiness {
|
public class SmartLocationBusiness
|
||||||
|
{
|
||||||
|
private String TAG = "SmartBusinessTAG";
|
||||||
|
|
||||||
private CustomLocation customLocation;
|
|
||||||
private boolean smart;
|
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
|
||||||
if(smart) {
|
= LocationRequest.PRIORITY_HIGH_ACCURACY;
|
||||||
ActivityRecognitionAPI.start(context);
|
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;
|
||||||
|
|
||||||
ActivityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() {
|
public void start(Context context) {
|
||||||
@Override
|
this.context = context;
|
||||||
public void updateDetectedActivitiesList(ArrayList<DetectedActivity> updatedActivities) {
|
SmartBusiness();
|
||||||
ArrayList<DetectedActivity> activityArrayList =
|
}
|
||||||
ActivityRecognitionAPI.getArrayList(updatedActivities);
|
|
||||||
|
|
||||||
DetectedActivity detectedActivity = null;
|
private void SmartBusiness() {
|
||||||
int biggestNumber = -1;
|
customSettingsLocation = new CustomSettingsLocation();
|
||||||
for (int i = 0; i < activityArrayList.size(); i++) {
|
if(smart) {
|
||||||
DetectedActivity currentActivity = activityArrayList.get(i);
|
activityRecognitionAPI = new ActivityRecognitionAPI(context);
|
||||||
int confidence = activityArrayList.get(i).getConfidence();
|
|
||||||
|
|
||||||
if (biggestNumber < confidence) {
|
activityRecognitionAPI.start();
|
||||||
biggestNumber = confidence;
|
|
||||||
detectedActivity = currentActivity;
|
activityRecognitionAPI.setActivitiesRecognitionListener(new ActivityRecognitionListener() {
|
||||||
|
@Override
|
||||||
|
public void updateDetectedActivitiesList(ArrayList<DetectedActivity> updatedActivities) {
|
||||||
|
ArrayList<DetectedActivity> 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()
|
||||||
|
+ "%", Toast.LENGTH_SHORT).show();
|
||||||
|
decideAction(detectedActivity);
|
||||||
}
|
}
|
||||||
Toast.makeText(context,
|
});
|
||||||
ActivityRecognitionAPI.getActivityString(context,
|
}else{
|
||||||
detectedActivity.getType()) + " - "
|
// if not smart use User Custom Location
|
||||||
+ detectedActivity.getConfidence()
|
}
|
||||||
+ "%" + "\n", Toast.LENGTH_SHORT).show();
|
|
||||||
decideAction(detectedActivity);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}else{
|
|
||||||
// if not smart use User Custom Location
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final static int time = 1000;
|
||||||
|
|
||||||
private void decideAction(DetectedActivity detectedActivity) {
|
private void decideAction(DetectedActivity detectedActivity) {
|
||||||
int type = detectedActivity.getType();
|
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){
|
if(DetectedActivity.ON_FOOT == type){
|
||||||
|
|
@ -65,39 +106,114 @@ public class SmartLocationBusiness {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(DetectedActivity.WALKING == type){
|
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){
|
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){
|
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){
|
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){
|
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){
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
saveCustomSettingsLocationInLocalStorage(time, customSettingsLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCustomLocation(CustomLocation customLocation) {
|
private void saveCustomSettingsLocationInLocalStorage(int time,
|
||||||
this.customLocation = customLocation;
|
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) {
|
public void setSmart(boolean smart) {
|
||||||
this.smart = smart;
|
this.smart = smart;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause(Context context) {
|
public void pause() {
|
||||||
ActivityRecognitionAPI.start(context);
|
activityRecognitionAPI.pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,9 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.android.gms.location.DetectedActivity;
|
import com.google.android.gms.location.DetectedActivity;
|
||||||
import com.pureix.easylocator.controller.service.ActivityRecognitionAPI;
|
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.Constants;
|
||||||
|
import com.pureix.easylocator.service.activityRecognitionService.listener.ActivityRecognitionListener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
@ -16,7 +18,9 @@ public class ActivityRecognitionBroadcast extends BroadcastReceiver
|
||||||
{
|
{
|
||||||
protected static final String TAG = "activity-detection-response-receiver";
|
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() {
|
public ActivityRecognitionBroadcast() {
|
||||||
}
|
}
|
||||||
|
|
@ -27,10 +31,6 @@ public class ActivityRecognitionBroadcast extends BroadcastReceiver
|
||||||
ArrayList<DetectedActivity> updatedActivities =
|
ArrayList<DetectedActivity> updatedActivities =
|
||||||
intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);
|
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>();
|
// mDetectedActivities = new ArrayList<DetectedActivity>();
|
||||||
//
|
//
|
||||||
// // Set the confidence level of each monitored activity to zero.
|
// // 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));
|
// mDetectedActivities.add(new DetectedActivity(Constants.MONITORED_ACTIVITIES[i], 0));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if(ActivityRecognitionAPI.activitiesRecognitionListener != null) {
|
activitiesRecognitionObservable.setChange(updatedActivities);
|
||||||
ActivityRecognitionAPI
|
|
||||||
.activitiesRecognitionListener
|
|
||||||
.updateDetectedActivitiesList(updatedActivities);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,13 @@ public final class Constants {
|
||||||
// Milliseconds per second
|
// Milliseconds per second
|
||||||
private static final int MILLISECONDS_PER_SECOND = 1000;
|
private static final int MILLISECONDS_PER_SECOND = 1000;
|
||||||
// Update frequency in seconds
|
// 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
|
// Update frequency in milliseconds
|
||||||
public static final long UPDATE_INTERVAL = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
|
public static final long UPDATE_INTERVAL = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
|
||||||
// The fastest update frequency, 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
|
// A fast frequency ceiling in milliseconds
|
||||||
public static final long FASTEST_INTERVAL = MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
|
public static final long FASTEST_INTERVAL = MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
|
||||||
// Stores the lat / long pairs in a text file
|
// Stores the lat / long pairs in a text file
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import android.os.PowerManager;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.android.gms.common.ConnectionResult;
|
import com.google.android.gms.common.ConnectionResult;
|
||||||
import com.google.android.gms.common.GoogleApiAvailability;
|
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.LocationRequest;
|
||||||
import com.google.android.gms.location.LocationServices;
|
import com.google.android.gms.location.LocationServices;
|
||||||
import com.google.gson.Gson;
|
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.LocalStorage;
|
||||||
import com.pureix.easylocator.model.storage.LocalStorageConstant;
|
import com.pureix.easylocator.model.storage.LocalStorageConstant;
|
||||||
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
import com.pureix.easylocator.service.locatonService.Listener.LocationReceiverListener;
|
||||||
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast;
|
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationBroadcast;
|
||||||
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationSender;
|
import com.pureix.easylocator.service.locatonService.broadcastReceiver.LocationSender;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
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.
|
* 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 final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
|
||||||
|
|
||||||
private GoogleApiClient mGoogleApiClient;
|
private GoogleApiClient mGoogleApiClient;
|
||||||
|
private LocationReceiverListener locationReceiverListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class used for the client Binder. Because we know this service always
|
* 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
|
//update the location every some distance
|
||||||
//mLocationRequest.setSmallestDisplacement(10);
|
//mLocationRequest.setSmallestDisplacement(10);
|
||||||
|
|
||||||
|
|
||||||
|
//updateStatus(0);
|
||||||
|
|
||||||
|
|
||||||
servicesAvailable = servicesConnected();
|
servicesAvailable = servicesConnected();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -143,6 +152,56 @@ public class LocationService extends Service implements
|
||||||
setUpLocationClientIfNeeded();
|
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() {
|
private void setUpLocationClientIfNeeded() {
|
||||||
if (mGoogleApiClient == null)
|
if (mGoogleApiClient == null)
|
||||||
buildGoogleApiClient();
|
buildGoogleApiClient();
|
||||||
|
|
@ -374,6 +433,8 @@ public class LocationService extends Service implements
|
||||||
super.onTaskRemoved(rootIntent);
|
super.onTaskRemoved(rootIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int detectedActivityType = -1;
|
||||||
|
private int tempDetectedActivityType = -1;
|
||||||
// Define the callback method that receives location updates
|
// Define the callback method that receives location updates
|
||||||
@Override
|
@Override
|
||||||
public void onLocationChanged(Location location) {
|
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) {
|
// private void sendLocationToBroadcast(Location location) {
|
||||||
// senderHandler.sendLocationToApp(
|
// senderHandler.sendLocationToApp(
|
||||||
// location.getLatitude(),
|
// location.getLatitude(),
|
||||||
|
|
|
||||||
|
|
@ -7,15 +7,15 @@ import android.os.Bundle;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
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.Listener.LocationReceiverListener;
|
||||||
import com.pureix.easylocator.service.locatonService.ServicesConstant;
|
import com.pureix.easylocator.service.locatonService.ServicesConstant;
|
||||||
import com.pureix.easylocator.service.locatonService.bean.Location;
|
import com.pureix.easylocator.service.locatonService.bean.Location;
|
||||||
|
|
||||||
import static com.pureix.easylocator.controller.service.LocationAPI.locationReceiverListener;
|
|
||||||
|
|
||||||
public class LocationBroadcast extends BroadcastReceiver
|
public class LocationBroadcast extends BroadcastReceiver
|
||||||
{
|
{
|
||||||
// private static LocationReceiverListener locationReceiverListener;
|
public static ObservableHandler locationLastKnownLocationObservable = new ObservableHandler();
|
||||||
|
public static ObservableHandler locationChangedObservable = new ObservableHandler();
|
||||||
|
|
||||||
boolean isLocationInitialized = false;
|
boolean isLocationInitialized = false;
|
||||||
|
|
||||||
|
|
@ -65,14 +65,12 @@ public class LocationBroadcast extends BroadcastReceiver
|
||||||
android.location.Location location = new Gson()
|
android.location.Location location = new Gson()
|
||||||
.fromJson(jsonLocation, android.location.Location.class);
|
.fromJson(jsonLocation, android.location.Location.class);
|
||||||
|
|
||||||
if(locationReceiverListener != null) {
|
|
||||||
if ("LocalStorage".equals(location.getProvider())) {
|
if ("LocalStorage".equals(location.getProvider())) {
|
||||||
locationReceiverListener.getLastKnownLocation(location);
|
locationLastKnownLocationObservable.setChange(location);
|
||||||
}
|
}
|
||||||
if (!"LocalStorage".equals(location.getProvider())){
|
if (!"LocalStorage".equals(location.getProvider())){
|
||||||
locationReceiverListener.onLocationChanged(location);
|
locationChangedObservable.setChange(location);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
float kMeter = location.getSpeed() * 3.6f;
|
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();
|
//Toast.makeText(context, "AFrom BroadCast : "+s, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public static void addLocationListener(LocationReceiverListener locationReceiverListener)
|
|
||||||
// {
|
|
||||||
// LocationBroadcast.locationReceiverListener = locationReceiverListener;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue