From 0731e85f9b42673460419bcd19e65c63f36db78c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Oct 2020 22:18:00 +0800 Subject: [PATCH] add loc --- .idea/misc.xml | 2 +- .../src/main/AndroidManifest.xml | 3 + .../module/service/MogoServiceProvider.java | 2 + .../service/location/MogoRTKLocation.java | 90 +++++++++++++++++++ 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java 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"); + } + } +}