Android定位入门(3),基础实战部分

关于定位,
前面两个博客,主要介绍了 查看手机上的定位支持
和判断GPS是否开启,

而手机上的三种定位各有特色, 无源定位,网络定位,GPS定位
手机会根据目前的情况根据用户的要求开启的一个支持的定位方式
下面的案例就是,按用户需求的一个定位(应该筛选的是GPS)
Android定位入门(3),基础实战部分_第1张图片

主要功能在于,
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("没有找到定位信息");
      }

  }
    -

总结感悟

  1. 了解定位类的使用方法
    (关于系统服务,硬件相关的服务都大同小异,经常用需要仔细看看)

  2. 判断GPS是否开启,
    (代码简单,实用性很强,牢记如何判断,如何进入系统,功能用途广)

  3. 定位条件设定
    (系统的GPS定位设置条件,实战强,效果慢,记住代码用法即可)

后续:

** 百度API定位效率比较高,项目中可能以第三方的新技术取代
   多学习第三方是知识,也是学习中的一大亮点特色的加分项
**

学无止境,多学别人不知道的知识,从细节抓起,知识最值钱

你可能感兴趣的:(Android定位入门(3),基础实战部分)