手机定位的总结代码

public class GPSActivity extends Activity {
 private LocationManager lm;
 private MyListener listener;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
         lm =  (LocationManager) getSystemService(LOCATION_SERVICE);
        /*
        List<String> lists = lm.getAllProviders();
        for(String list:lists){
         System.out.println(lists);

        结果显示出如下三中定位方式

        GPS:GPS定位

        network:网络定位

        passive: 基站定位
        }
        */
        Criteria criteria = new Criteria();
        //设置位置的精确度 fine精准的位置
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        //获取位置的海拔信息
        criteria.setAltitudeRequired(true);
        //gps定位的时候是否允许产生开销 (比如花费流量)
        criteria.setCostAllowed(true);
        //在何种手机电量状态下运行
        criteria.setPowerRequirement(Criteria.POWER_HIGH);
        //设置是否对速度敏感
        criteria.setSpeedRequired(true);
        //enabledOnly 设为true 使用允许的定位设备
        //lm.getBestProvider(criteria, enabledOnly);
        //得到最好的可用的位置提供者
        String provider = lm.getBestProvider(criteria, true);
        //给当前的activity注册一个位置的监听器 使用的是提供的provider
        /*
         lm.requestLocationUpdates(provider, minTime, minDistance, listener)
         provider 内容的提供者 前面已定义
         minTime  每个多长时间更新当前位置信息
         minDistance 提示信息的最短位移量(m)
         listener 当位置发生改变所对应的回调
        */
        listener =new MyListener();
        lm.requestLocationUpdates(provider, 60000, 10, listener);
    }
    private class MyListener implements LocationListener{
     /**
      * 当位置发生该变的时候调用的方法
      */
  @Override
  public void onLocationChanged(Location location) {
   //获取到定位的精度
   float accuracy = location.getAccuracy();
   System.out.println("定位的精度:"+accuracy);
   //获取经度
   String longitude = "jingdu" +location.getLongitude();
   //获取纬度信息
   String latitude="weidu"+ location.getLatitude();
   
   // 在界面上显示经纬度信息
   TextView tv = new TextView(GPSActivity.this);
   tv.setText(longitude+"---"+latitude);
   setContentView(tv);
  }
  /**
   * 当某一位置提供者不可用的时候调用
   */
  @Override
  public void onProviderDisabled(String provider) {
   
  }
  /**
   * 当某一位置提供者可用的时候调用
   */
  @Override
  public void onProviderEnabled(String provider) {
   // TODO Auto-generated method stub
   
  }
  /**
   * 当状态发生改变的时候调用的方法
   * 设备的可用 不可用的状态发生了变化
   */
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {
   // TODO Auto-generated method stub
   
  }
     
    }
    @Override
    protected void onDestroy() {
     //把当前注册的位置监听者移除掉 移除掉的话更新事件就不会再发生了
     lm.removeUpdates(listener);
     super.onDestroy();
     
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值