接收近距离警报意图时如何接收位置信息?

时间:2011-03-18 14:48:32

标签: android gps location

我需要使用LocationManager中的addProximityAlert方法添加多个邻近警报。问题是,当我收到通知用户靠近我正在收听警报的区域之一的意图时,如果用户正在进入或退出读取KEY_PROXIMITY_ENTERING的区域,我可以获得,但我不知道该区域是什么他正在进入或退出。有没有办法获得这种信息?

2 个答案:

答案 0 :(得分:1)

好吧,要添加一个ProximityAlert,你需要一个PendingIntent,可以用PendingIntent.getBroadcast(aContext,aRequestCode,anIntent,0)获得PeindingIntent;现在,在第三个参数'anIntent'中,您可以放置​​您想要的任何数据,例如Location对象,使用该位置获得的城市名称,

我是这样做的:

private static final float DEFAULT_PROXIMITY = 1000f;
int requestCode = 0;
for (Location p : locationList) {
                Double _lat = p.getLatitude();
                Double _lon = p.getLongitude();
                float radious = DEFAULT_PROXIMITY;
                long expiration = -1;

                Intent intent = new Intent(PROXIMITY_ALERT_ACTION_FIRED);
                intent.putExtra( "location-lat" , p.getLatitude());
                intent.putExtra( "location-lon" , p.getLongitude());
                PendingIntent proximityIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
                locationManager.addProximityAlert(_lat, _lon, radious, expiration, proximityIntent);
                requestCode++;
            }

现在,当您收到广播消息时,您必须从传递的意图中获取位置信息,如下所示;

@Override
public void onReceive(Context context, Intent intent) {

  Boolean entering = intent.getBooleanExtra(key, false);
  if(entering){
    long lat = intent.getLongExtra("location-lat", -1);
    long lon = intent.getLongExtra("location-lon", -1);
    log.info("", "entering: " + lat + lon);
  }else{
    long lat = intent.getLongExtra("location-lat", -1);
    long lon = intent.getLongExtra("location-lon", -1);
    log.info("", "exiting: " + lat + lon);

  }
}

欢呼声

答案 1 :(得分:0)

为您感兴趣的每个地区定义多个操作