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

本文介绍了如何在Android中获取手机的位置源,包括使用LocationManager服务获取位置提供者,通过GPS_PROVIDER得到位置信息,并详细讲述了如何获取位置的精度、耗电情况以及监听位置变化来捕获经度、纬度、海拔和方向数据。别忘了在AndroidManifest.xml中添加ACCESS_FINE_LOCATION权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.getLongitude(); //纬度
			}   
		}



      %%

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

             getjBearing();//获取方向信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值