Merge branch 'feature/#53'
This commit is contained in:
Binary file not shown.
@@ -13,7 +13,7 @@
|
|||||||
android:id="@+id/mapview"
|
android:id="@+id/mapview"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:apiKey="0rKmsWMM0D-K15bEM_kwabPbNhsn4dp4rcq2q5Q" />
|
android:apiKey="0rKmsWMM0D-LWOndcfwrmW-S0OXlnQl2SJCMeTg" />
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/mapProgressBar"
|
android:id="@+id/mapProgressBar"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import android.telephony.TelephonyManager;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.TwentyCodes.android.debug.Debug;
|
import com.TwentyCodes.android.debug.Debug;
|
||||||
|
import com.TwentyCodes.android.debug.LocationLibraryConstants;
|
||||||
import com.skyhookwireless.wps.RegistrationCallback;
|
import com.skyhookwireless.wps.RegistrationCallback;
|
||||||
import com.skyhookwireless.wps.WPSAuthentication;
|
import com.skyhookwireless.wps.WPSAuthentication;
|
||||||
import com.skyhookwireless.wps.XPS;
|
import com.skyhookwireless.wps.XPS;
|
||||||
@@ -60,7 +61,7 @@ public class SkyHookRegistration{
|
|||||||
*/
|
*/
|
||||||
public static String getUserName(final Context context){
|
public static String getUserName(final Context context){
|
||||||
|
|
||||||
switch(Debug.DEFAULT_REGISTRATION_BEHAVIOR){
|
switch(LocationLibraryConstants.DEFAULT_REGISTRATION_BEHAVIOR){
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
if(tm == null)
|
if(tm == null)
|
||||||
|
|||||||
@@ -13,13 +13,14 @@ import android.app.Service;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import android.location.LocationManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.TwentyCodes.android.debug.Debug;
|
import com.TwentyCodes.android.debug.LocationLibraryConstants;
|
||||||
import com.TwentyCodes.android.location.GeoPointLocationListener;
|
import com.TwentyCodes.android.location.GeoPointLocationListener;
|
||||||
import com.TwentyCodes.android.location.LocationReceiver;
|
import com.TwentyCodes.android.location.BaseLocationReceiver;
|
||||||
import com.google.android.maps.GeoPoint;
|
import com.google.android.maps.GeoPoint;
|
||||||
import com.skyhookwireless.wps.RegistrationCallback;
|
import com.skyhookwireless.wps.RegistrationCallback;
|
||||||
import com.skyhookwireless.wps.WPSContinuation;
|
import com.skyhookwireless.wps.WPSContinuation;
|
||||||
@@ -49,8 +50,8 @@ public class SkyHookService extends Service implements GeoPointLocationListener,
|
|||||||
public static final String INTENT_EXTRA_REQUIRED_ACCURACY = "required_accuracy";
|
public static final String INTENT_EXTRA_REQUIRED_ACCURACY = "required_accuracy";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to tell the service the update action to broadcast. If this is not supplied, {@link LocationReceiver.INTENT_EXTRA_ACTION_UPDATE } will be used.
|
* Used to tell the service the update action to broadcast. If this is not supplied, {@link BaseLocationReceiver.INTENT_EXTRA_ACTION_UPDATE } will be used.
|
||||||
* @see LocationReceiver.INTENT_EXTRA_ACTION_UPDATE
|
* @see BaseLocationReceiver.INTENT_EXTRA_ACTION_UPDATE
|
||||||
*/
|
*/
|
||||||
public static final String INTENT_EXTRA_ACTION_UPDATE = "action_update";
|
public static final String INTENT_EXTRA_ACTION_UPDATE = "action_update";
|
||||||
|
|
||||||
@@ -75,8 +76,8 @@ public class SkyHookService extends Service implements GeoPointLocationListener,
|
|||||||
if(mIntent.getAction() != null)
|
if(mIntent.getAction() != null)
|
||||||
locationUpdate.setAction(mIntent.getAction());
|
locationUpdate.setAction(mIntent.getAction());
|
||||||
else
|
else
|
||||||
locationUpdate.setAction(LocationReceiver.INTENT_EXTRA_ACTION_UPDATE);
|
locationUpdate.setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
|
||||||
locationUpdate.putExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL, convertLocation());
|
locationUpdate.putExtra(LocationManager.KEY_LOCATION_CHANGED, convertLocation());
|
||||||
sendBroadcast(locationUpdate);
|
sendBroadcast(locationUpdate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -121,7 +122,7 @@ public class SkyHookService extends Service implements GeoPointLocationListener,
|
|||||||
public void run(){
|
public void run(){
|
||||||
stopSelfResult(mStartID);
|
stopSelfResult(mStartID);
|
||||||
}
|
}
|
||||||
}, Debug.MAX_LOCATION_SERVICE_RUN_TIME);
|
}, LocationLibraryConstants.MAX_LOCATION_SERVICE_RUN_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -228,7 +229,7 @@ public class SkyHookService extends Service implements GeoPointLocationListener,
|
|||||||
* then continue
|
* then continue
|
||||||
* else stop to report location
|
* else stop to report location
|
||||||
*/
|
*/
|
||||||
if(accuracy < (this.mRequiredAccuracy > -1 ? this.mRequiredAccuracy : Debug.MINIMUM_REQUIRED_ACCURACY) || Debug.REPORT_FIRST_LOCATION)
|
if(accuracy < (this.mRequiredAccuracy > -1 ? this.mRequiredAccuracy : LocationLibraryConstants.MINIMUM_REQUIRED_ACCURACY) || LocationLibraryConstants.REPORT_FIRST_LOCATION)
|
||||||
this.stopSelf(this.mStartID);
|
this.stopSelf(this.mStartID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +1,21 @@
|
|||||||
/**
|
/**
|
||||||
* Debug.java
|
* Debug.java
|
||||||
* @date Mar 1, 2011
|
* @date May 15, 2012
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
* @author Twenty Codes, LLC
|
* @author Twenty Codes, LLC
|
||||||
*/
|
*/
|
||||||
package com.TwentyCodes.android.debug;
|
package com.TwentyCodes.android.debug;
|
||||||
|
|
||||||
import android.hardware.SensorManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class will be used to enable and disable debugging features
|
* This class will be used to enable and disable debugging features
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public final class Debug {
|
public class Debug {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the logging level for this library
|
* Sets the logging level for this library
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public static final boolean DEBUG = false;
|
public static final boolean DEBUG = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the default SkyHook Registration Behavior used by SkyHookRegistration.getUserName()
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static final SkyHookRegistrationBehavior DEFAULT_REGISTRATION_BEHAVIOR = SkyHookRegistrationBehavior.NORMAL;
|
|
||||||
|
|
||||||
/**
|
}
|
||||||
* Sets the default compass sensor update interval
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static final int COMPASS_UPDATE_INTERVAL = SensorManager.SENSOR_DELAY_NORMAL;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The maximum running time for a single shot location service
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static final long MAX_LOCATION_SERVICE_RUN_TIME = 60000l;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Forces single shot location services to return the first location
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static final boolean REPORT_FIRST_LOCATION = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Minimum Required accuracy to report
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static final int MINIMUM_REQUIRED_ACCURACY = 50;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/**
|
||||||
|
* LocationLibraryConstants.java
|
||||||
|
* @date Mar 1, 2011
|
||||||
|
* @author ricky barrette
|
||||||
|
* @author Twenty Codes, LLC
|
||||||
|
*/
|
||||||
|
package com.TwentyCodes.android.debug;
|
||||||
|
|
||||||
|
import android.hardware.SensorManager;
|
||||||
|
import android.location.LocationManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class will be used to set the Location Library Constants
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public final class LocationLibraryConstants {
|
||||||
|
|
||||||
|
static{
|
||||||
|
SUPPORTS_FROYO = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO;
|
||||||
|
|
||||||
|
SUPPORTS_GINGERBREAD = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default SkyHook Registration Behavior used by SkyHookRegistration.getUserName()
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final SkyHookRegistrationBehavior DEFAULT_REGISTRATION_BEHAVIOR = SkyHookRegistrationBehavior.NORMAL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default compass sensor update interval
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final int COMPASS_UPDATE_INTERVAL = SensorManager.SENSOR_DELAY_NORMAL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum running time for a single shot location service
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final long MAX_LOCATION_SERVICE_RUN_TIME = 60000l;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forces single shot location services to return the first location
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final boolean REPORT_FIRST_LOCATION = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minimum Required accuracy to report
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final int MINIMUM_REQUIRED_ACCURACY = 50;
|
||||||
|
|
||||||
|
public static final boolean SUPPORTS_FROYO;
|
||||||
|
|
||||||
|
public static final boolean SUPPORTS_GINGERBREAD;
|
||||||
|
|
||||||
|
public static final String INTENT_ACTION_UPDATE = "TwentyCodes.intent.action.LocationUpdate";
|
||||||
|
|
||||||
|
public static final String INTENT_EXTRA_LOCATION_CHANGED = LocationManager.KEY_LOCATION_CHANGED;
|
||||||
|
}
|
||||||
@@ -9,38 +9,32 @@ import android.content.BroadcastReceiver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import android.location.LocationManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this abstract class will be used as a for classes wishing to be a receiver of location updates from the location services
|
* this abstract class will be used as a for classes wishing to be a receiver of location updates from the location services
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public abstract class LocationReceiver extends BroadcastReceiver {
|
public abstract class BaseLocationReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
public static final String INTENT_EXTRA_ACTION_UPDATE = "TwentyCodes.intent.action.LocationUpdate";
|
|
||||||
public static final String INTENT_EXTRA_LOCATION_PARCEL = "location_parcel";
|
|
||||||
public Context mContext;
|
public Context mContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
|
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
|
||||||
* @param contextonBind
|
|
||||||
* @param intent
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(final Context context, final Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
if(intent.getParcelableExtra(INTENT_EXTRA_LOCATION_PARCEL) != null){
|
final String key = LocationManager.KEY_LOCATION_CHANGED;
|
||||||
Location location = intent.getParcelableExtra(INTENT_EXTRA_LOCATION_PARCEL);
|
if (intent.hasExtra(key))
|
||||||
onLocationUpdate(location);
|
onLocationUpdate((Location)intent.getExtras().get(key));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called when a location update is received
|
* called when a location update is received
|
||||||
* @param parcelableExtra
|
* @param parcelableExtra
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public abstract void onLocationUpdate(Location location);
|
public abstract void onLocationUpdate(Location location);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,6 +21,7 @@ import android.view.Surface;
|
|||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
import com.TwentyCodes.android.debug.Debug;
|
import com.TwentyCodes.android.debug.Debug;
|
||||||
|
import com.TwentyCodes.android.debug.LocationLibraryConstants;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple convince class that accesses the compass sensor on another thread
|
* A simple convince class that accesses the compass sensor on another thread
|
||||||
@@ -206,9 +207,9 @@ public class CompassSensor{
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// Register this class as a listener for the accelerometer sensor
|
// Register this class as a listener for the accelerometer sensor
|
||||||
mSensorManager.registerListener(mCallBack, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), Debug.COMPASS_UPDATE_INTERVAL);
|
mSensorManager.registerListener(mCallBack, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), LocationLibraryConstants.COMPASS_UPDATE_INTERVAL);
|
||||||
// ...and the orientation sensor
|
// ...and the orientation sensor
|
||||||
mSensorManager.registerListener(mCallBack, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), Debug.COMPASS_UPDATE_INTERVAL);
|
mSensorManager.registerListener(mCallBack, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), LocationLibraryConstants.COMPASS_UPDATE_INTERVAL);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
|
import android.location.LocationManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
@@ -22,6 +23,7 @@ import android.os.PowerManager.WakeLock;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.TwentyCodes.android.debug.Debug;
|
import com.TwentyCodes.android.debug.Debug;
|
||||||
|
import com.TwentyCodes.android.debug.LocationLibraryConstants;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This service class will be used broadcast the users location either one time, or periodically.
|
* This service class will be used broadcast the users location either one time, or periodically.
|
||||||
@@ -47,8 +49,8 @@ public class LocationService extends Service implements LocationListener {
|
|||||||
public static final String INTENT_EXTRA_REQUIRED_ACCURACY = "required_accuracy";
|
public static final String INTENT_EXTRA_REQUIRED_ACCURACY = "required_accuracy";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to tell the service the update action to broadcast. If this is not supplied, {@link LocationReceiver.INTENT_EXTRA_ACTION_UPDATE } will be used.
|
* Used to tell the service the update action to broadcast. If this is not supplied, {@link BaseLocationReceiver.INTENT_EXTRA_ACTION_UPDATE } will be used.
|
||||||
* @see LocationReceiver.INTENT_EXTRA_ACTION_UPDATE
|
* @see BaseLocationReceiver.INTENT_EXTRA_ACTION_UPDATE
|
||||||
*/
|
*/
|
||||||
public static final String INTENT_EXTRA_ACTION_UPDATE = "action_update";
|
public static final String INTENT_EXTRA_ACTION_UPDATE = "action_update";
|
||||||
|
|
||||||
@@ -94,8 +96,8 @@ public class LocationService extends Service implements LocationListener {
|
|||||||
if(mIntent.getAction() != null)
|
if(mIntent.getAction() != null)
|
||||||
locationUpdate.setAction(mIntent.getAction());
|
locationUpdate.setAction(mIntent.getAction());
|
||||||
else
|
else
|
||||||
locationUpdate.setAction(LocationReceiver.INTENT_EXTRA_ACTION_UPDATE);
|
locationUpdate.setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
|
||||||
locationUpdate.putExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL, mLocation);
|
locationUpdate.putExtra(LocationManager.KEY_LOCATION_CHANGED, mLocation);
|
||||||
sendBroadcast(locationUpdate);
|
sendBroadcast(locationUpdate);
|
||||||
stopSelf(mStartId);
|
stopSelf(mStartId);
|
||||||
}
|
}
|
||||||
@@ -117,7 +119,7 @@ public class LocationService extends Service implements LocationListener {
|
|||||||
/*
|
/*
|
||||||
* que the fail safe runnable to kill the report location and kill it self after the MAX_RUN_TIME has been meet
|
* que the fail safe runnable to kill the report location and kill it self after the MAX_RUN_TIME has been meet
|
||||||
*/
|
*/
|
||||||
new Handler().postDelayed(failSafe, Debug.MAX_LOCATION_SERVICE_RUN_TIME);
|
new Handler().postDelayed(failSafe, LocationLibraryConstants.MAX_LOCATION_SERVICE_RUN_TIME);
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,7 +231,7 @@ public class LocationService extends Service implements LocationListener {
|
|||||||
if(Debug.DEBUG)
|
if(Debug.DEBUG)
|
||||||
Log.d(TAG, "got location +- "+ location.getAccuracy() +"m");
|
Log.d(TAG, "got location +- "+ location.getAccuracy() +"m");
|
||||||
mLocation = location;
|
mLocation = location;
|
||||||
if(location.getAccuracy() <= (mRequiredAccuracy > -1 ? mRequiredAccuracy : Debug.MINIMUM_REQUIRED_ACCURACY) || Debug.REPORT_FIRST_LOCATION){
|
if(location.getAccuracy() <= (mRequiredAccuracy > -1 ? mRequiredAccuracy : LocationLibraryConstants.MINIMUM_REQUIRED_ACCURACY) || LocationLibraryConstants.REPORT_FIRST_LOCATION){
|
||||||
stopSelf(mStartId);
|
stopSelf(mStartId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* PassiveLocationListener.java
|
||||||
|
* @date May 15, 2012
|
||||||
|
* @author ricky barrette
|
||||||
|
* @author Twenty Codes, LLC
|
||||||
|
*/
|
||||||
|
package com.TwentyCodes.android.location;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.location.LocationManager;
|
||||||
|
|
||||||
|
import com.TwentyCodes.android.debug.LocationLibraryConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience class for requesting passive location updates
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public class PassiveLocationListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience method for requesting passive location updates
|
||||||
|
* @param context
|
||||||
|
* @param receiverIntent
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public static final void requestPassiveLocationUpdates(final Context context, final Intent receiverIntent){
|
||||||
|
if (LocationLibraryConstants.SUPPORTS_FROYO) {
|
||||||
|
final LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
||||||
|
final PendingIntent locationListenerPassivePendingIntent = PendingIntent.getBroadcast(context, 0, receiverIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, locationListenerPassivePendingIntent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user