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-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
android:name="android.hardware.location"
android:required="true" />
@@ -19,26 +14,19 @@
android:name="android.hardware.location.gps"
android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS" >
</uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" >
</uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK" >
</uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH" >
</uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_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>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:icon="@drawable/icon"
@@ -59,8 +47,7 @@
<activity
android:name=".ui.RingerInformationActivity"
android:configChanges="keyboard|orientation" >
</activity>
android:configChanges="keyboard|orientation" />
<receiver
android:name=".receivers.SystemReceiver"
@@ -68,40 +55,33 @@
android:exported="true"
android:process=":SysyemEventReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" >
</action>
<action android:name="android.intent.action.BATTERY_LOW" >
</action>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" >
</action>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>
<receiver
android:name=".receivers.LocationReceiver"
android:name=".receivers.LocationChangedReceiver"
android:enabled="true"
android:exported="true"
android:process=":LocationReceiver" >
<intent-filter>
<action android:name="com.TwentyCodes.android.LocationRinger.action.LocationUpdate" >
</action>
<action android:name="TwentyCodes.intent.action.LocationUpdate" />
</intent-filter>
</receiver>
<service
android:name=".services.LocationService"
android:enabled="true"
android:process=":LocationService" >
</service>
android:process=":LocationService" />
<service
android:name=".services.RingerProcessingService"
android:enabled="true"
android:process=":RingerProcessingService" >
</service>
android:process=":RingerProcessingService" />
<activity
android:name=".ui.SettingsActivity"
android:enabled="true" >
</activity>
android:enabled="true" />
<receiver
android:name=".receivers.GetLocationWidget"
@@ -117,22 +97,19 @@
<activity
android:name="com.TwentyCodes.android.exception.ExceptionReportActivity"
android:configChanges="keyboard|orientation" >
</activity>
android:configChanges="keyboard|orientation" />
<activity
android:name="com.TwentyCodes.android.SkyHook.Splash"
android:configChanges="keyboard|orientation"
android:screenOrientation="portrait" >
</activity>
android:screenOrientation="portrait" />
<service android:name="com.TwentyCodes.android.exception.ReportPostingService" >
</service>
<service android:name="com.TwentyCodes.android.exception.ReportPostingService" />
<receiver
android:name=".receivers.PassiveLocationChangedReceiver"
android:enabled="true"
android:exported="true" >
</receiver>
android:exported="true"
android:process=":PassiveLocationChangedReceiver" />
</application>
</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.services.LocationService;
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
@@ -48,7 +49,7 @@ public final String TAG = "GetLocationWidget";
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")))
.setAction(LocationReceiver.LR_ACTION_UPDATE);
.setAction(LocationLibraryConstants.INTENT_ACTION_UPDATE);
//create a pending intent to start the post activity
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.services.RingerProcessingService;
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.
* @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";
private static final String TAG = "LocationReceiver";
protected static String TAG = "LocationReceiver";
@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(INTENT_EXTRA_LOCATION_PARCEL, location));
mContext.startService(new Intent(mContext, RingerProcessingService.class).putExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED, location));
else
if(Debug.DEBUG)
Log.d(TAG, "location accuracy = "+ location.getAccuracy()+" ignoring");

View File

@@ -6,37 +6,14 @@
*/
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
*/
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.services.LocationService;
import com.TwentyCodes.android.LocationRinger.ui.SettingsActivity;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.location.PassiveLocationListener;
/**
@@ -45,7 +46,7 @@ public class SystemReceiver extends BroadcastReceiver {
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_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
@@ -53,7 +54,7 @@ public class SystemReceiver extends BroadcastReceiver {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
if(context.getSharedPreferences(SettingsActivity.SETTINGS, Context.MODE_WORLD_READABLE).getBoolean(SettingsActivity.START_ON_BOOT, false)){
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.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.debug.LocationLibraryConstants;
import com.TwentyCodes.android.exception.ExceptionHandler;
import com.TwentyCodes.android.location.GeoUtils;
import com.google.android.maps.GeoPoint;
@@ -147,7 +148,7 @@ public class RingerProcessingService extends Service {
if (values.get(RingerDatabase.KEY_UPDATE_INTERVAL) != null){
Intent i = new Intent(this, LocationService.class)
.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);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
@@ -294,8 +295,8 @@ public class RingerProcessingService extends Service {
// backup();
// }
if(intent.getParcelableExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL) != null){
this.mLocation = intent.getParcelableExtra(LocationReceiver.INTENT_EXTRA_LOCATION_PARCEL);
if(intent.getParcelableExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED) != null){
this.mLocation = intent.getParcelableExtra(LocationLibraryConstants.INTENT_EXTRA_LOCATION_CHANGED);
processRingers();
}else if(Debug.DEBUG)
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.db.DatabaseListener;
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.SkyHook.SkyHookRegistration;
import com.TwentyCodes.android.SkyHook.Splash;
import com.TwentyCodes.android.debug.LocationLibraryConstants;
import com.TwentyCodes.android.location.PassiveLocationListener;
import com.skyhookwireless.wps.RegistrationCallback;
import com.skyhookwireless.wps.WPSContinuation;
@@ -210,7 +212,7 @@ public class ListActivity extends Activity implements OnItemClickListener, OnCli
@Override
protected void onDestroy() {
restartService();
PassiveLocationListener.requestPassiveLocationUpdates(this);
PassiveLocationListener.requestPassiveLocationUpdates(this, new Intent(this, PassiveLocationChangedReceiver.class));
super.onDestroy();
}
@@ -334,7 +336,7 @@ public class ListActivity extends Activity implements OnItemClickListener, OnCli
//start the new service
Intent i = new Intent(this, LocationService.class)
.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);
}