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");
+ }
+}