Cleaned up code involving location broadcasts and the location lib

Updates.

closes #54

Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
2012-05-16 10:45:06 -04:00
parent 54c692718a
commit 5407d10b29
7 changed files with 52 additions and 92 deletions

View File

@@ -7,11 +7,6 @@
<uses-sdk android:minSdkVersion="7" /> <uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature <uses-feature
android:name="android.hardware.location" android:name="android.hardware.location"
android:required="true" /> android:required="true" />
@@ -19,26 +14,19 @@
android:name="android.hardware.location.gps" android:name="android.hardware.location.gps"
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > <uses-permission android:name="android.permission.INTERNET" />
</uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" > <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</uses-permission> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" > <uses-permission android:name="android.permission.WRITE_SETTINGS" />
</uses-permission> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" > <uses-permission android:name="android.permission.WAKE_LOCK" />
</uses-permission> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH" > <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
</uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" > <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
</uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<application <application
android:icon="@drawable/icon" android:icon="@drawable/icon"
@@ -59,8 +47,7 @@
<activity <activity
android:name=".ui.RingerInformationActivity" android:name=".ui.RingerInformationActivity"
android:configChanges="keyboard|orientation" > android:configChanges="keyboard|orientation" />
</activity>
<receiver <receiver
android:name=".receivers.SystemReceiver" android:name=".receivers.SystemReceiver"
@@ -68,40 +55,33 @@
android:exported="true" android:exported="true"
android:process=":SysyemEventReceiver" > android:process=":SysyemEventReceiver" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" > <action android:name="android.intent.action.BOOT_COMPLETED" />
</action> <action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.BATTERY_LOW" > <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</action>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" >
</action>
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver <receiver
android:name=".receivers.LocationReceiver" android:name=".receivers.LocationChangedReceiver"
android:enabled="true" android:enabled="true"
android:exported="true" android:exported="true"
android:process=":LocationReceiver" > android:process=":LocationReceiver" >
<intent-filter> <intent-filter>
<action android:name="com.TwentyCodes.android.LocationRinger.action.LocationUpdate" > <action android:name="TwentyCodes.intent.action.LocationUpdate" />
</action>
</intent-filter> </intent-filter>
</receiver> </receiver>
<service <service
android:name=".services.LocationService" android:name=".services.LocationService"
android:enabled="true" android:enabled="true"
android:process=":LocationService" > android:process=":LocationService" />
</service>
<service <service
android:name=".services.RingerProcessingService" android:name=".services.RingerProcessingService"
android:enabled="true" android:enabled="true"
android:process=":RingerProcessingService" > android:process=":RingerProcessingService" />
</service>
<activity <activity
android:name=".ui.SettingsActivity" android:name=".ui.SettingsActivity"
android:enabled="true" > android:enabled="true" />
</activity>
<receiver <receiver
android:name=".receivers.GetLocationWidget" android:name=".receivers.GetLocationWidget"
@@ -117,22 +97,19 @@
<activity <activity
android:name="com.TwentyCodes.android.exception.ExceptionReportActivity" android:name="com.TwentyCodes.android.exception.ExceptionReportActivity"
android:configChanges="keyboard|orientation" > android:configChanges="keyboard|orientation" />
</activity>
<activity <activity
android:name="com.TwentyCodes.android.SkyHook.Splash" android:name="com.TwentyCodes.android.SkyHook.Splash"
android:configChanges="keyboard|orientation" android:configChanges="keyboard|orientation"
android:screenOrientation="portrait" > android:screenOrientation="portrait" />
</activity>
<service android:name="com.TwentyCodes.android.exception.ReportPostingService" > <service android:name="com.TwentyCodes.android.exception.ReportPostingService" />
</service>
<receiver <receiver
android:name=".receivers.PassiveLocationChangedReceiver" android:name=".receivers.PassiveLocationChangedReceiver"
android:enabled="true" android:enabled="true"
android:exported="true" > android:exported="true"
</receiver> android:process=":PassiveLocationChangedReceiver" />
</application> </application>
</manifest> </manifest>

View File

@@ -18,6 +18,7 @@ import com.TwentyCodes.android.LocationRinger.R;
import com.TwentyCodes.android.LocationRinger.debug.Debug; import com.TwentyCodes.android.LocationRinger.debug.Debug;
import com.TwentyCodes.android.LocationRinger.services.LocationService; import com.TwentyCodes.android.LocationRinger.services.LocationService;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity; import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
/** /**
* This widget will be used to force a Location update from the users home screen * This widget will be used to force a Location update from the users home screen
@@ -48,7 +49,7 @@ public final String TAG = "GetLocationWidget";
Intent intent = new Intent(context, LocationService.class) Intent intent = new Intent(context, LocationService.class)
.putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_WORLD_READABLE).getString(SettingsActivity.ACCURACY , "50"))) .putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_WORLD_READABLE).getString(SettingsActivity.ACCURACY , "50")))
.setAction(LocationReceiver.LR_ACTION_UPDATE); .setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
//create a pending intent to start the post activity //create a pending intent to start the post activity
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

View File

@@ -14,21 +14,22 @@ import android.util.Log;
import com.TwentyCodes.android.LocationRinger.debug.Debug; import com.TwentyCodes.android.LocationRinger.debug.Debug;
import com.TwentyCodes.android.LocationRinger.services.RingerProcessingService; import com.TwentyCodes.android.LocationRinger.services.RingerProcessingService;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity; import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.location.BaseLocationReceiver;
/** /**
* This class will receive broadcast from the location service. it will wake the ringer processing service. * This class will receive broadcast from the location service. it will wake the ringer processing service.
* @author ricky barrette * @author ricky barrette
*/ */
public class LocationReceiver extends com.TwentyCodes.android.location.LocationReceiver { public class LocationChangedReceiver extends BaseLocationReceiver {
public static final String LR_ACTION_UPDATE = "com.TwentyCodes.android.LocationRinger.action.LocationUpdate"; protected static String TAG = "LocationReceiver";
private static final String TAG = "LocationReceiver";
@Override @Override
public void onLocationUpdate(Location location) { public void onLocationUpdate(Location location) {
if(location != null) if(location != null)
if(location.getAccuracy()<= Integer.parseInt(mContext.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_PRIVATE).getString(SettingsActivity.IGNORE_LOCATION, "1000"))) if(location.getAccuracy()<= Integer.parseInt(mContext.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_PRIVATE).getString(SettingsActivity.IGNORE_LOCATION, "1000")))
mContext.startService(new Intent(mContext, RingerProcessingService.class).putExtra(INTENT_EXTRA_LOCATION_PARCEL, location)); mContext.startService(new Intent(mContext, RingerProcessingService.class).putExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED, location));
else else
if(Debug.DEBUG) if(Debug.DEBUG)
Log.d(TAG, "location accuracy = "+ location.getAccuracy()+" ignoring"); Log.d(TAG, "location accuracy = "+ location.getAccuracy()+" ignoring");

View File

@@ -6,37 +6,14 @@
*/ */
package com.TwentyCodes.android.LocationRinger.receivers; package com.TwentyCodes.android.LocationRinger.receivers;
import com.TwentyCodes.android.LocationRinger.debug.Debug;
import com.TwentyCodes.android.LocationRinger.services.RingerProcessingService;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.util.Log;
/** /**
* This class will be used to listen for location updates passively * This class will be used to listen for location updates passively.
* @author ricky barrette * @author ricky barrette
*/ */
public class PassiveLocationChangedReceiver extends com.TwentyCodes.android.location.PassiveLocationChangedReceiver { public class PassiveLocationChangedReceiver extends LocationChangedReceiver {
private static final String TAG = "PassiveLocationChangedReceiver"; static{
TAG = "PassiveLocationChangedReceiver";
}
/**
* (non-Javadoc)
* @see com.TwentyCodes.android.location.PassiveLocationChangedReceiver#onLocationUpdate(android.location.Location)
*/
@Override
public void onLocationUpdate(Location location) {
if(location != null)
if(location.getAccuracy()<= Integer.parseInt(mContext.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_PRIVATE).getString(SettingsActivity.IGNORE_LOCATION, "1000")))
mContext.startService(new Intent(mContext, RingerProcessingService.class).putExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL, location));
else
if(Debug.DEBUG)
Log.d(TAG, "location accuracy = "+ location.getAccuracy()+" ignoring");
else
if(Debug.DEBUG)
Log.d(TAG, "location was null");
}
} }

View File

@@ -16,6 +16,7 @@ import android.util.Log;
import com.TwentyCodes.android.LocationRinger.debug.Debug; import com.TwentyCodes.android.LocationRinger.debug.Debug;
import com.TwentyCodes.android.LocationRinger.services.LocationService; import com.TwentyCodes.android.LocationRinger.services.LocationService;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity; import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.location.PassiveLocationListener; import com.TwentyCodes.android.location.PassiveLocationListener;
/** /**
@@ -45,7 +46,7 @@ public class SystemReceiver extends BroadcastReceiver {
Intent i = new Intent(context, LocationService.class) Intent i = new Intent(context, LocationService.class)
// .putExtra(LocationService.INTENT_EXTRA_PERIOD_BETWEEN_UPDATES, (long) (60000 * Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.UPDATE_INTVERVAL , "10")))) // .putExtra(LocationService.INTENT_EXTRA_PERIOD_BETWEEN_UPDATES, (long) (60000 * Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.UPDATE_INTVERVAL , "10"))))
.putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50"))) .putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(context.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50")))
.setAction(LocationReceiver.LR_ACTION_UPDATE); .setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
/* /*
* if the phone finishes booting, then start the service if the user enabled it * if the phone finishes booting, then start the service if the user enabled it
@@ -53,7 +54,7 @@ public class SystemReceiver extends BroadcastReceiver {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
if(context.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_WORLD_READABLE).getBoolean(SettingsActivity.START_ON_BOOT, false)){ if(context.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_WORLD_READABLE).getBoolean(SettingsActivity.START_ON_BOOT, false)){
context.startService(i); context.startService(i);
PassiveLocationListener.requestPassiveLocationUpdates(context); PassiveLocationListener.requestPassiveLocationUpdates(context, new Intent(context, PassiveLocationChangedReceiver.class));
} }
} }

View File

@@ -31,8 +31,9 @@ import android.widget.Toast;
import com.TwentyCodes.android.LocationRinger.db.RingerDatabase; import com.TwentyCodes.android.LocationRinger.db.RingerDatabase;
import com.TwentyCodes.android.LocationRinger.debug.Debug; import com.TwentyCodes.android.LocationRinger.debug.Debug;
import com.TwentyCodes.android.LocationRinger.receivers.LocationReceiver; import com.TwentyCodes.android.LocationRinger.receivers.LocationChangedReceiver;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity; import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.exception.ExceptionHandler; import com.TwentyCodes.android.exception.ExceptionHandler;
import com.TwentyCodes.android.location.GeoUtils; import com.TwentyCodes.android.location.GeoUtils;
import com.google.android.maps.GeoPoint; import com.google.android.maps.GeoPoint;
@@ -147,7 +148,7 @@ public class RingerProcessingService extends Service {
if (values.get(RingerDatabase.KEY_UPDATE_INTERVAL) != null){ if (values.get(RingerDatabase.KEY_UPDATE_INTERVAL) != null){
Intent i = new Intent(this, LocationService.class) Intent i = new Intent(this, LocationService.class)
.putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(this.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50"))) .putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(this.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50")))
.setAction(LocationReceiver.LR_ACTION_UPDATE); .setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
PendingIntent pi = PendingIntent.getService(this, LocationService.REQUEST_CODE, i, 0); PendingIntent pi = PendingIntent.getService(this, LocationService.REQUEST_CODE, i, 0);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
@@ -294,8 +295,8 @@ public class RingerProcessingService extends Service {
// backup(); // backup();
// } // }
if(intent.getParcelableExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL) != null){ if(intent.getParcelableExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED) != null){
this.mLocation = intent.getParcelableExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL); this.mLocation = intent.getParcelableExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED);
processRingers(); processRingers();
}else if(Debug.DEBUG) }else if(Debug.DEBUG)
Log.d(TAG, "Location was null"); Log.d(TAG, "Location was null");

View File

@@ -31,10 +31,12 @@ import android.widget.Toast;
import com.TwentyCodes.android.LocationRinger.R; import com.TwentyCodes.android.LocationRinger.R;
import com.TwentyCodes.android.LocationRinger.db.DatabaseListener; import com.TwentyCodes.android.LocationRinger.db.DatabaseListener;
import com.TwentyCodes.android.LocationRinger.db.RingerDatabase; import com.TwentyCodes.android.LocationRinger.db.RingerDatabase;
import com.TwentyCodes.android.LocationRinger.receivers.LocationReceiver; import com.TwentyCodes.android.LocationRinger.receivers.LocationChangedReceiver;
import com.TwentyCodes.android.LocationRinger.receivers.PassiveLocationChangedReceiver;
import com.TwentyCodes.android.LocationRinger.services.LocationService; import com.TwentyCodes.android.LocationRinger.services.LocationService;
import com.TwentyCodes.android.SkyHook.SkyHookRegistration; import com.TwentyCodes.android.SkyHook.SkyHookRegistration;
import com.TwentyCodes.android.SkyHook.Splash; import com.TwentyCodes.android.SkyHook.Splash;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.location.PassiveLocationListener; import com.TwentyCodes.android.location.PassiveLocationListener;
import com.skyhookwireless.wps.RegistrationCallback; import com.skyhookwireless.wps.RegistrationCallback;
import com.skyhookwireless.wps.WPSContinuation; import com.skyhookwireless.wps.WPSContinuation;
@@ -210,7 +212,7 @@ public class ListActivity extends Activity implements OnItemClickListener, OnCli
@Override @Override
protected void onDestroy() { protected void onDestroy() {
restartService(); restartService();
PassiveLocationListener.requestPassiveLocationUpdates(this); PassiveLocationListener.requestPassiveLocationUpdates(this, new Intent(this, PassiveLocationChangedReceiver.class));
super.onDestroy(); super.onDestroy();
} }
@@ -334,7 +336,7 @@ public class ListActivity extends Activity implements OnItemClickListener, OnCli
//start the new service //start the new service
Intent i = new Intent(this, LocationService.class) Intent i = new Intent(this, LocationService.class)
.putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(this.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50"))) .putExtra(LocationService.INTENT_EXTRA_REQUIRED_ACCURACY, Integer.parseInt(this.getSharedPreferences(SettingsActivity.SETTINGS, 2).getString(SettingsActivity.ACCURACY , "50")))
.setAction(LocationReceiver.LR_ACTION_UPDATE); .setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
this.startService(i); this.startService(i);
} }