diff --git a/.idea/misc.xml b/.idea/misc.xml
index 47f1a4e1d4..2db9aab721 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/modules/mogo-module-service/src/main/AndroidManifest.xml b/modules/mogo-module-service/src/main/AndroidManifest.xml
index 8eb5a9dd2c..5ff3cff7d9 100644
--- a/modules/mogo-module-service/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-service/src/main/AndroidManifest.xml
@@ -1,6 +1,9 @@
+
+
+
{
MogoServices.getInstance().init( AbsMogoApplication.getApp() );
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java
new file mode 100644
index 0000000000..9087fc2698
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java
@@ -0,0 +1,90 @@
+package com.mogo.module.service.location;
+
+import android.content.Context;
+import android.location.Criteria;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.utils.logger.Logger;
+
+public class MogoRTKLocation {
+
+ private static final String TAG = "MogoRTKLocation";
+ private LocationManager locationManager;
+
+ public static MogoRTKLocation getInstance() {
+ return RTKHolder.rtkLoc;
+ }
+
+ private static class RTKHolder {
+ private static final MogoRTKLocation rtkLoc = new MogoRTKLocation();
+ }
+
+ private MogoRTKLocation() {
+
+ }
+
+ public void init() {
+ locationManager = (LocationManager) AbsMogoApplication.getApp().getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
+ String provider = locationManager.getBestProvider(getCriteria(), true);
+ Logger.d(TAG, "init provider : " + provider);
+ if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+ try {
+ locationManager.requestLocationUpdates(provider, 0, 0, locationListener);
+ Location location = locationManager.getLastKnownLocation(provider);
+ if (location != null) {
+ Logger.i(TAG, "location : " + location.toString());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logger.d(TAG, "RTK LocationManager requestLocationUpdates has Exception : " + e.getMessage());
+ }
+ } else {
+ Logger.d(TAG, "RTK LocationManager Provider GPS_PROVIDER unable");
+ }
+ }
+
+ private Criteria getCriteria() {
+ Criteria criteria = new Criteria();
+ criteria.setAccuracy(Criteria.ACCURACY_FINE); //高精
+ criteria.setAltitudeRequired(false);
+ criteria.setBearingRequired(true);
+ criteria.setSpeedRequired(true);
+ criteria.setPowerRequirement(Criteria.POWER_LOW);
+ return criteria;
+ }
+
+ private LocationListener locationListener = new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ Logger.d(TAG, "onLocationChanged : " + location.toString());
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ Logger.d(TAG, "onStatusChanged status: " + status);
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ Logger.d(TAG, "onProviderEnabled");
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ Logger.d(TAG, "onProviderEnabled");
+ }
+ };
+
+ public void stop() {
+ Logger.d(TAG, "stop RTK Location");
+ if (locationManager != null && locationListener != null) {
+ locationManager.removeUpdates(locationListener);
+ } else {
+ Logger.d(TAG, "stop failed , reason : loc" + locationManager + " , or loc listener: " + locationListener + " is null");
+ }
+ }
+}