diff --git a/gpsrelaysentinel/src/main/AndroidManifest.xml b/gpsrelaysentinel/src/main/AndroidManifest.xml index 59a3bf0..2c92a4a 100644 --- a/gpsrelaysentinel/src/main/AndroidManifest.xml +++ b/gpsrelaysentinel/src/main/AndroidManifest.xml @@ -3,6 +3,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" package="cc.winboll.studio.gpsrelaysentinel"> + + + + + diff --git a/gpsrelaysentinel/src/main/java/cc/winboll/studio/gpsrelaysentinel/MainService.java b/gpsrelaysentinel/src/main/java/cc/winboll/studio/gpsrelaysentinel/MainService.java new file mode 100644 index 0000000..1bad227 --- /dev/null +++ b/gpsrelaysentinel/src/main/java/cc/winboll/studio/gpsrelaysentinel/MainService.java @@ -0,0 +1,88 @@ +package cc.winboll.studio.gpsrelaysentinel; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; +import android.os.Bundle; +import android.os.IBinder; +import cc.winboll.studio.libappbase.LogUtils; + +public class MainService extends Service { + + public static final String TAG = "MainService"; + private LocationManager mLocationManager; + private LocationListener mLocationListener; + + @Override + public void onCreate() { + super.onCreate(); + LogUtils.d(TAG, "Service onCreate"); + initLocation(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + LogUtils.d(TAG, "Service onStartCommand"); + return START_STICKY; + } + + private void initLocation() { + mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + mLocationListener = new LocationListener() { + @Override + public void onLocationChanged(Location location) { + LogUtils.d(TAG, "Location changed: " + location.getLatitude() + ", " + location.getLongitude()); + } + + @Override + public void onStatusChanged(String provider, int status, Bundle extras) { + LogUtils.d(TAG, "Status changed: " + provider + ", status: " + status); + } + + @Override + public void onProviderEnabled(String provider) { + LogUtils.d(TAG, "Provider enabled: " + provider); + } + + @Override + public void onProviderDisabled(String provider) { + LogUtils.d(TAG, "Provider disabled: " + provider); + } + }; + + try { + if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + mLocationManager.requestLocationUpdates( + LocationManager.GPS_PROVIDER, + 1000, + 1, + mLocationListener + ); + LogUtils.d(TAG, "GPS location updates requested"); + } + } catch (SecurityException e) { + LogUtils.e(TAG, "Permission denied: " + e.getMessage()); + } + } + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (mLocationManager != null && mLocationListener != null) { + try { + mLocationManager.removeUpdates(mLocationListener); + } catch (SecurityException e) { + LogUtils.e(TAG, "Permission denied when removing updates: " + e.getMessage()); + } + } + LogUtils.d(TAG, "Service onDestroy"); + } +}