定位

1.两种定位方式:GPS定位和android网络定位。其中android网络定位又包括信号塔和wifi。

2.易引起定位错误的几种情况:

  • 多个位置信号来源
  • 用户的移动
  • 精度的区别

3.获取用户位置:

调用LocationManagerrequestLocationUpdates()方法来获得位置信息,并一个LocationListener参数。LocationListener需要实现一些用户位置改变时或者信号改变时会调用的方法。如:

// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
上边是使用网络来定位,也可以同时使用网络和GPS,只要调用两次 requestLocationUpdates()方法,一次GPS的,一次网络的。

还需要添加下权限:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
另外,最好
    @Override
    public void onPause() {    
         super.onPause();
        
         //---remove the location listener---
         lm.removeUpdates(locationListener);
    }

    @Override
    public void onResume() {    
         super.onResume();
        
         //---request for location updates---         
         lm.requestLocationUpdates(
                LocationManager.GPS_PROVIDER,
                0,
                0,
                locationListener);
    }

4.监控一个位置:

可以通过调用LocationManager的addProximityAlert()方法来监控位置(当用户接近在某个位置一定范围内就启动一个Intent)。

第一二个参数是指定坐标,第三个是范围,第4个是警报持续的时间,最后一个是要执行动作的相关信息。

如下面的代码就是在接近那个坐标点5米范围内打开百度:

PendingIntent pendingIntent = PendingIntent.getActivity(
            this, 0, new
            Intent(android.content.Intent.ACTION_VIEW,
              Uri. parse(“http://www.baidu.com” )), 0);
         lm.addProximityAlert(37.422006, -122.084095, 5, -1, pendingIntent);

注意即使屏幕被关闭了,程序也会每四分中进行一次检测。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值