使用GPS NMEA字符串处理来自外部蓝牙设备的数据

时间:2014-08-06 08:42:08

标签: android bluetooth gps external android-bluetooth

我们有外部蓝牙设备,可以为Android设备提供不同类型的数据。其中它还提供GPS NMEA字符串。 GPS NMEA数据应该用于更新android系统GPS模块。其他数据将在我们的应用程序中解析。

如何实现这一目标?

ATM:我解析来自外部设备的所有数据,但android GPS模块不接收NMEA字符串。 GPS必须由android系统GPS模块处理才能更新导航软件。该软件仅使用Android GPS数据,它不支持从其他应用程序中抽取数据的功能。

2 个答案:

答案 0 :(得分:0)

CM版本< = 10支持GPS源选择,您可以从中选择配对设备并将其用作GPS源。


有一个xposed模块适用于android> = 4.2 https://plus.google.com/communities/104930572010612794860


如果你没有卫星信息的问题,你也可以使用PlayStore的蓝牙Gps(需要模拟位置) https://play.google.com/store/apps/details?id=googoo.android.btgps&hl=it

答案 1 :(得分:0)

解决方案:我使用了模拟位置。目前无法避免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);

注意: 启用&#34;允许模拟位置&#34;在android设置中!