Autore Topic: problema sensore prossimità  (Letto 1302 volte)

Offline Darbon

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
problema sensore prossimità
« il: 19 Marzo 2011, 21:40:32 CET »
0
Dovrei gestire il fatto che compaia una segnalazione all'utente quando si avvicina ad un poi tra quelli che ho inserito. Ho trovato il codice qui allegato in giro su internet che dovrebbe fare al caso mio. Tuttavia ho un problema. Provate a importare il progetto, settate delle coordinate tramite ddms o telnet, premete find e poi save. A questo punto inserite una nuova locazione, se è vicina a quella salvata compare una icona con un punto esclamativo nella barra in alto e si può leggere il messaggio. fin qui tutto ok, ma se a questo punto inserisco nuovo coordinate lontano da quelle salvate, il messaggio di notifica compare ancora e questo non quadra. Mi sapete dire dov'è l'errore? o è un bug di questa funzione e devo procedere per altre vie?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:problema sensore prossimità
« Risposta #1 il: 26 Marzo 2011, 03:17:03 CET »
0
Premetto che ho solo dato un'occhiata e non l'ho provato.
Credo ci sia un errore nel ProximityIntentReceiver. Per com'è scritto, la notifica compare se entri, ricompare se esci e rimane se ti muovi ancora.
Secondo me andrebbe riscritta così:
Codice (Java): [Seleziona]
package com.javacodegeeks.android.lbs;

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) {
               
                //Questi vanno spostati all'inizio, perché la notifica va creata nell'if
                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 near your point of interest.", pendingIntent);



                String key = LocationManager.KEY_PROXIMITY_ENTERING;
                Boolean entering = intent.getBooleanExtra(key, false);
               
                if (entering) {
                        //Notifica che sono vicino al POI
                        notificationManager.notify(NOTIFICATION_ID, notification);
                }
                else {
                        //Cancella tutte le notifiche
                        notificationManager.cancelAll()
                }
               
        }
       
        private Notification createNotification() {
                Notification notification = new Notification();
               
                notification.icon = R.drawable.ic_menu_notifications;
                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.ledARGB = Color.WHITE;
                notification.ledOnMS = 1500;
                notification.ledOffMS = 1500;
               
                return notification;
        }
       
}