Android GPS Proximity Alert при запуске в пределах установленной близости - PullRequest
0 голосов
/ 19 декабря 2011

Я хотел бы использовать Android Proximity Alert для моего приложения для гаражных ворот.У меня есть кнопка настройки, которая при нажатии добавляет предупреждение о близости и начинает отслеживать местоположение.Я хочу, чтобы он отслеживался бесконечно, пока я не войду или не выйду из близости.При входе в него откроется дверь гаража, при выходе из него закроется дверь гаража, после чего я удаляю оповещение о близости и GPS отключается.У меня он работает почти идеально.

Проблема в том, что, когда я нажимаю кнопку, находясь на подъездной дорожке, а значит, в непосредственной близости, цель всегда срабатывает немедленно, когда для дополнительного KEY_PROXIMITY_ENTERING установлено значение "вход".Если я начинаю трекинг за пределами близости, он работает как положено, срабатывает только после того, как я вхожу в близость.Как я могу выйти из близости, если начать работать в ней таким же образом?Заранее спасибо, вот мой код.

В моей деятельности:

float radius = 100f;
double lat = 37.422;
double lon = -122.084;

// Expiration is 10 Minutes
long expiration = 600000;

LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

Intent intent = new Intent(proximityIntentAction);

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent);

А вот мой BroadcastReceiver:

public void onReceive(Context context, Intent intent)
{
    Log.v("SomeTag","Proximity Alert Intent Received");
    String direction = LocationManager.KEY_PROXIMITY_ENTERING;
    CharSequence text = direction;
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, "going: "+text, duration);
    toast.show();
    LocationManager locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_NO_CREATE);
    locManager.removeProximityAlert(pendingIntent);
}

1 Ответ

2 голосов
/ 19 марта 2013

почему бы не поставить таймер / задержку на срабатывание кнопки? Например, почему бы не позволить себе фиксированное количество времени, чтобы выйти из близости, прежде чем ваше приложение начнет обнаруживать? Я думаю, что многие домашние сигнализации работают одинаково. Или другой вариант может заключаться в том, чтобы обнаружить и игнорировать вашу первую запись о близости и подтвердить любые последующие повторные входы в эту близость (т. Е. Ваш гараж). Что ты думаешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...