您的位置:首页 > 移动开发 > Android开发

android定位基础之获得手机位置源,经度和纬度

2015-07-19 14:13 543 查看
1.获得手机支持的全部位置源名称:

    LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);// 获得位置服务

        List<String> providers = manager.getAllProviders();// 获得全部位置源

        for (Iterator<String> it = providers.iterator(); it.hasNext();) {// 遍历列表

            sb.append(it.next() + "\n");
        }

        sb.toString();

    %%  passive表示被动接受位置更新

2.获得位置源属性:

    LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);// 获得位置服务

    List<String> provider = manager.getProviders(LocationManager.GPS_PRORIDER);// 获得全部位置源

    provider.getAccuracy();//获得精度信息

    provider.getPowerRequirement();//获得耗电信息

  

   %%要实现上部分,还要添加权限:

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

3.位置变化监听事件,获取经度和纬度

  

private double latitude=0.0;
private double longitude =0.0;

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null){
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}else{
LocationListener locationListener = new LocationListener() {

// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

// Provider被enable时触发此函数,比如GPS被打开
@Override
public void onProviderEnabled(String provider) {

}

// Provider被disable时触发此函数,比如GPS被关闭
@Override
public void onProviderDisabled(String provider) {

}

//当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Map", "Location changed : Lat: "
+ location.getLatitude() + " Lng: "
+ location.getLongitude());
}
}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 0,locationListener);
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null){
latitude = location.getLatitude(); //经度
longitude = location.g
4000
etLongitude(); //纬度
}
}


      %%

             getAltitude();// 获取海拔信息

             getjBearing();//获取方向信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: