关于定位,
前面两个博客,主要介绍了 查看手机上的定位支持
和判断GPS是否开启,
而手机上的三种定位各有特色, 无源定位,网络定位,GPS定位
手机会根据目前的情况根据用户的要求开启的一个支持的定位方式
下面的案例就是,按用户需求的一个定位(应该筛选的是GPS)
主要功能在于,
Criteria 我们给定位管理器设置的我们的条件需求,
Location.requestLocationUpdates() 并加入更新地址的方法,
1.全局变量部分,Criteria才是重点的条件,其他保持一致
private TextView text11;private LocationManager lm; //【位置服务】private Criteria ca; //【条件】
2.主方法,设置条件属性,并加入更新
重点是最后一句代码
(注意! 更新最后的一个参数是个内部类哦)
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text11=(TextView) findViewById(R.id.text11);lm=(LocationManager) getSystemService(Context.LOCATION_SERVICE);//【设置条件的属性】----------------------------------------- ca=new Criteria();ca.setSpeedRequired(true); //速度ca.setBearingRequired(true); // 方位ca.setAltitudeRequired(true); //高度ca.setAccuracy(Criteria.ACCURACY_FINE); //精度,最好的ca.setPowerRequirement(Criteria.ACCURACY_LOW); //电池, 低功耗ca.setCostAllowed(true); //费用String str=lm.getBestProvider(ca, true);//请求地址更新(提供者:GPS,记时时间:2秒,记录距离:1米,更新的事件)lm.requestLocationUpdates("gps ", 2000, 1, new Mydingwei());}
3.类部类承担着大任,其实看成 一个点击事件最好理解,和点击按钮的原理差不多的,
内部类实现了位置事件的接口,自动带入了4个方法,
前三个发送任何改动,都要调用更新的方法,获取到系统的参数
传个textview显示的面板上
class Mydingwei implements LocationListener {@Override//位置发生改变public void onLocationChanged(Location h) { update(h);}@Override//提供者失效public void onProviderDisabled(String h) { update(lm.getLastKnownLocation(h) );}@Override//提供者激活public void onProviderEnabled(String h) { }@Override//状态发生改变public void onStatusChanged(String arg0, int arg1, Bundle arg2) { }
}private void update(Location ln){if(ln!=null){StringBuffer sb=new StringBuffer();sb.append("速度:"+ln.getSpeed());sb.append("精度:"+ln.getAccuracy());sb.append("高度 :"+ln.getAltitude());sb.append("方位 :"+ln.getBearing());sb.append("维度:"+ln.getLatitude());text11.setText(sb.toString());}else{text11.setText("没有找到定位信息");}}
- –
总结感悟
-
了解定位类的使用方法
(关于系统服务,硬件相关的服务都大同小异,经常用需要仔细看看) -
判断GPS是否开启,
(代码简单,实用性很强,牢记如何判断,如何进入系统,功能用途广) -
定位条件设定
(系统的GPS定位设置条件,实战强,效果慢,记住代码用法即可)
后续:
** 百度API定位效率比较高,项目中可能以第三方的新技术取代多学习第三方是知识,也是学习中的一大亮点特色的加分项
**学无止境,多学别人不知道的知识,从细节抓起,知识最值钱