Ken*_*Ken 24
获得GPS时间可能相当混乱!为了扩展已接受答案中的讨论,onLocationChanged()回调中的getTime()根据如何检索位置(不一定是GPS)信息给出不同的答案(基于Nexus 5测试):
(a)如果使用Google FusedLocationProviderApi(Google Location Services API),那么getProvider()将返回'fused',而getTime()将返回设备时间(System.currentTimeMillis())
(b)如果使用Android LocationManager(Android Location API),则根据手机的"位置"设置和requestLocationUpdates设置(LocationManager.NETWORK_PROVIDER和/或LocationManager.GPS_PROVIDER),getProvider()将返回:
基本上:'融合'使用GPS和Wi-Fi /网络,'网络'使用Wi-Fi /网络,'gps'使用GPS.
因此,要获得GPS时间,请使用Android LocationManager,并将requestLocationUpdates设置为LocationManager.GPS_PROVIDER.(注意,在这种情况下,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)
}
Run Code Online (Sandbox Code Playgroud)
每当您从GPS收到修复程序时,onLocationChanged都会调用该方法.此方法的参数是.的实例Location.此参数的一种方法是为getTime您提供所需的信息.那就是如果我找对了你想要的东西.在这里阅读更多
| 归档时间: |
|
| 查看次数: |
16613 次 |
| 最近记录: |