Как получить информацию о местоположении при получении оповещения о близости? - PullRequest
1 голос
/ 18 марта 2011

Мне нужно добавить более одного оповещения о близости с помощью метода addProximityAlert из LocationManager.Проблема заключается в том, что когда я получаю намерение, информирующее о том, что пользователь находится рядом с одной из областей, которые я прослушиваю для предупреждений, я могу получить, если пользователь входит или выходит из региона, читая KEY_PROXIMITY_ENTERING, но я не знаю, что такое регионон входит или выходит.Есть ли способ получить такую ​​информацию?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

хорошо, чтобы добавить ProximityAlert, вам нужен PendingIntent, PeindingIntent можно получить с помощью PendingIntent.getBroadcast (aContext, aRequestCode, anIntent, 0);Теперь в третий параметр 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);

  }
}

cheers

0 голосов
/ 18 марта 2011

Определите несколько действий для каждого региона, который вас интересует

...