【问题标题】:Fused Location Api Get time from GPSFused Location Api 从 GPS 获取时间
【发布时间】:2016-02-14 08:01:49
【问题描述】:

我有一个跟踪用户位置的应用程序。 我的应用程序使用 FusedLocationApi ,Google 使用 Google Play 服务获取设备位置的新方法。

我通过 GPS 提供的位置提供者被标记为 fused

由于应用程序用户可能会更改设备时间,因此从 GPS 获取实时时间非常重要。

问题是当我尝试从Location object 获取时间时,它返回的是设备时间而不是 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)
}

【问题讨论】:

  • 您必须禁用使用网络作为位置提供者。
  • @skippy :抱歉延迟回复。你说的对 。 LocationManager 可以做到这一点,但我如何在 FusedLocationApi 中做到这一点?这个解决方案可行吗?
  • 告诉我,你为什么使用 FuseLocatinApi?这对您有什么特别之处?
  • FusedLocationApi 提供更好的精度和更少的电池消耗。它是一个“融合”的位置提供商,因此它混合使用 GPS 和网络提供的位置,让您在准确性和电池消耗之间进行权衡。它也可以独立于操作系统进行更新,因此它的更新发布周期更短。看这个视频youtube.com/watch?v=Bte_GHuxUGc

标签: android time gps fusedlocationproviderapi


【解决方案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();
    // ....
}

【讨论】:

  • 这很好,但正如你提到的,这可以正常工作(LocationManager
  • 您可以偶尔运行此服务,以计算 GPS UTC 与系统时间或 FusedLocationApi 报告的时间之间的差异
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 2015-05-16
  • 2016-04-11
  • 2015-04-14
  • 1970-01-01
  • 2015-12-02
  • 2015-08-17
  • 2018-01-15
相关资源
最近更新 更多