Я хочу, чтобы мое приложение запускало определенный код, когда пользователь прибывает в пункт назначения, для этого я пытаюсь использовать LocationManager.addProximityAlert, но оно просто не запускается.
Короче говоря, я думал, что мне нужно:
- Реализовать BroadcastReceiver
- Зарегистрировать получателя
- Направить намерение оповещения получателю
Вот мой соответствующий код:
//MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Intent intent = new Intent(this, ProximityReceiver.class);
intent.setAction("action");
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
LatLng destination = new LatLng(47.422, -121.86);
//Permission requests and checks omitted for simplicity
locationManager.addProximityAlert(destination.latitude,
destination.longitude, 10000, -1,
pendingIntent);
registerReceiver(new ProximityReceiver(), new IntentFilter("action"));
}
//ProximityReceiver.java
public class ProximityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Proximity request fired", Toast.LENGTH_SHORT).show();
}
}
Но в итоге предупреждение просто не срабатывает, я что-то упустил? (Обратите внимание, что я тестирую это на android studio через эмулятор, отправив другую долготу и затем установив ее обратно в -121.86)