Android 融合定位Api从GPS获取时间

Android 融合定位Api从GPS获取时间,android,time,gps,fusedlocationproviderapi,Android,Time,Gps,Fusedlocationproviderapi,我有一个跟踪用户位置的应用程序。 我的应用程序使用了FusedLocationApi,这是Google使用Google Play服务获取设备位置的新方法 我从GPS提供的位置的提供者被标记为融合 由于应用程序用户可能会更改设备时间,因此从GPS获取实时信息非常重要 问题是,当我试图从位置对象获取时间时,它返回的是设备时间,而不是GPS时间 在这种情况下,任何获得GPS时间的解决方案都是值得赞赏的 private Location mLastLocation; public void o

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

我从GPS提供的位置的提供者被标记为融合

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

问题是,当我试图从
位置
对象获取时间时,它返回的是设备时间,而不是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)
}

要获取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();
    // ....
}

您必须禁用将网络用作位置提供程序。请参阅:@skippy:抱歉,响应延迟。你是对的。这在
LocationManager
中是可能的,但是在
FusedLocationApi
中如何做到这一点?这个解决方案可行吗?告诉我,你为什么使用FuseLocatinApi?这对您有什么特别之处?
FusedLocationApi
提供了更高的精确度和更少的电池消耗。它是一个“融合”定位提供商,所以它混合使用GPS和网络提供的定位,让您在精度和电池消耗之间进行权衡。它也可以独立于操作系统进行更新,因此更新的发布周期更短。观看这段视频非常棒,但正如您所提到的,它以正常方式工作(
LocationManager
),您可以偶尔运行此服务,以计算GPS UTC与系统时间或FusedLocationApi报告的时间之间的差值