6

Próbuję utworzyć wiele alertów zbliżeniowych, ale nie mogę go uruchomić ...Czy stacja radiowa może odbierać wiele programów?

Myślę, że nadajnik zostanie nadpisany, a tym samym obsługuje tylko ostatnią transmisję. Więc gdybym miał dwa punkty w pobliżu tylko ten, którego cel został utworzony jako ostatni, wygeneruje alert ...

Czytałem, że powinienem używać kodów żądań, ale nie mam pojęcia, jak to zrobić ...


Moja metoda konfigurowania oczekujących zamiarów i odbiornik broadcast ...

private void addProximityAlert(double latitude, double longitude, String poiName, String intentfilter) { 

    Bundle extras = new Bundle(); 
    extras.putString("name", poiName); 
    Intent intent = new Intent(PROX_ALERT_INTENT+poiName); 
    intent.putExtras(extras);  
    PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode, intent, 0); 
    locationManager.addProximityAlert(
     latitude, // the latitude of the central point of the alert region 
     longitude, // the longitude of the central point of the alert region 
     POINT_RADIUS, // the radius of the central point of the alert region, in meters 
     PROX_ALERT_EXPIRATION, // 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 
    ); 
    requestCode++; 
    IntentFilter filter = new IntentFilter(intentfilter); 
    registerReceiver(new ProximityIntentReceiver(), filter); 
} 

Moja klasa broadcastreceiver

public class ProximityIntentReceiver extends BroadcastReceiver { 

private static final int NOTIFICATION_ID = 1000; 

@Override 
public void onReceive(Context context, Intent intent) { 

    String key = LocationManager.KEY_PROXIMITY_ENTERING; 

    Boolean entering = intent.getBooleanExtra(key, false); 

    if (entering) { 
     Log.d(getClass().getSimpleName(), "entering"); 
    } 
    else { 
     Log.d(getClass().getSimpleName(), "exiting"); 
    } 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0);   

    Notification notification = createNotification();   
    notification.setLatestEventInfo(context, 
     "Proximity Alert!", "You are approaching: " +intent.getExtras().get("name"), pendingIntent);  
                     //here------------------------------------- 
    notificationManager.notify(NOTIFICATION_ID, notification); 

} 

private Notification createNotification() { 
    Notification notification = new Notification(); 

    notification.icon = R.drawable.androidmarker; 
    notification.when = System.currentTimeMillis(); 

    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.flags |= Notification.FLAG_SHOW_LIGHTS;   
    notification.flags |= Notification.FLAG_INSISTENT; 

    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    notification.ledARGB = Color.WHITE; 
    notification.ledOnMS = 300; 
    notification.ledOffMS = 1500; 

    return notification; 
} 

} 

Czy możesz mi pomóc ??? Naprawdę utknąłem z tego ...

Każda pomoc byłaby naprawdę doceniana !!!

Odpowiedz

8

mam go pracy po wszystkim ...

Dokładnie to, czego szukałem: http://www.gauntface.co.uk/blog/2010/01/04/proximity-alerts-in-android/

Modyfikacje zrobiłem


private void addProximityAlert(double latitude, double longitude, String poiName) { 

    Bundle extras = new Bundle(); 
    extras.putString("name", poiName); 
    extras.putInt("id", requestCode); 
    Intent intent = new Intent(PROX_ALERT_INTENT); 
    intent.putExtra(PROX_ALERT_INTENT, extras); 
    PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode , intent, PendingIntent.FLAG_CANCEL_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 
     POINT_RADIUS, // the radius of the central point of the alert region, in meters 
     PROX_ALERT_EXPIRATION, // 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 
    ); 
    requestCode++;  
} 

private void initialiseReceiver() 
{ 
    IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
    registerReceiver(new ProximityIntentReceiver(), filter); 
} 

package michaels.pack; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.location.LocationManager; 
import android.util.Log; 

public class ProximityIntentReceiver extends BroadcastReceiver { 

private static final int NOTIFICATION_ID = 1000; 

@Override 
public void onReceive(Context context, Intent intent) { 

    String key = LocationManager.KEY_PROXIMITY_ENTERING; 

    Boolean entering = intent.getBooleanExtra(key, false); 

    if (entering) { 
     Log.d(getClass().getSimpleName(), "entering receiverrrrrrrrrrrrrrrrrr"); 
    } 
    else { 
     Log.d(getClass().getSimpleName(), "exiting"); 
    } 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0);   

    Notification notification = createNotification();   
    notification.setLatestEventInfo(context, 
     "Proximity Alert!", "You are approaching: " +intent.getBundleExtra("michaels.pack.ProximityAlert.").get("name"), pendingIntent);  
                     //here------------------------------------- 
    notificationManager.notify(intent.getBundleExtra("michaels.pack.ProximityAlert.").getInt("id"), notification); 

} 

private Notification createNotification() { 
    Notification notification = new Notification(); 

    notification.icon = R.drawable.androidmarker; 
    notification.when = System.currentTimeMillis(); 

    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.flags |= Notification.FLAG_SHOW_LIGHTS;     

    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    notification.ledARGB = Color.WHITE; 
    notification.ledOnMS = 300; 
    notification.ledOffMS = 1500; 

    return notification; 
} 

} 
+1

Wystarczy pozwolić wszyscy wiecie, że napisałem aktualizację mojego oryginalnego kodu który zawiera pełny przykład na GitHub: http: //www.gauntface.co.uk/pages/blog/2010/12/28/how-to-multiple-proximity-alerts-in-android/ –

+1

Jak usunąć swoje ostrzeżenia? Mój wciąż się buduje. :( – deucalion0

+0

Minęło już trochę czasu i naprawdę nie pamiętam, co zrobiłem, przepraszam – mixkat

Powiązane problemy