我已经看过各种代码片段,它们可以找到各种方法的坐标,例如onlocationupdate()或onstatusChanged()....我想要的是一个简单的代码,点击一个按钮即可获取当前的GPS坐标...
答案 0 :(得分:11)
Yogsma的回答讲述了如何接收自动更新。他引用的链接提供了您所需要的一切,但这里是如何进行手动更新的摘要版本:
假设您已经阅读了有关如何创建按钮的教程,那么您只需要为按钮添加一个侦听器,然后让侦听器调用一个函数来查询您的位置管理器。下面的代码全部内联,向您展示如何,但我会在其他地方实例化LocationManager(例如您的活动),并为点击侦听器创建一个单独的方法来调用以执行更新。
// getLocationButton is the name of your button. Not the best name, I know.
getLocationButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// instantiate the location manager, note you will need to request permissions in your manifest
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// get the last know location from your location manager.
Location location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// now get the lat/lon from the location and do something with it.
nowDoSomethingWith(location.getLatitude(), location.getLongitude());
}
});
当然,您还需要在清单xml文件中使用位置管理器服务注册您的活动:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
答案 1 :(得分:7)
LocationManager mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mLocListener = new MyLocationListener();
mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener);
public class MyLocationListener implements LocationListener{
public void onLocationChanged(Location loc) {
String message = String.format(
"New Location \n Longitude: %1$s \n Latitude: %2$s",
loc.getLongitude(), loc.getLatitude()
);
Toast.makeText(LbsGeocodingActivity.this, message, Toast.LENGTH_LONG).show();
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
阅读详细信息http://www.javacodegeeks.com/2010/09/android-location-based-services.html
答案 2 :(得分:4)
没有这样的机制可以根据需要立即获取当前位置。由于您需要查询Netowork或GPS提供商,这可能需要一些时间来实际获取该位置。
一种方法是使用立即返回的getLastKnownLocation。但是这个位置可能是陈旧的。另一种方法是注册PASSIVE_PROVIDER,通过它可以获得位置修复,希望其他应用程序请求定位。