CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gianfrinico con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 4 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 21 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

Service GPS

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    May 2011
    Messaggi
    5

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Service GPS

    Salve a tutti!

    breve e concisa!
    ho un activity che mi visualizza le mappe, nelle quali ricerco le città attraverso il comando emulator control da eclipse.
    Ora, devo far diventare l'activity un service, e ad ogni cambio di posizione, segnalare all'activity questo cambiamento, mediante messaggi broadcast...come fare? io non sono per niente pratica...help me! vi posto l'activity principale che è anche l'unica activity che ho..



     
    1
    import java.util.List;  
    2
      
    3
    import com.google.android.maps.GeoPoint;  
    4
    import com.google.android.maps.MapActivity;  
    5
    import com.google.android.maps.MapController;  
    6
    import com.google.android.maps.MapView;  
    7
    import com.google.android.maps.MyLocationOverlay;  
    8
    import com.google.android.maps.Overlay;  
    9
      
    10
    import android.content.Context;  
    11
    import android.location.Location;  
    12
    import android.location.LocationListener;  
    13
    import android.location.LocationManager;  
    14
    import android.os.Bundle;  
    15
    import android.widget.TextView;  
    16
    import android.widget.Toast;  
    17
      
    18
    public class GPSActivity extends MapActivity {  
    19
        private TextView tvLatitudine;  
    20
        private TextView tvLongitudine;  
    21
        private TextView tvVelocita;  
    22
        private TextView tvQuota;  
    23
        private TextView tvAccuratezza;  
    24
      
    25
        //Riferimento alla MapView  
    26
        private MapView mapView;  
    27
      
    28
        //Riferimento al MapController  
    29
        MapController mapController;  
    30
      
    31
        //Riferimento al MyLocationOverlay  
    32
        private MyLocationOverlay myLocationOverlay;  
    33
      
    34
        // Otteniamo il riferimento al LocationManager  
    35
        LocationManager locationManager;  
    36
      
    37
        /** Called when the activity is first created. */  
    38
        @Override  
    39
        public void onCreate(Bundle savedInstanceState) {  
    40
            super.onCreate(savedInstanceState);  
    41
            setContentView(R.layout.main);  
    42
      
    43
            tvLatitudine = (TextView)this.findViewById(R.id.tvLatitudine);  
    44
            tvLongitudine = (TextView)this.findViewById(R.id.tvLongitudine);  
    45
            tvVelocita = (TextView)this.findViewById(R.id.tvVelocita);  
    46
            tvQuota = (TextView)this.findViewById(R.id.tvQuota);  
    47
            tvAccuratezza = (TextView)this.findViewById(R.id.tvAccuratezza);  
    48
      
    49
            // Otteniamo il riferimento alla MapView  
    50
            mapView = (MapView)findViewById(R.id.mapView);  
    51
      
    52
            // Otteniamo il riferimento al controller  
    53
            mapController = mapView.getController();  
    54
      
    55
            // Rendiamo la mappa cliccabile e quindi ne permettiamo il pan  
    56
            mapView.setClickable(true);  
    57
      
    58
            // Utiliziamo i controlli predefiniti per la gestione delle operazioni di zoom  
    59
            mapView.setBuiltInZoomControls(true);  
    60
      
    61
            // Impostiamo la distanza dello Zoom a 12 (valori validi da 1 a 21).  
    62
            mapController.setZoom(12);  
    63
      
    64
            // Aggiungiamo l'overlay sulla mappa della nostra posizione  
    65
            myLocationOverlay = new MyLocationOverlay(this, mapView);  
    66
            List<Overlay> overlays = mapView.getOverlays();  
    67
            overlays.add(myLocationOverlay);  
    68
            myLocationOverlay.enableMyLocation();  
    69
      
    70
            // Otteniamo il riferimento al LocationManager  
    71
            locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
    72
      
    73
            // Verifichiamo se il GPS è abilitato altrimenti avvisiamo l'utente  
    74
            if(!locationManager.isProviderEnabled("gps")){  
    75
                Toast.makeText(this, "GPS è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();  
    76
            }  
    77
      
    78
            // Registriamo il LocationListener al provider GPS  
    79
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);  
    80
        }  
    81
      
    82
        LocationListener locationListener = new LocationListener() {  
    83
            @Override  
    84
            public void onLocationChanged(Location location) {  
    85
                // Aggiorna il marker della mappa  
    86
                mapView.invalidate();  
    87
      
    88
                // Aggiorna la location  
    89
                Double geoLat = location.getLatitude()*1E6;  
    90
                Double geoLng = location.getLongitude()*1E6;  
    91
                GeoPoint point = new GeoPoint(geoLat.intValue(), geoLng.intValue());  
    92
      
    93
                mapController.animateTo(point);  
    94
      
    95
                tvLatitudine.setText(Double.toString(getRound(location.getLatitude(), 5)));  
    96
                tvLongitudine.setText(Double.toString(getRound(location.getLongitude(), 5)));  
    97
                tvVelocita.setText(Double.toString(getRound(location.getSpeed()*3.6, 1))+" km/h");  
    98
                tvQuota.setText(Integer.toString((int)location.getAltitude())+" m");  
    99
                tvAccuratezza.setText(Integer.toString((int)location.getAccuracy())+" m");  
    100
            }  
    101
      
    102
            @Override  
    103
            public void onProviderDisabled(String provider) {  
    104
                Toast.makeText(GPSActivity.this,  
    105
                        "onProviderDisabled "+provider, Toast.LENGTH_SHORT).show();  
    106
            }  
    107
      
    108
            @Override  
    109
            public void onProviderEnabled(String provider) {  
    110
                Toast.makeText(GPSActivity.this,  
    111
                        "onProviderEnabled "+provider, Toast.LENGTH_SHORT).show();  
    112
            }  
    113
      
    114
            @Override  
    115
            public void onStatusChanged(String provider, int status,Bundle extras) {  
    116
                Toast.makeText(GPSActivity.this,  
    117
                        "onStatusChanged "+provider+" status: "+status, Toast.LENGTH_SHORT).show();  
    118
            }  
    119
        };  
    120
      
    121
        @Override  
    122
        public void onPause() {  
    123
            super.onPause();  
    124
            // Stoppa Listener delle posizioni  
    125
            if(locationManager != null){  
    126
                locationManager.removeUpdates(locationListener);  
    127
                myLocationOverlay.disableMyLocation();  
    128
            }  
    129
        }  
    130
      
    131
        @Override  
    132
        protected void onResume() {  
    133
            super.onResume();  
    134
            // Registriamo il LocationListener al provider GPS  
    135
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);  
    136
            myLocationOverlay.enableMyLocation();  
    137
        }  
    138
      
    139
        public static double getRound(double x, int digits){  
    140
            double powerOfTen = Math.pow(10, digits);  
    141
            return ((double)Math.round(x * powerOfTen) / powerOfTen);  
    142
        }  
    143
      
    144
        @Override  
    145
        protected boolean isRouteDisplayed() {  
    146
            // TODO Auto-generated method stub  
    147
            return false;  
    148
        }  
    149
    }  
    150
      
    151

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy