gps获取经纬度

来源:互联网 发布:送餐抢单软件 编辑:程序博客网 时间:2024/04/27 18:33

private LocationManager locationManager;    //位置管理者private String provider;    //位置提供器  比如gps  network

locationManager = (LocationManager) mActivity.getSystemService(Context.LOCATION_SERVICE);



//获取经纬度private void getLocation() {    Location location = getBestLocation(locationManager);    Toast.makeText(mContext, "location:"+location, Toast.LENGTH_SHORT).show();    //为位置管理者设置位置监听。参数: 1位置提供器  2多少毫秒 3多少米  4位置监听器    locationManager.requestLocationUpdates(provider, 5000, 1, locationListener);}//获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时 //则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空private Location getBestLocation(LocationManager locationManager) {    Location result = null;    if (locationManager != null) {        result = locationManager                .getLastKnownLocation(LocationManager.GPS_PROVIDER);        provider = LocationManager.GPS_PROVIDER;        if (result != null) {            return result;        } else {            result = locationManager                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);            provider = LocationManager.NETWORK_PROVIDER;            return result;        }    }    return result;}//位置监听器LocationListener locationListener = new LocationListener() {    @Override    public void onLocationChanged(Location location) {        showLocation(location);    }    @Override    public void onStatusChanged(String provider, int status, Bundle extras) {    }    @Override    public void onProviderEnabled(String provider) {    }    @Override    public void onProviderDisabled(String provider) {    }};//销毁时解除位置监听@Overridepublic void onDestroy() {    super.onDestroy();    if (locationManager != null){        locationManager.removeUpdates(locationListener);    }}//吐司弹出经纬度private void showLocation(Location location) {    Toast.makeText(mContext, "纬度:"+location.getLatitude()+"经度:"+location.getLongitude(), Toast.LENGTH_SHORT).show();}


先创建位置管理者 ,通过位置管理者的getLastKnowLocation方法传入位置提供器来获取location对象。

注意:获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时 ,

则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空。

直接复制getBestLocation方法传入locationManager即可。


LocationManager可以设置位置变化监听器。requestLocationUpdates,传入位置提供器(gps、network)、毫秒、米、位置变化监听器。主要写监听器里面的onLocationChange方法。

销毁时判断locationManager是否为空,不为空时解除位置变化监听器removeUpdates。



参照博客:http://blog.csdn.net/zhangyu_kenshin/article/details/50651409


需要的权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.INTERNET" />

0 0
原创粉丝点击