Геозоны не срабатывают (ожидающие намерения и широковещательный приемник)Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Геозоны не срабатывают (ожидающие намерения и широковещательный приемник)

Сообщение Anonymous »

Я использовал руководство по Android с геозонами, которое, очевидно, не работает, когда приложение закрыто. Итак, после поиска я заметил, что пользователь b-ryce на SO использовал BroadcastReceiver, поэтому геозоны срабатывают, даже если приложение не активно (ссылка на его вопрос SO).

Я просто не могу заставить геозоны срабатывать, когда я выхожу за пределы/внутри зарегистрированного местоположения. Вот моя процедура:

Код: Выделить всё

    /**
* GeoLocation library
*/
mGeoLocation = new GeoLocation(sInstance);

/**
* mReceiver init
*/
mReceiver = new Receiver();
sInstance.registerReceiver(mReceiver, mReceiver.createIntentFilter());
И внутри класса GeoLocation:

Код: Выделить всё

/*
* Create a PendingIntent that triggers an IntentService in your
* app when a geofence transition occurs.
*/
protected PendingIntent getTransitionPendingIntent() {
if (mGeoPendingIntent != null) {
return mGeoPendingIntent;
}

else {

// Create an explicit Intent
//  Intent intent = new Intent(mContext,
//          ReceiveTransitionsIntentService.class);

Intent intent = new Intent(getClass().getPackage().getName() + ".GEOFENCE_RECEIVE");

/**
* Return the PendingIntent
*/
return PendingIntent.getBroadcast(
mContext,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT);

}
}
Вот как я создаю новую геозону:

Код: Выделить всё

                        Geofence fence = new Geofence.Builder()
.setRequestId(hashCode)
// when entering this geofence
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT)
.setCircularRegion(
Double.parseDouble(single.getSetting("latitude")),
Double.parseDouble(single.getSetting("longitude")),
Float.parseFloat(single.getSetting("radius")) // radius in meters
)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.build();

mGeofences.add(fence);
Массив заполняется, и мы вызываем метод AddGeofences внутри класса Geofence

Код: Выделить всё

mGeoLocation.AddGeofences(mGeofences);
AndroidManifest.xml для класса получателя:
И класс Receiver должен просто регистрировать срабатывание геозоны

Код: Выделить всё

public void onReceive(Context context, Intent intent) {
String action = intent.getAction();

Log.d("sfen", "Broadcast recieved "+ action +" but not needed.");
}
Проблема в том, что Geofence срабатывает ТОЛЬКО тогда, когда я открываю карту внутри своего приложения, где выбираю местоположения. Закрытие приложения (запуск его в фоновом режиме) ничего не вызывает, а переходы между геозонами ничего не вызывают.

Может кто-нибудь сказать мне, что я делаю не так?

Может кто-нибудь сказать мне, что я делаю не так?

Может кто-нибудь сказать мне, что я делаю неправильно?

п>

Подробнее здесь: https://stackoverflow.com/questions/257 ... streceiver
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»