对于需要定位的情况,也不一定一定要集成高德和百度,android 原生也有自己GPS 定位,但是GPS 在室内是定位不到的,只能在室外定位。这样的话,通过GPS 定位,我们可以知道用户在室内还是室外,可以做适当的逻辑处理。

权限:

              

动态申请:

  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(mContext, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);              }

初始化:

  private void initLocation() {        locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);    }

位置回调:

/** * 在室外才有这个回调,室内没有 *  */LocationListener listener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {}}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}};

设置监听:

 locationManager .requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, 0, listener);

这里 MIN_TIME:

/** * 5S */private static final int MIN_TIME = 1000 * 5 ;

由于室内没有回调,室外才有。我们可以监控回调烂判断是否在室内。

方法:在回调里每次都延迟消息发送(时间大于回调时间),延迟发送消息前,先remove 消息,当在室内的时候,这个延迟发送的时间就会成功发送(因为室外不停的回调,会不断的remove 消息,消息最终都不能到达)

代码:

    public void onLocationChanged(Location location) {ToastUtils.show("在室外了");handler.removeMessages(WHAT);handler.sendEmptyMessageDelayed(WHAT,6000);      }
/** * 检测GPS Location 回调 */private Handler handler = new Handler(Looper.getMainLooper()){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case WHAT:ToastUtils.show("现在在室内了。。。。。");break;}}};

OK。

更多相关文章

  1. 视频播放拖动进度时间定位不准问题
  2. Android集成百度定位SDK实现获取定位地址
  3. Android(安卓)GPS定位实现
  4. android中google“定位查询”
  5. Android(安卓)webview解决JS报错chromium: [INFO:CONSOLE(1)] "U
  6. Wifi定位Gps
  7. Android手机定位案例代码
  8. Android(安卓)PopupWindow
  9. 高德Titus

随机推荐

  1. Android中的事件传递机制
  2. Android事件分发机制及源码分析
  3. android 的Java代码中的布局相关方法Layo
  4. Android连接蓝牙打印机实现PDF文档的打印
  5. Android添加用户组及自定义App权限的方法
  6. Android studio 3.0 com.android.builder
  7. Android中使用广播机制退出多个Activity
  8. Android 华为应用角标
  9. 版本更新简要
  10. Android中悬浮按钮的实现(记录)