解决方案:我使用了模拟位置。目前无法避免 GPS NMEA 字符串解析。
代码:
String mocLocationProvider = LocationManager.GPS_PROVIDER;
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.addTestProvider(mocLocationProvider, false, false, false, false, true, true, false, Criteria.POWER_LOW, Criteria.ACCURACY_HIGH);
mLocationManager.setTestProviderEnabled(mocLocationProvider, true);
mLocationManager.setTestProviderStatus(mocLocationProvider, LocationProvider.AVAILABLE, null, System.currentTimeMillis());
//update location
Location mCurrentLocation = new Location(mocLocationProvider);
mCurrentLocation.setLatitude(mGPSCurrLat);
mCurrentLocation.setLongitude(mGPSCurrLon);
mCurrentLocation.setAccuracy(1);
mCurrentLocation.setTime(mGPSCurrTimeUTC); //long getTime() from UTC string
mCurrentLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
mLocationManager.setTestProviderLocation(mocLocationProvider, mCurrentLocation);
注意:
在 Android 设置中启用“允许模拟位置”!