Android的GPS定位

import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
	private LocationManager lm;
	private MyListener listener;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		//获取位置管理服务
		lm = (LocationManager) getSystemService(LOCATION_SERVICE);
		//查询条件
		Criteria criteria = new Criteria();
		//参数  ACCURACY_FINE:精确    ACCURACY_HIGH:比较精确  误差小于100  ACCURACY_LOW:误差小于500米   ACCURACY_MEDIUM:误差在100-500米    ACCURACY_COARSE:初略的位置
		criteria.setAccuracy(Criteria.ACCURACY_FINE);//精确定位
		//获取海拔信息
		criteria.setAltitudeRequired(true);
		//设置用电量为高级别
		criteria.setPowerRequirement(Criteria.POWER_HIGH);
		//网络定位的时候设置,表示是否话费费用
		criteria.setCostAllowed(true);
		String provider = lm.getBestProvider(criteria , true);//第二个参数表示  返回可用的定位信息   因为定位功能可能被关闭,被关闭的话就不可用了
		System.out.println("provider--->"+provider);
		
		
		/**
		 * 获取用户位置
		 * 1.用哪种方法定位,这里的provider是由上面获取的,系统自己计算出用哪个方法定位最好
		 * 2.两次获取位置信息之间的间隔(推荐大于60秒  也就是600000   设置为0表示不关心时间  只要能得到位置信息就获取)
		 * 3.每隔几米获取一次位置信息  0表示不关心  只要能获取到位置信息就获取
		 */
		listener = new MyListener();
		lm.requestLocationUpdates(provider, 100, 1, listener);
	}
	  
	private class MyListener implements LocationListener{
		//当位置变化的时候调用该方法
		public void onLocationChanged(Location location) {
			float accuracy = location.getAccuracy();//精确度
			double latitude = location.getLatitude();//纬度
			double longitude = location.getLongitude();//经度
			
			TextView tv = new TextView(getApplicationContext());
			tv.setText("精确度-->"+accuracy+"\n纬度-->"+latitude+"\n经度-->"+longitude);
			setContentView(tv);
		}
		//当位置提供者不可用的时候调用该方法   例如用户将定位功能手动关闭的时候
		public void onStatusChanged(String provider, int status, Bundle extras) {
			
		}
		//当位置提供者可用的时候调用该方法
		public void onProviderEnabled(String provider) {
			
		}
		//当状态发生改变的时候调用该方法    可用--->不可用   不可用--->可用
		public void onProviderDisabled(String provider) {
			
		}
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		lm.removeUpdates(listener);//在关闭界面的时候,取消位置监听
	}
}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值