在android中使用gps获取当前经度和纬度

时间:2015-03-06 17:59:32

标签: android

我正在尝试使用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) {

    }
}

2 个答案:

答案 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提供程序是禁用的,但您可以使用网络获取位置。