Autore Topic: selezione overlay da una lista vicino alla mia posizione GPS  (Letto 344 volte)

Offline mikilamb90

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus l5
  • Sistema operativo:
    xubuntu 12.10
selezione overlay da una lista vicino alla mia posizione GPS
« il: 27 Aprile 2013, 10:47:53 CEST »
0
Io posseggo una lista riempita da me tramite un database, quando lancio la mia applicazione  essa dovrebbe prendere la tua posizione attuale ,accedere a questa lista tramite un service e verificare se la tua posizione è vicina ad uno di questi punti.
Se la tua posizione è vicina ad uno di questi punti ti manda un dialog.
Quando l'applicazione parte dopo un breve periodo , forse per il lungo calcolo che richiede si blocca e riavvia il telefono o lo blocca.
overlay è la lista popolata da 335 posizioni , quindi ogni volta che cambio posizione lui li deve scorrere tutti.
Qualche idea su come evitare il crash
La funzione in esema è:

Codice (Java): [Seleziona]
                        for(int i = 0 ; i< overlay.size();i++){

                                Log.e("item : ","n"+overlay.size());
                                OverlayItem item = overlay.getItem(i);
                                Location l1 = new Location("");
                                l1.setLatitude(item.getPoint().getLatitudeE6());
                                Log.e("l1", "l1"+l1.getLatitude());
                                l1.setLongitude(item.getPoint().getLongitudeE6());
                                Location l2 = new Location("");
                                l2.setLatitude(destLat);
                                l2.setLongitude(destLong);
                                Log.e("l2", "l2"+l2.getLatitude());

                                /*invio del messaggio all'activity per far visualizzare l'alert se si è vicini ad un punto ztl*/

                                try {
                                        String caller = "generic";
                                        try {
                                                caller = intent.getStringExtra(CALLER);
                                                Bundle extras = intent.getExtras();
                                                if (extras != null) {

                                                        if (POSITION.equals(caller)) {
                                                                positionMessenger = (Messenger) extras.get(MESSENGER);
                                                                Log.e("position",""+positionMessenger);
                                                        }
                                                }

                                                System.out.println("Instantiating " + caller + " Messenger OK :" + positionMessenger);
                                        } catch (Exception e) {

                                                //se il servizio non è ancora partito allora esco da esso in modo che venga istanziato correttamente
                                                if(!doUpdate) {
                                                        stopSelf();
                                                }
                                        }

                                        /*verifica i punti distanti fino a 150 metri dalla tua posizione attuale*/
                                        if (l2.distanceTo(l1) >150) {
                                                Log.e("distance","Ztl non puoi accedere");


                                                Message msg = Message.obtain();
                                                Log.e("msg",""+msg);
                                                msg.what = UPDATE_UI_MSG;
                                                positionMessenger.send(msg);
                                                Log.e("send","send");

                                        }
                                }
                                catch (RemoteException e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                                }