gpt4 book ai didi

android - Android 中的 GPS 时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:47 24 4
gpt4 key购买 nike

我正在寻找一种在我的应用程序中显示 GPS 时间的方法。最简单的方法是什么?

(必须是 GPS 时间,因为 gps 时间和内部系统时间之间存在细微的时间差异)

谢谢

最佳答案

获取 GPS 时间可能会相当困惑!为了扩展已接受答案中的讨论,onLocationChanged() 回调中的 getTime() 会根据位置的不同给出不同的答案(不一定是 GPS)信息被检索,(基于 Nexus 5 测试):

(a) 如果使用 Google FusedLocationProviderApi(Google 位置服务 API),则 getProvider() 将返回“融合”,而 getTime() 将返回设备时间(System. currentTimeMillis())

(b) 如果使用 Android LocationManager(Android Location API),则根据手机的“位置”设置和 requestLocationUpdates 设置(LocationManager.NETWORK_PROVIDER 和/或LocationManager.GPS_PROVIDER), getProvider() 将返回:

  • 要么是“网络”,在这种情况下,getTime() 将返回设备时间 (System.currentTimeMillis())。
  • 或者“gps”,在这种情况下,getTime 将返回 GPS(卫星)时间。

本质上:“融合”使用 GPS 和 Wi-Fi/网络,“网络”使用 Wi-Fi/网络,“gps”使用 GPS。

因此,要获取 GPS 时间,请使用将 requestLocationUpdates 设置为 LocationManager.GPS_PROVIDER 的 Android LocationManager。 (注意在这种情况下 getTime() 毫秒部分始终为 000)

这是一个使用 Android LocationManager(Android Location API)的例子:

public void InitialiseLocationListener(android.content.Context context) {

android.location.LocationManager locationManager = (android.location.LocationManager)
context.getSystemService(android.content.Context.LOCATION_SERVICE);

android.location.LocationListener locationListener = new android.location.LocationListener() {

public void onLocationChanged(android.location.Location location) {

String time = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS").format(location.getTime());

if( location.getProvider().equals(android.location.LocationManager.GPS_PROVIDER))
android.util.Log.d("Location", "Time GPS: " + time); // This is what we want!
else
android.util.Log.d("Location", "Time Device (" + location.getProvider() + "): " + time);
}

public void onStatusChanged(String provider, int status, android.os.Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};

if (android.support.v4.content.ContextCompat.checkSelfPermission(context,
android.Manifest.permission.ACCESS_FINE_LOCATION) != android.content.pm.PackageManager.PERMISSION_GRANTED) {
android.util.Log.d("Location", "Incorrect 'uses-permission', requires 'ACCESS_FINE_LOCATION'");
return;
}

locationManager.requestLocationUpdates(android.location.LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
locationManager.requestLocationUpdates(android.location.LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
// Note: To Stop listening use: locationManager.removeUpdates(locationListener)
}

关于android - Android 中的 GPS 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com