From 4c4986ea6193763db511e8ecdacbee4650913cce Mon Sep 17 00:00:00 2001 From: Ricky Barrette Date: Tue, 13 Mar 2012 12:32:33 -0400 Subject: [PATCH] Refactored and updated omst variables to final UserOverlay base is now BaseUserOverlay MapFragmentBase is now BaseMapFragment Change-Id: Icbe234964f9b8ad511f17f6d22bca1a677d4189b Signed-off-by: Ricky Barrette --- LocationLib/bin/locationlib.jar | Bin 61911 -> 64073 bytes ...map_fragment.xml => base_map_fragment.xml} | 0 .../TwentyCodes/android/SkyHook/SkyHook.java | 6 ++-- .../android/SkyHook/SkyHookRegistration.java | 10 +++--- ...FragmentBase.java => BaseMapFragment.java} | 6 ++-- .../android/fragments/DirectionsAdapter.java | 8 ++--- .../SkyHoookUserOverlayMapFragment.java | 8 ++--- .../fragments/UserOverlayMapFragment.java | 8 ++--- .../android/location/AndroidGPS.java | 6 ++-- .../android/location/CompassSensor.java | 33 +++++++++++++++--- .../android/location/GeoUtils.java | 26 +++++++------- .../android/location/LocationReceiver.java | 2 +- .../android/location/MidPoint.java | 2 +- .../android/location/ReverseGeocoder.java | 6 ++-- ...rOverlayBase.java => BaseUserOverlay.java} | 27 +++++++------- .../android/overlays/CompasOverlay.java | 6 ++-- .../android/overlays/DirectionsOverlay.java | 22 ++++++------ .../android/overlays/PathOverlay.java | 8 ++--- .../android/overlays/RadiusOverlay.java | 10 +++--- .../android/overlays/SkyHookUserOverlay.java | 8 ++--- .../android/overlays/UserOverlay.java | 4 +-- 21 files changed, 116 insertions(+), 90 deletions(-) rename LocationLib/res/layout/{map_fragment.xml => base_map_fragment.xml} (100%) rename LocationLib/src/com/TwentyCodes/android/fragments/{MapFragmentBase.java => BaseMapFragment.java} (94%) rename LocationLib/src/com/TwentyCodes/android/overlays/{UserOverlayBase.java => BaseUserOverlay.java} (95%) diff --git a/LocationLib/bin/locationlib.jar b/LocationLib/bin/locationlib.jar index 434d0eb355b7bf83655f9304dcb43e141ad5b7df..0c931a4cc18dcc743585a2f2e9cfc78d9ec24a4a 100644 GIT binary patch delta 38846 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 O2<|Wt5Ogmd9sLhl5-BJE delta 36731 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

4+Xa)xijC{|YD*aK)g6 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

&lC^Q)u=XtU^^b zF#B|WT^;(EFs%D(|C1g41b5H!VNx7Rxr8Jq)1vTYp5L0 zN{=ekJ6sqLVv;uHe;_aid-;OGU-VL``SO@#zOOE=-0z-Bb?y0M1#FK6si%dzTntAx zImNc5bhgGjw)pkU`|cgTG~8A-7f*D>h7~Ov8^~e(X=c;5cHQ+trK?)5yG5CyHvFG_ z_|TKMGbG`ff+Pwnft8S!mX=t?3I*MNSi^fX8XPZqXlusuL#>gw4zwIe0OvS6G=!2! zFT!m$v^Y5c)$gEvOO+9RxV!@Njgo=J2o?qvl%4GhA=Nf$>0$!{%#eq{lOyUdC|)U- ziU8S)FgQ4ZhC%TfkjN`~s=?saQFXZW`$q979uX25K_wwEu&&KjZf_9OnpPvw{5c-8iFt~P11X7YH1xKLP&loC&;SBj_8afsqN3x5ewfm?3PPwS!fm zx?7a*>TZeFw7%~mT$BJPPAa1uUH;Joj+2IPm&DJ%-hwbQ;Pwr!nbd`0@iSwM5ODBb z2-X6WDFWOb`zbssa~~w4K*z_b!Mft-6(R#G)gJ4BZUCnl=J!XV7pDEN1Yinn*}h3p$C20{6hVUDjy= ziu#98rZ{p&k4M2EXGYXjt>wO}T%izQKv9cyo%u-^RGgIt&O9~PPzVo?nqqzxD}o9h z1{SyR@RGwolcx`IlB9vgtY~(MC#xg7S)BCs601NAS9BW?Pbx*uGSU?o?w%FRGVzo@ zWXIY841T$;@E_Mq(=Noap%|Ee-d2cMxR?$~Zt8%F8$^&ZC34S{vWf0}2;xHT9})1q z3<$RV28w4uAUjx-2{#4GEc`aR#2<-9`jY-LsLj)YvL%S3!JNmV9^QvVihN7hnd1BJ z=7<(8KKKeM0mgzT7@qO*sP1xDtk9_h!WKk#HrxUprB@A${XSxZVi{qG!CRx?^nx~wC diff --git a/LocationLib/res/layout/map_fragment.xml b/LocationLib/res/layout/base_map_fragment.xml similarity index 100% rename from LocationLib/res/layout/map_fragment.xml rename to LocationLib/res/layout/base_map_fragment.xml diff --git a/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHook.java b/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHook.java index b620cab..79966fe 100644 --- a/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHook.java +++ b/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHook.java @@ -37,12 +37,12 @@ public class SkyHook implements GeoPointLocationListener{ private GeoPointLocationListener mListener; private long mPeriod = 0l; //period is in milliseconds for periodic updates private int mIterations = 0; - private XPS mXps; + private final XPS mXps; private WPSAuthentication mWPSAuthentication; private Handler mHandler; private final XPScallback mXPScallback = new XPScallback(); private boolean isPeriodicEnabled; - private Context mContext; + private final Context mContext; private boolean hasLocation; protected AndroidGPS mSkyHookFallback = null; protected long mFallBackDelay = 5000l; @@ -248,7 +248,7 @@ public class SkyHook implements GeoPointLocationListener{ if (isUnauthorized){ isPeriodicEnabled = false; mXps.abort(); - mXps = null; +// mXps = null; } isUnauthorized = true; } diff --git a/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHookRegistration.java b/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHookRegistration.java index c3ca6fc..8a5316a 100644 --- a/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHookRegistration.java +++ b/LocationLib/src/com/TwentyCodes/android/SkyHook/SkyHookRegistration.java @@ -20,8 +20,8 @@ import com.skyhookwireless.wps.XPS; */ public class SkyHookRegistration{ - private XPS mXps; - private Context mContext; + private final XPS mXps; + private final Context mContext; public SkyHookRegistration(Context context){ mContext = context; @@ -35,9 +35,9 @@ public class SkyHookRegistration{ * @param listener for call back methods * @author ricky barrette */ - public void registerNewUser(RegistrationCallback listener){ + public void registerNewUser(final RegistrationCallback listener){ if(mXps != null){ - TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); + final TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); if(tm == null) Log.v(SkyHook.TAG, "TelephonyManager is null"); String newUser = tm.getLine1Number(); @@ -58,7 +58,7 @@ public class SkyHookRegistration{ * @return * @author ricky barrette */ - public static String getUserName(Context context){ + public static String getUserName(final Context context){ switch(Debug.DEFAULT_REGISTRATION_BEHAVIOR){ case NORMAL: diff --git a/LocationLib/src/com/TwentyCodes/android/fragments/MapFragmentBase.java b/LocationLib/src/com/TwentyCodes/android/fragments/BaseMapFragment.java similarity index 94% rename from LocationLib/src/com/TwentyCodes/android/fragments/MapFragmentBase.java rename to LocationLib/src/com/TwentyCodes/android/fragments/BaseMapFragment.java index 015971e..189cd7b 100644 --- a/LocationLib/src/com/TwentyCodes/android/fragments/MapFragmentBase.java +++ b/LocationLib/src/com/TwentyCodes/android/fragments/BaseMapFragment.java @@ -23,7 +23,7 @@ import com.google.android.maps.Overlay; * * @author ricky barrette */ -public abstract class MapFragmentBase extends Fragment { +public abstract class BaseMapFragment extends Fragment { private MapView mMapView; private boolean isGPSDialogEnabled; @@ -33,7 +33,7 @@ public abstract class MapFragmentBase extends Fragment { * Creates a new MapFragment * @author ricky barrette */ - public MapFragmentBase() { + public BaseMapFragment() { super(); } @@ -64,7 +64,7 @@ public abstract class MapFragmentBase extends Fragment { */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.map_fragment, container, false); + View view = inflater.inflate(R.layout.base_map_fragment, container, false); mMapView = (MapView) view.findViewById(R.id.mapview); mMapView.setClickable(true); diff --git a/LocationLib/src/com/TwentyCodes/android/fragments/DirectionsAdapter.java b/LocationLib/src/com/TwentyCodes/android/fragments/DirectionsAdapter.java index d9464ef..572ef61 100644 --- a/LocationLib/src/com/TwentyCodes/android/fragments/DirectionsAdapter.java +++ b/LocationLib/src/com/TwentyCodes/android/fragments/DirectionsAdapter.java @@ -22,8 +22,8 @@ import com.TwentyCodes.android.overlays.DirectionsOverlay; */ public class DirectionsAdapter extends BaseAdapter { - private LayoutInflater mInflater; - private DirectionsOverlay mDirections; + private final LayoutInflater mInflater; + private final DirectionsOverlay mDirections; /** @@ -80,8 +80,8 @@ public class DirectionsAdapter extends BaseAdapter { * @author ricky barrette */ @Override - public View getView(int position, View convertView, ViewGroup parent) { - ViewHolder holder; + public View getView(final int position, View convertView, final ViewGroup parent) { + final ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_row, null); holder = new ViewHolder(); diff --git a/LocationLib/src/com/TwentyCodes/android/fragments/SkyHoookUserOverlayMapFragment.java b/LocationLib/src/com/TwentyCodes/android/fragments/SkyHoookUserOverlayMapFragment.java index 7745960..93233ff 100644 --- a/LocationLib/src/com/TwentyCodes/android/fragments/SkyHoookUserOverlayMapFragment.java +++ b/LocationLib/src/com/TwentyCodes/android/fragments/SkyHoookUserOverlayMapFragment.java @@ -18,7 +18,7 @@ import com.google.android.maps.GeoPoint; * TODO acquiring gps dialog * @author ricky barrette */ -public class SkyHoookUserOverlayMapFragment extends MapFragmentBase implements GeoPointLocationListener, CompassListener{ +public class SkyHoookUserOverlayMapFragment extends BaseMapFragment implements GeoPointLocationListener, CompassListener{ private SkyHookUserOverlay mUserOverlay; private GeoPointLocationListener mGeoPointLocationListener; @@ -86,7 +86,7 @@ public class SkyHoookUserOverlayMapFragment extends MapFragmentBase implements G /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onMapViewCreate(com.TwentyCodes.android.location.MapView) + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onMapViewCreate(com.TwentyCodes.android.location.MapView) */ @Override public void onMapViewCreate(MapView map) { @@ -101,7 +101,7 @@ public class SkyHoookUserOverlayMapFragment extends MapFragmentBase implements G /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onPause() + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onPause() */ @Override public void onPause() { @@ -112,7 +112,7 @@ public class SkyHoookUserOverlayMapFragment extends MapFragmentBase implements G /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onResume() + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onResume() */ @Override public void onResume() { diff --git a/LocationLib/src/com/TwentyCodes/android/fragments/UserOverlayMapFragment.java b/LocationLib/src/com/TwentyCodes/android/fragments/UserOverlayMapFragment.java index 850043d..5984676 100644 --- a/LocationLib/src/com/TwentyCodes/android/fragments/UserOverlayMapFragment.java +++ b/LocationLib/src/com/TwentyCodes/android/fragments/UserOverlayMapFragment.java @@ -18,7 +18,7 @@ import com.google.android.maps.GeoPoint; * TODO acquiring gps dialog * @author ricky barrette */ -public class UserOverlayMapFragment extends MapFragmentBase implements GeoPointLocationListener, CompassListener{ +public class UserOverlayMapFragment extends BaseMapFragment implements GeoPointLocationListener, CompassListener{ private UserOverlay mUserOverlay; private GeoPointLocationListener mGeoPointLocationListener; @@ -86,7 +86,7 @@ public class UserOverlayMapFragment extends MapFragmentBase implements GeoPointL /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onMapViewCreate(com.TwentyCodes.android.location.MapView) + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onMapViewCreate(com.TwentyCodes.android.location.MapView) */ @Override public void onMapViewCreate(MapView map) { @@ -101,7 +101,7 @@ public class UserOverlayMapFragment extends MapFragmentBase implements GeoPointL /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onPause() + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onPause() */ @Override public void onPause() { @@ -112,7 +112,7 @@ public class UserOverlayMapFragment extends MapFragmentBase implements GeoPointL /** * (non-Javadoc) - * @see com.TwentyCodes.android.fragments.MapFragmentBase#onResume() + * @see com.TwentyCodes.android.fragments.BaseMapFragment#onResume() */ @Override public void onResume() { diff --git a/LocationLib/src/com/TwentyCodes/android/location/AndroidGPS.java b/LocationLib/src/com/TwentyCodes/android/location/AndroidGPS.java index fb5effb..6568c3f 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/AndroidGPS.java +++ b/LocationLib/src/com/TwentyCodes/android/location/AndroidGPS.java @@ -24,7 +24,7 @@ import com.google.android.maps.GeoPoint; public class AndroidGPS implements LocationListener { private static final String TAG = "AndroidGPS"; - private LocationManager mLocationManager; + private final LocationManager mLocationManager; private GeoPointLocationListener mListener; private LocationListener mLocationListener; @@ -131,8 +131,6 @@ public class AndroidGPS implements LocationListener { * @author ricky barrette */ private void requestUpdates() { - mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); - mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); try { mLocationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, this); } catch (IllegalArgumentException e) { @@ -141,6 +139,8 @@ public class AndroidGPS implements LocationListener { * to function we can ignore it. */ } + mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); + mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); } } \ No newline at end of file diff --git a/LocationLib/src/com/TwentyCodes/android/location/CompassSensor.java b/LocationLib/src/com/TwentyCodes/android/location/CompassSensor.java index 8edb8a0..68421cc 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/CompassSensor.java +++ b/LocationLib/src/com/TwentyCodes/android/location/CompassSensor.java @@ -16,6 +16,7 @@ import android.hardware.SensorManager; import android.location.Location; import android.os.Handler; import android.os.Message; +import android.util.Log; import com.TwentyCodes.android.debug.Debug; @@ -31,6 +32,7 @@ public class CompassSensor{ private final Handler mHandler; private Context mContext; private float mDelination = 0; + public static final String TAG = "CompassSensor"; private final SensorEventListener mCallBack = new SensorEventListener() { @@ -45,8 +47,26 @@ public class CompassSensor{ double mRoll = 0; private float mInclination; - public void onSensorChanged(SensorEvent sensorEvent) { - // If the sensor data is unreliable return + public void onSensorChanged(final SensorEvent sensorEvent) { + if(Debug.DEBUG){ + switch (sensorEvent.accuracy){ + case SensorManager.SENSOR_STATUS_UNRELIABLE: + Log.v(TAG , "UNRELIABLE"); + break; + case SensorManager.SENSOR_STATUS_ACCURACY_LOW: + Log.v(TAG , "LOW"); + break; + case SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM: + Log.v(TAG , "MEDIUM"); + break; + case SensorManager.SENSOR_STATUS_ACCURACY_HIGH: + Log.v(TAG , "HIGH"); + break; + + } + } + + // If the sensor data is unreliable return if (sensorEvent.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) return; @@ -70,6 +90,10 @@ public class CompassSensor{ /* * TODO remap cords due to Display.getRotation() */ +// Display display = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); +// switch (display.getOrientation()){ +// } + // SensorManager.remapCoordinateSystem(mR, SensorManager.AXIS_MINUS_Y, SensorManager.AXIS_X, mR); SensorManager.getOrientation(mR, mOrientVals); mInclination = SensorManager.getInclination(mI); @@ -163,10 +187,9 @@ public class CompassSensor{ * @param location last known (lat,lon,altitude), null will reset * @author ricky barrette */ - public void setDeclination(Location location){ + public void setDeclination(final Location location){ if (location != null) { - GeomagneticField geomagneticField; - geomagneticField = new GeomagneticField(new Double(location.getLatitude()).floatValue(), + final GeomagneticField geomagneticField = new GeomagneticField(new Double(location.getLatitude()).floatValue(), new Double(location.getLongitude()).floatValue(), new Double(location.getAltitude()).floatValue(), System.currentTimeMillis()); diff --git a/LocationLib/src/com/TwentyCodes/android/location/GeoUtils.java b/LocationLib/src/com/TwentyCodes/android/location/GeoUtils.java index 3388d74..6b15590 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/GeoUtils.java +++ b/LocationLib/src/com/TwentyCodes/android/location/GeoUtils.java @@ -41,14 +41,14 @@ public class GeoUtils { /** * Calculates the bearing from the user location to the destination location, or returns the bearing for north if there is no destination. - * This method is awesome for make a compass point toward the destination rather than North. + * This method is awesome for making a compass point toward the destination rather than North. * @param user location * @param dest location * @param bearing Degrees East from compass * @return Degrees East of dest location * @author ricky barrette */ - public static float calculateBearing(GeoPoint user, GeoPoint dest, float bearing) { + public static float calculateBearing(final GeoPoint user, final GeoPoint dest, float bearing) { if( (user == null) || (dest == null) ) return bearing; @@ -72,7 +72,7 @@ public class GeoUtils { * @return the bearing of lat2/lon2 in relationship from lat1/lon1 in degrees East of true north * @author Google Inc. */ - public static double bearing(double lat1, double lon1, double lat2, double lon2) { + public static double bearing(final double lat1, final double lon1, final double lat2, final double lon2) { double lat1Rad = Math.toRadians(lat1); double lat2Rad = Math.toRadians(lat2); double deltaLonRad = Math.toRadians(lon2 - lon1); @@ -88,7 +88,7 @@ public class GeoUtils { * @return the bearing of p2 in relationship from p1 in degrees East * @author Google Inc. */ - public static Double bearing(GeoPoint p1, GeoPoint p2) { + public static Double bearing(final GeoPoint p1, final GeoPoint p2) { double lat1 = p1.getLatitudeE6() / MILLION; double lon1 = p1.getLongitudeE6() / MILLION; double lat2 = p2.getLatitudeE6() / MILLION; @@ -105,7 +105,7 @@ public class GeoUtils { * @return geopoint that is x meters away from the geopoint supplied * @author ricky barrette */ - public static GeoPoint distanceFrom(GeoPoint point, double distance){ + public static GeoPoint distanceFrom(final GeoPoint point, double distance){ //convert meters into kilometers distance = distance / 1000; @@ -145,7 +145,7 @@ public class GeoUtils { * @return the distance between to lat1/lon1 and lat2/lon2 * @author Google Inc. */ - public static double distanceKm(double lat1, double lon1, double lat2, double lon2) { + public static double distanceKm(final double lat1, final double lon1, final double lat2, final double lon2) { double lat1Rad = Math.toRadians(lat1); double lat2Rad = Math.toRadians(lat2); double deltaLonRad = Math.toRadians(lon2 - lon1); @@ -159,7 +159,7 @@ public class GeoUtils { * @return string distance * @author ricky barrette */ - public static String distanceToString(double distance, boolean returnMetric) { + public static String distanceToString(double distance, final boolean returnMetric) { DecimalFormat threeDForm = new DecimalFormat("#.###"); DecimalFormat twoDForm = new DecimalFormat("#.##"); @@ -190,7 +190,7 @@ public class GeoUtils { * @return true if the circles intersect * @author ricky barrette */ - public static boolean isIntersecting(GeoPoint userPoint, float accuracyRadius, GeoPoint locationPoint, float locationRadius, float fudgeFactor){ + public static boolean isIntersecting(final GeoPoint userPoint, final float accuracyRadius, final GeoPoint locationPoint, final float locationRadius, final float fudgeFactor){ if(((accuracyRadius + locationRadius) - fudgeFactor) > distanceKm(locationPoint, userPoint)) return true; return false; @@ -203,7 +203,7 @@ public class GeoUtils { * @return the distance between to p1 and p2 * @author Google Inc. */ - public static double distanceKm(GeoPoint p1, GeoPoint p2) { + public static double distanceKm(final GeoPoint p1, final GeoPoint p2) { //if we are handed a null, return -1 so we don't break if(p1 == null || p2 == null) return -1; @@ -221,7 +221,7 @@ public class GeoUtils { * @return true is the point is off the map * @author ricky barrette */ - public static boolean isPointOffMap(MapView map , GeoPoint point){ + public static boolean isPointOffMap(final MapView map , final GeoPoint point){ if(map == null) return false; if (point == null) @@ -243,8 +243,8 @@ public class GeoUtils { * @return a MidPoint object * @author ricky barrette */ - public static MidPoint midPoint(GeoPoint p1, GeoPoint p2) { - int minLatitude = (int)(+81 * 1E6); + public static MidPoint midPoint(final GeoPoint p1, final GeoPoint p2) { + int minLatitude = (int)(+81 * 1E6); int maxLatitude = (int)(-81 * 1E6); int minLongitude = (int)(+181 * 1E6); int maxLongitude = (int)(-181 * 1E6); @@ -277,7 +277,7 @@ public class GeoUtils { * @return bearing * @author Google Inc. */ - public static double radToBearing(double rad) { + public static double radToBearing(final double rad) { return (Math.toDegrees(rad) + 360) % 360; } } \ No newline at end of file diff --git a/LocationLib/src/com/TwentyCodes/android/location/LocationReceiver.java b/LocationLib/src/com/TwentyCodes/android/location/LocationReceiver.java index cfd365e..79178c3 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/LocationReceiver.java +++ b/LocationLib/src/com/TwentyCodes/android/location/LocationReceiver.java @@ -28,7 +28,7 @@ public abstract class LocationReceiver extends BroadcastReceiver { * @author ricky barrette */ @Override - public void onReceive(Context context, Intent intent) { + public void onReceive(final Context context, final Intent intent) { mContext = context; if(intent.getParcelableExtra(INTENT_EXTRA_LOCATION_PARCEL) != null){ Location location = intent.getParcelableExtra(INTENT_EXTRA_LOCATION_PARCEL); diff --git a/LocationLib/src/com/TwentyCodes/android/location/MidPoint.java b/LocationLib/src/com/TwentyCodes/android/location/MidPoint.java index 96408f0..1325b4e 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/MidPoint.java +++ b/LocationLib/src/com/TwentyCodes/android/location/MidPoint.java @@ -11,7 +11,7 @@ import com.google.android.maps.GeoPoint; * This MidPoint object will hold the information form the calculations performed by GeoUtils.midPoint(). * @author ricky barrette */ -public final class MidPoint { +public class MidPoint { private final int mMinLatitude; private final int mMaxLatitude; diff --git a/LocationLib/src/com/TwentyCodes/android/location/ReverseGeocoder.java b/LocationLib/src/com/TwentyCodes/android/location/ReverseGeocoder.java index 2a5dbce..5b4e612 100644 --- a/LocationLib/src/com/TwentyCodes/android/location/ReverseGeocoder.java +++ b/LocationLib/src/com/TwentyCodes/android/location/ReverseGeocoder.java @@ -43,7 +43,7 @@ public class ReverseGeocoder { * @throws IOException * @throws JSONException */ - public static JSONArray getFromLocation(Location location) throws IOException, JSONException { + public static JSONArray getFromLocation(final Location location) throws IOException, JSONException { String urlStr = "http://maps.google.com/maps/geo?q=" + location.getLatitude() + "," + location.getLongitude() + "&output=json&sensor=false"; StringBuffer response = new StringBuffer(); HttpClient client = new DefaultHttpClient(); @@ -72,7 +72,7 @@ public class ReverseGeocoder { * @return string address, or lat, lon if search fails * @author ricky barrette */ - public static String getAddressFromLocation(Location location) { + public static String getAddressFromLocation(final Location location) { String urlStr = "http://maps.google.com/maps/geo?q=" + location.getLatitude() + "," + location.getLongitude() + "&output=json&sensor=false"; StringBuffer response = new StringBuffer(); HttpClient client = new DefaultHttpClient(); @@ -124,7 +124,7 @@ public class ReverseGeocoder { * @throws JSONException * @author ricky barrette */ - public static JSONArray addressSearch(String address) throws IOException, JSONException { + public static JSONArray addressSearch(final String address) throws IOException, JSONException { String urlStr = "http://maps.google.com/maps/geo?q=" + address + "&output=json&sensor=false"; urlStr = urlStr.replace(' ', '+'); StringBuffer response = new StringBuffer(); diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlayBase.java b/LocationLib/src/com/TwentyCodes/android/overlays/BaseUserOverlay.java similarity index 95% rename from LocationLib/src/com/TwentyCodes/android/overlays/UserOverlayBase.java rename to LocationLib/src/com/TwentyCodes/android/overlays/BaseUserOverlay.java index e97f91f..4f4fcd3 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlayBase.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/BaseUserOverlay.java @@ -15,6 +15,7 @@ import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Point; +import android.graphics.RectF; import android.util.Log; import com.TwentyCodes.android.debug.Debug; @@ -31,7 +32,7 @@ import com.google.android.maps.Projection; * This class will be used to build user overlays * @author ricky barrette */ -public abstract class UserOverlayBase extends Overlay implements GeoPointLocationListener, CompassListener { +public abstract class BaseUserOverlay extends Overlay implements GeoPointLocationListener, CompassListener { /** * This thread is responsible for animating the user icon @@ -126,7 +127,7 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * @param context * @author ricky barrette */ - public UserOverlayBase(MapView mapView, Context context) { + public BaseUserOverlay(MapView mapView, Context context) { super(); mContext = context; mMapView = mapView; @@ -141,7 +142,7 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * @param followUser * @author ricky barrette */ - public UserOverlayBase(MapView mapView, Context context, boolean followUser) { + public BaseUserOverlay(MapView mapView, Context context, boolean followUser) { this(mapView, context); isFollowingUser = followUser; } @@ -192,7 +193,8 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio /* * the following log is used to demonstrate if the leftGeo point is the correct */ -// Log.d(TAG, (GeoUtils.distanceKm(mPoint, leftGeo) * 1000)+"m"); + if(Debug.DEBUG) + Log.d(TAG, (GeoUtils.distanceKm(mPoint, leftGeo) * 1000)+"m"); } super.draw(canvas, mapView, shadow); } @@ -234,9 +236,11 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * for testing * draw a dot over the left geopoint */ -// paint.setColor(Color.RED); -// RectF oval = new RectF(left.x - 1, left.y - 1, left.x + 1, left.y + 1); -// canvas.drawOval(oval, paint); + if(Debug.DEBUG){ + paint.setColor(Color.RED); + RectF oval = new RectF(left.x - 1, left.y - 1, left.x + 1, left.y + 1); + canvas.drawOval(oval, paint); + } return canvas; } @@ -286,7 +290,8 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * @author ricky barrette */ public void enableMyLocation(){ - Log.d(TAG,"enableMyLocation()"); + if(Debug.DEBUG) + Log.d(TAG,"enableMyLocation()"); if (! isEnabled) { mAnimationThread = new AnimationThread(); @@ -307,7 +312,8 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * @author ricky barrette */ public void followUser(boolean followUser){ - Log.d(TAG,"followUser()"); + if(Debug.DEBUG) + Log.d(TAG,"followUser()"); isFollowingUser = followUser; } @@ -339,8 +345,6 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio @Override public void onCompassUpdate(float bearing) { - if(Debug.DEBUG) - Log.v(TAG, "onCompassUpdate()"); if(mCompassListener != null) mCompassListener.onCompassUpdate(bearing); mBearing = bearing; @@ -467,7 +471,6 @@ public abstract class UserOverlayBase extends Overlay implements GeoPointLocatio * @author Ricky Barrette */ public void unRegisterListener(){ - Log.d(TAG,"unRegisterListener()"); mListener = null; } } \ No newline at end of file diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/CompasOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/CompasOverlay.java index 81f1dfe..15ea9bc 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/CompasOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/CompasOverlay.java @@ -30,11 +30,11 @@ import com.google.android.maps.Overlay; public class CompasOverlay extends Overlay implements CompassListener { private float mBearing; - private Context mContext; + private final Context mContext; private GeoPoint mDestination; private GeoPoint mLocation; private boolean isEnabled; - private CompassSensor mCompassSensor; + private final CompassSensor mCompassSensor; private int mNeedleResId = R.drawable.needle_sm; private int mBackgroundResId = R.drawable.compass_sm; private int mX; @@ -121,7 +121,7 @@ public class CompasOverlay extends Overlay implements CompassListener { * @author ricky barrette */ @Override - public void draw(Canvas canvas, MapView mapView, boolean shadow) { + public void draw(final Canvas canvas, final MapView mapView, final boolean shadow) { if(isEnabled){ //set the center of the compass in the top left corner of the screen diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/DirectionsOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/DirectionsOverlay.java index ffc6b08..c715709 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/DirectionsOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/DirectionsOverlay.java @@ -41,8 +41,8 @@ public class DirectionsOverlay { private static final String TAG = "DirectionsOverlay"; private ArrayList mPath; private ArrayList mDirections; - private MapView mMapView; - private OnDirectionsCompleteListener mListener; + private final MapView mMapView; + private final OnDirectionsCompleteListener mListener; private String mCopyRights; private ArrayList mPoints; private ArrayList mDistance; @@ -59,7 +59,7 @@ public class DirectionsOverlay { * @throws IllegalStateException * @throws JSONException */ - public DirectionsOverlay(MapView map, GeoPoint origin, GeoPoint destination, OnDirectionsCompleteListener listener) throws IllegalStateException, ClientProtocolException, IOException, JSONException { + public DirectionsOverlay(final MapView map, final GeoPoint origin, final GeoPoint destination, final OnDirectionsCompleteListener listener) throws IllegalStateException, ClientProtocolException, IOException, JSONException { mMapView = map; mListener = listener; String json = downloadJSON(generateUrl(origin, destination)); @@ -72,7 +72,7 @@ public class DirectionsOverlay { * @throws JSONException * @author ricky barrette */ - public DirectionsOverlay(MapView map, String json, OnDirectionsCompleteListener listener) throws JSONException{ + public DirectionsOverlay(final MapView map, final String json, final OnDirectionsCompleteListener listener) throws JSONException{ mListener = listener; mMapView = map; drawPath(json); @@ -86,7 +86,7 @@ public class DirectionsOverlay { * @author ricky barrette * @throws JSONException */ - private void decodePoly(JSONObject step) throws JSONException { + private void decodePoly(final JSONObject step) throws JSONException { if(Debug.DEBUG) Log.d(TAG, "decodePoly"); @@ -143,7 +143,7 @@ public class DirectionsOverlay { * @throws IOException * @author ricky barrette */ - private String downloadJSON(String url) throws IllegalStateException, ClientProtocolException, IOException { + private String downloadJSON(final String url) throws IllegalStateException, ClientProtocolException, IOException { if(Debug.DEBUG) Log.d(TAG, url); if(url == null) @@ -164,7 +164,7 @@ public class DirectionsOverlay { * @return * @throws JSONException */ - public void drawPath(String json) throws JSONException{ + public void drawPath(final String json) throws JSONException{ if(Debug.DEBUG){ Log.d(TAG, "drawPath"); Log.d(TAG, json); @@ -245,7 +245,7 @@ public class DirectionsOverlay { * @return The Google API url for our directions * @author ricky barrette */ - private String generateUrl(GeoPoint origin, GeoPoint destination){ + private String generateUrl(final GeoPoint origin, final GeoPoint destination){ return "http://maps.googleapis.com/maps/api/directions/json?&origin="+ Double.toString(origin.getLatitudeE6() / 1.0E6)+ ","+ @@ -279,7 +279,7 @@ public class DirectionsOverlay { * @throws JSONException * @author ricky barrette */ - private String getDistance(JSONObject step) throws JSONException{ + private String getDistance(final JSONObject step) throws JSONException{ return step.getJSONObject("distance").getString("text"); } @@ -297,7 +297,7 @@ public class DirectionsOverlay { * @throws JSONException * @author ricky barrette */ - private String getDuration(JSONObject step) throws JSONException{ + private String getDuration(final JSONObject step) throws JSONException{ return step.getJSONObject("duration").getString("text"); } @@ -316,7 +316,7 @@ public class DirectionsOverlay { * @throws JSONException * @author ricky barrette */ - private GeoPoint getGeoPoint(JSONObject point) throws JSONException{ + private GeoPoint getGeoPoint(final JSONObject point) throws JSONException{ return new GeoPoint((int) (point.getDouble("lat")*1E6), (int) (point.getDouble("lng")*1E6)); } diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/PathOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/PathOverlay.java index f1b708c..5712fc8 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/PathOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/PathOverlay.java @@ -34,7 +34,7 @@ public final class PathOverlay extends Overlay { * Creates a new PathOverlay in path mode * @author ricky barrette */ - public PathOverlay(GeoPoint start, GeoPoint end, int color) { + public PathOverlay(final GeoPoint start, final GeoPoint end, final int color) { mStart = start; mEnd = end; mColor = color; @@ -49,7 +49,7 @@ public final class PathOverlay extends Overlay { * @param color * @author ricky barrette */ - public PathOverlay(GeoPoint point, int radius, int color){ + public PathOverlay(final GeoPoint point, final int radius, final int color){ mMode = POINT; mRadius = radius; mStart = point; @@ -66,8 +66,8 @@ public final class PathOverlay extends Overlay { */ @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { - Projection projection = mapView.getProjection(); - Paint paint = new Paint(); + final Projection projection = mapView.getProjection(); + final Paint paint = new Paint(); paint.setColor(mColor); paint.setAntiAlias(true); Point point = new Point(); diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/RadiusOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/RadiusOverlay.java index 4ef0675..a12121d 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/RadiusOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/RadiusOverlay.java @@ -62,12 +62,12 @@ public class RadiusOverlay extends Overlay{ * @param when */ @Override - public void draw(Canvas canvas, MapView mapView, boolean shadow){ + public void draw(final Canvas canvas, final MapView mapView, final boolean shadow){ if(mPoint != null){ - Paint paint = new Paint(); - Point center = new Point(); - Point left = new Point(); - Projection projection = mapView.getProjection(); + final Paint paint = new Paint(); + final Point center = new Point(); + final Point left = new Point(); + final Projection projection = mapView.getProjection(); /* * Calculate a geopoint that is "radius" meters away from geopoint point and diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/SkyHookUserOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/SkyHookUserOverlay.java index c678b31..360fcc0 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/SkyHookUserOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/SkyHookUserOverlay.java @@ -14,9 +14,9 @@ import com.google.android.maps.MapView; * this class will be used to display the users location on the map using skyhook's call back methods * @author ricky barrette */ -public class SkyHookUserOverlay extends UserOverlayBase{ +public class SkyHookUserOverlay extends BaseUserOverlay{ - private SkyHook mSkyHook; + private final SkyHook mSkyHook; public SkyHookUserOverlay(MapView mapView, Context context) { super(mapView, context); @@ -38,7 +38,7 @@ public class SkyHookUserOverlay extends UserOverlayBase{ /** * Called when the location provider needs to be disabled * (non-Javadoc) - * @see com.TwentyCodes.android.overlays.UserOverlayBase#onMyLocationDisabled() + * @see com.TwentyCodes.android.overlays.BaseUserOverlay#onMyLocationDisabled() */ @Override public void onMyLocationDisabled() { @@ -48,7 +48,7 @@ public class SkyHookUserOverlay extends UserOverlayBase{ /** * Called when the location provider needs to be enabled * (non-Javadoc) - * @see com.TwentyCodes.android.overlays.UserOverlayBase#onMyLocationEnabled() + * @see com.TwentyCodes.android.overlays.BaseUserOverlay#onMyLocationEnabled() */ @Override public void onMyLocationEnabled() { diff --git a/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlay.java b/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlay.java index 67e61ae..468ba7f 100644 --- a/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlay.java +++ b/LocationLib/src/com/TwentyCodes/android/overlays/UserOverlay.java @@ -14,9 +14,9 @@ import com.google.android.maps.MapView; * This is the standard version of the UserOverlay. * @author ricky barrette */ -public class UserOverlay extends UserOverlayBase{ +public class UserOverlay extends BaseUserOverlay{ - private AndroidGPS mAndroidGPS; + private final AndroidGPS mAndroidGPS; public UserOverlay(MapView mapView, Context context) { super(mapView, context);