BroadCast Receiver nur dann Aktiv, wenn die Aktivität ausgeführt wird, sonst deaktiviert
Hallo, ich bin über einen broadcast-receiver für den Standort hören, aber diese broadcast-Empfänger funktioniert nur, wenn die Tätigkeit im Vordergrund-sonst, wenn ich nicht diese app verwenden, dann ist der receiver nicht aktiv
hier ist der code der activity onCreate-Methode, wo ich mich registrieren dem broadcast-receiver
PendingIntent proximityIntent = PendingIntent.getBroadcast(getApplicationContext(), i, intent, PendingIntent.FLAG_UPDATE_CURRENT);
locationManager.addProximityAlert(
latitude, //the latitude of the central point of the alert region
longitude, //the longitude of the central point of the alert region
1000, //the radius of the central point of the alert region, in meters
-1, //time for this proximity alert, in milliseconds, or -1 to indicate no expiration
proximityIntent //will be used to generate an Intent to fire when entry to or exit from the alert region is detected
);
IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT+s);
registerReceiver(new ProximityAlertReceiver(), filter);
und code für BroadcastReceiver ist
public class ProximityAlertReceiver extends BroadcastReceiver {
private static final int NOTIFICATION_ID = 1000;
public static final String PREFS_NAME = "MyPrefsFile";
@Override
public void onReceive(Context context, Intent intent) {
String key = LocationManager.KEY_PROXIMITY_ENTERING;
SharedPreferences shared=context.getSharedPreferences(MainActivity.PREFS_NAME,0);
Boolean entering = intent.getBooleanExtra(key, false);
Double longitude=intent.getDoubleExtra("longitude", 0.0);
Double latitude=intent.getDoubleExtra("latitude",0.0);
Intent in = new Intent(context,AlarmActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.putExtra("longitude", longitude);
in.putExtra("latitude", latitude);
Log.i("cont1", shared.getInt("count", 0)+"");
in.putExtra("count",shared.getInt("count", 0));
context.startActivity(in);
}
}
lese ich einige, wo das registrieren und aufheben der Registrierung in onResume und onPause-Methode bzw. aber wenn ich meinen es in der onPause-Methode dann bekommen unregistrierte bedeutet, es wird nicht arbeiten, ich will mein Rundfunk-Empfänger für alle Zeit.können Sie bitte vorschlagen, wie dies zu erreichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, das funktioniert im hintergrund, dann müssen Sie die broadcast-receiver in der manifest-Datei mit dem Broadcast receiver-Klasse.
wie dieses tutorial http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html
Können Sie Ihre eigenen "MyReceiver".
Hier in diesem Fall brauchen Sie nicht, sich zu registrieren und unregistrierte. Dies funktioniert automatisch.
wenn Sie möchten, dass Ihre broadcast-receiver laufen alle teh Zeit, yu müssen registrieren, um Sie aus der manifest-Datei.
aus der Dokumentation:
Sie können entweder dynamisch registrieren einer Instanz dieser Klasse mit dem Rahmen.registerReceiver (), oder statisch zu veröffentlichen, eine Umsetzung durch den tag in Ihrem AndroidManifest.xml.
http://developer.android.com/reference/android/content/BroadcastReceiver.html
denke ich, dass die Service-Klasse wird Ihnen helfen , Sie umzusetzen versuchen .... im hintergrund für die Unendlichkeit der Zeiten und Wann immer Sie finden, dass etwas geändert wird, dann schickt er einige broadcast . zu Euch 🙂