gpt4 book ai didi

java - 从 Android 设备获取实际位置(不是最后一个)

转载 作者:行者123 更新时间:2023-11-30 09:00:59 26 4
gpt4 key购买 nike

我想从 Android 设备获取实际位置,我知道有返回最后注册位置的函数,我想在我的应用程序上按下一个按钮并知道当前位置,而不是最后一个

这是我的应用程序中的一小段代码

if(GooglePlayServicesUtil.isGooglePlayServicesAvailable(MyActivity.this) == ConnectionResult.SUCCESS){
//get location
LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(2000);
locationRequest.setFastestInterval(1000);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 5, locationListener);
}else{
Intent gpsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsIntent);
}

}

这段代码意味着,在 2 秒 5 米后,我将在下面的监听器上获得位置更新

 @Override
public void onLocationChanged(Location loc) {
if(locationObtained){
return;
}
location = loc;
locationObtained = true;
progressDialog.dismiss();
}

那么,我的工作做得好吗?我正在测试应用程序,但没有收到任何位置更新

最佳答案

当您从 GPS 获取位置时,可能需要一些时间,因为 GPS 模块需要寻找卫星。因此,您需要等待几分钟或几分钟,同时 GPS 模块会找到卫星。如果 WI-FI 位置提供程序可用,您可以更快地获得位置。

您可以在此处找到有关位置提供商的其他信息: http://developer.android.com/guide/topics/location/strategies.html

因为安卓有

GPS_PROVIDER and NETWORK_PROVIDER

您可以同时注册到两者并从 onLocationChanged(Location location) 开始获取事件。到目前为止,一切都很好。现在的问题是我们需要两个结果还是应该取最好的。据我所知,GPS_PROVIDER 结果的准确性高于 NETWORK_PROVIDER。

更新:

例如你有位置监听器:

LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
//here you get locations from both providers
}

public void onProviderDisabled(String provider) {
}

public void onProviderEnabled(String provider) {
}

public void onStatusChanged(String provider, int status, Bundle extras) {
}
};

你需要做这样的事情:

LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationListener);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,locationListener);

但在注册之前,您需要检查此设备上是否提供这些提供程序,例如:

boolean network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
boolean gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

关于java - 从 Android 设备获取实际位置(不是最后一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534722/

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