2016-02-14 32 views
1

我有一个跟踪用户位置的应用程序。 我的应用使用FusedLocationApi,Google使用Google Play服务获取设备位置的新方式。Fused Location Api从GPS获取时间

的,我从GPS得到的位置

提供被标记为

因为应用程序的用户可以更改设备的时间,它从GPS得到真正的时间是非常重要的。

问题是,当我试图从Location对象获取的时候,它会返回设备时没有GPS的时间。

的任何解决方案,以获得在这种情况下,GPS的时间是赞赏。

private Location mLastLocation;  

public void onConnected(Bundle arg0) { 

    LocationServices.FusedLocationApi.requestLocationUpdates(
      mGoogleApiClient, mLocationRequest, this); 
} 

public void onLocationChanged(Location location) { 

    mLastLocation = LocationServices.FusedLocationApi 
      .getLastLocation(mGoogleApiClient); 

    if (mLastLocation != null) { 

     double latitude = mLastLocation.getLatitude(); 
     double longitude = mLastLocation.getLongitude(); 
     Date date = new Date(mLastLocation.getTime()); 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");    
     String time = dateFormat.format(date) 
} 
+0

您必须禁止使用网络的位置提供。 – theWalker

+0

见:http://stackoverflow.com/questions/4418344/android-problem-finding-out-how-recent-latest-gps-fix-is – theWalker

+0

@skippy:对不起,响应延迟。你是对的 。这可以通过'LocationManager'实现,但是我怎么能在'FusedLocationApi'中做到这一点?这个解决方案可能吗? – deuxdeux

回答

1

要获得GPS UTC,做到在正常方式:

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this); 
// not LocationManager.NETWORK_PROVIDER 

@Override 
public void onLocationChanged(Location location) 
{ 
    long utc = location.getTime(); 
    // .... 
} 
+0

这是伟大的,但你提到这部作品在正常方式('LocationManager') – deuxdeux

+1

你可以偶尔运行此服务,GPS UTC与系统时间或FusedLocationApi – theWalker

+0

好主意,但我需要GPS的时间为每一个报告的时间之间的数增量点 – deuxdeux

相关问题