我正在尝试使用LocationManager类获取当前位置,但我没有在onLocationChanged方法中获得任何结果。
我在一个片段
中这样做 LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new myLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 0, locationListener);
private class myLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "Location Changed");
Toast.makeText(getActivity(), location.getLatitude() + " " + location.getLongitude(), Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
答案 0 :(得分:0)
在项目中创建一个新类,将其命名为GPSTracker.java并复制下面的内容:
很抱歉无法将此内容放在此处,因此您必须搜索此课程,您将从here获取,然后您想要当前的纬度和经度,只需使用此代码:
GPSTracker mTracker = new GPSTracker(MyActivity.this);
double lat = mTracker.getLatitude(); double lng = mTracker.getLongitude();
答案 1 :(得分:0)
首先,您必须在 AndroidManifest.xml 文件中添加android.permission.ACCESS_FINE_LOCATION权限。
之后,您可以使用下一个代码获取最后一个已知位置:
Criteria criteria = new Criteria();
String provider = mLocationManager.getBestProvider(criteria, true);
Location location = mLocationManager.getLastKnownLocation(provider);
您可以在条件中设置功率和准确度要求。 e.g:
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
如果未启用上次已知位置,或者您需要继续更新位置,则应设置位置监听器。
但您显示的代码应正确设置。 因此,可能您没有在设备上打开位置,或者您没有权限。
最好使用LocationManager.GPS_PROVIDER,Criteria with requirements,因为有时GPS提供程序是禁用的,但您可以使用网络获取位置。