我需要获取当前用户在Android应用程序上的位置,所以我已经阅读了一些教程和Web上的示例,但我看到在所有示例中,位置都是从一个“onLocationChange”意味着每当位置改变时,“onLocationChange”中的代码就被执行。Android - 获取位置只有一次
我只需要在应用程序启动时获取用户位置。
感谢您的帮助!
我需要获取当前用户在Android应用程序上的位置,所以我已经阅读了一些教程和Web上的示例,但我看到在所有示例中,位置都是从一个“onLocationChange”意味着每当位置改变时,“onLocationChange”中的代码就被执行。Android - 获取位置只有一次
我只需要在应用程序启动时获取用户位置。
感谢您的帮助!
您可以使用LocationManager执行此操作。 getLastKnownLocation
在主活动将这个:
boolean bFirst = true;
function void onCreate(blabla) {
if(bFirst) {
//Do your stuff to get the location
bFirst = false;
}
}
把相同的的onResume();
这使得代码只执行一次,但条件测试不断被探测 – 2011-01-19 14:04:44
您可以使用下面的代码获取上一个已知位置。它获取位置提供者并向后遍历数组。即从GPS开始,如果没有GPS则获取网络位置。您可以在需要获取位置时调用此方法。
private double[] getGPS() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = lm.getProviders(true);
/* Loop over the array backwards, and if you get an accurate location, then break out the loop*/
Location l = null;
for (int i=providers.size()-1; i>=0; i--) {
l = lm.getLastKnownLocation(providers.get(i));
if (l != null) break;
}
double[] gps = new double[2];
if (l != null) {
gps[0] = l.getLatitude();
gps[1] = l.getLongitude();
}
return gps;
}
对于其火卫一的建议才能正常工作,你必须让你的AndroidManifest.xml
这将让你摆脱错误的接收0.0
添加这些行内访问getGPS()
方法:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
感谢您的回答,从您的链接看起来,我总是需要设置一个提供商......是吗?让我得到更好的提供者并将其设置在getLastKnownLocation中? – 2011-01-19 14:07:27
是的,那是你需要做的。 – elevine 2011-01-19 14:23:04