Autore Topic: problema visualizzazione coordinate  (Letto 2000 volte)

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
problema visualizzazione coordinate
« il: 15 Aprile 2013, 11:33:20 CEST »
0
ciao ragazzi sto facendo la mia tesi ma sono bloccato sulla visualizzazione delle corrdinate(latitudine e longitudine ) non capisco il motivo qui vi posto il mio programma...

sn due mesi che sono bloccato e non capisco il motivo per cui non riesco a visulizzare le coordinate sul mio iphone android  samsung ice 2.3.6..quello che ricevo nei dati è no data sia per la latitudine e longitudine.
ho provato con un altro programma simile ma esiste lo stesso problema.non vorrei che fosse il mio iphone che non riesce a connettersi al gps per cui non riesci a darmi il valore delle coordinate.
potete darmi una mano a capire il problema grazie.

grazie..

Codice (Java): [Seleziona]
package it.anddev.connected_car;

import java.util.List;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;

public class thesi_connected_car extends MapActivity
{
        private TextView tvLatitudine;
        private TextView tvLongitudine;
       

        //Riferimento alla MapView
        private MapView mapView;

        //Riferimento al MapController
        MapController mapController;

        //Riferimento al MyLocationOverlay
        private MyLocationOverlay myLocationOverlay;

        // Otteniamo il riferimento al LocationManager
        LocationManager locationManager;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                tvLatitudine = (TextView)this.findViewById(R.id.tvLatitudine);
                tvLongitudine = (TextView)this.findViewById(R.id.tvLongitudine);
               

                // Otteniamo il riferimento alla MapView
                mapView = (MapView)findViewById(R.id.mapView);

                // Otteniamo il riferimento al controller
                mapController = mapView.getController();

                // Rendiamo la mappa cliccabile e quindi ne permettiamo il pan
                mapView.setClickable(true);

                // Utiliziamo i controlli predefiniti per la gestione delle operazioni di zoom
                mapView.setBuiltInZoomControls(true);

                // Impostiamo la distanza dello Zoom a 12 (valori validi da 1 a 21).
                mapController.setZoom(12);

                // Aggiungiamo l'overlay sulla mappa della nostra posizione
                myLocationOverlay = new MyLocationOverlay(this, mapView);
                List<Overlay> overlays = mapView.getOverlays();
                overlays.add(myLocationOverlay);
                myLocationOverlay.enableMyLocation();

                // Otteniamo il riferimento al LocationManager
                locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

                // Verifichiamo se il GPS è abilitato altrimenti avvisiamo l'utente
                if(!locationManager.isProviderEnabled("gps")){
                        Toast.makeText(this, "GPS è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();
                }

                // Registriamo il LocationListener al provider GPS
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
        }

        LocationListener locationListener = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                        // Aggiorna il marker della mappa
                        mapView.invalidate();

                        // Aggiorna la location
                        Double geoLat = location.getLatitude()*1E6;
                        Double geoLng = location.getLongitude()*1E6;
                        GeoPoint point = new GeoPoint(geoLat.intValue(), geoLng.intValue());

                        mapController.animateTo(point);

                        tvLatitudine.setText(Double.toString(getRound(location.getLatitude(), 5)));
                        tvLongitudine.setText(Double.toString(getRound(location.getLongitude(), 5)));
                       
                }

                @Override
                public void onProviderDisabled(String provider) {
                        Toast.makeText(thesi_connected_car.this,
                                        "onProviderDisabled "+provider, Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onProviderEnabled(String provider) {
                        Toast.makeText(thesi_connected_car.this,
                                        "onProviderEnabled "+provider, Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onStatusChanged(String provider, int status,Bundle extras) {
                        Toast.makeText(thesi_connected_car.this,
                                        "onStatusChanged "+provider+" status: "+status, Toast.LENGTH_SHORT).show();
                }
        };

        @Override
        public void onPause() {
                super.onPause();
                // Stoppa Listener delle posizioni
                if(locationManager != null){
                        locationManager.removeUpdates(locationListener);
                        myLocationOverlay.disableMyLocation();
                }
        }

        @Override
        protected void onResume() {
                super.onResume();
                // Registriamo il LocationListener al provider GPS
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
                myLocationOverlay.enableMyLocation();
        }

        public static double getRound(double x, int digits){
                double powerOfTen = Math.pow(10, digits);
                return ((double)Math.round(x * powerOfTen) / powerOfTen);
        }

        @Override
        protected boolean isRouteDisplayed() {
                // TODO Auto-generated method stub
                return false;
        }
}

main.xml


Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mainlayout"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:weightSum="100">
        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:weightSum="100"
                android:layout_height="0dip"
                android:layout_weight="30">
                <RelativeLayout
                        android:id="@+id/RelativeLayout01"
                        android:layout_height="wrap_content"
                        android:layout_width="fill_parent">
                        <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="anddev.it-tesi_gps"
                                android:id="@+id/tvTitoloApp"
                                android:layout_centerHorizontal="true"></TextView>
                        <TextView
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/tvTitoloApp"
                                android:text="Latitudine"
                                android:id="@+id/tvLatitudineLabel"
                                android:layout_width="85dip"></TextView>
                        <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="No data"
                                android:id="@+id/tvLatitudine"
                                android:layout_toRightOf="@+id/tvLatitudineLabel"
                                android:layout_alignBaseline="@+id/tvLatitudineLabel"></TextView>

                        <TextView
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/tvLatitudineLabel"
                                android:text="Longitudine"
                                android:id="@+id/tvLongitudineLabel"
                                android:layout_width="85dip"></TextView>
                        <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="No data"
                                android:id="@+id/tvLongitudine"
                                android:layout_toRightOf="@+id/tvLongitudineLabel"
                                android:layout_alignBaseline="@+id/tvLongitudineLabel"></TextView>

                       
                               
                </RelativeLayout>
        </LinearLayout>
        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:weightSum="100"
                android:layout_height="0dip"
                android:layout_weight="70">
                <com.google.android.maps.MapView
                        android:id="@+id/mapView"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
        </LinearLayout>
</LinearLayout>

android manifest.xml

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="it.anddev.connected_car"
        android:versionCode="1"
        android:versionName="1.0">
        <application
                android:icon="@drawable/icon"
                android:label="@string/app_name">
                <uses-library
                        android:name="com.google.android.maps" />
                <activity
                        android:name="it.anddev.connected_car.thesi_connected_car"
                        android:label="@string/app_name">
                        <intent-filter>
                                <action
                                        android:name="android.intent.action.MAIN" />
                                <category
                                        android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                </activity>

        </application>
        <uses-sdk
                android:minSdkVersion="4" />
       
        <uses-permission
                android:name="android.permission.INTERNET" />
        <uses-permission
                android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission
                android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission
                android:name="android.permission.ACCESS_LOCATION" />
        <uses-permission
                android:name="android.permission.ACCESS_GPS" />
</manifest>
per chi è interessato all' intero progetto posso mandarlo grazie..
vorrei sapere dove sia il problema..
grazie


Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema visualizzazione coordinate
« Risposta #1 il: 15 Aprile 2013, 11:45:55 CEST »
0
Da quel che so il Galaxy Ace (se è questo il tuo modello) fa fatica ad agganciarsi col gps.

Alcuni consigli:

  • Non passare direttamente la string "gps" quando cerchi il provider, usa la costante LocationManager.GPS_PROVIDER
  • Prova ad utilizzare altri provider (come rete mobile o wi fi)

Per collegarti ai vari provider disponibile usa questo codice:
(Non sono riuscito a testarlo, quindi in caso di problemi, fatti pure sentire :) )
Codice (Java): [Seleziona]
 


    private  LocationManager locationManager;
    private  Criteria criteria;


    private static boolean isGpsEnabled = false;
    private static boolean isWiFiEnabled = false;
    private static boolean isNetworkEnabled = false;

public void checkProviders()
    {

        ConnectivityManager connectivityManager = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = null;
        if (connectivityManager != null) {
            networkInfo =
                    connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        }

        isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        isWiFiEnabled = networkInfo == null ? false : networkInfo.isConnected();
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }

private void requestUpdates(Context context)
    {
        checkProviders();

        criteria = new Criteria();

        locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

        if(isGpsEnabled)
        {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, this);
        }

        if(isWiFiEnabled || isNetworkEnabled)
        {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, this);
        }
    }
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #2 il: 15 Aprile 2013, 12:26:31 CEST »
0
grazie mille..

usando come dici il wifi_provider funziona..ricevo i dati correttamente.
ma la mia tesi si basa sui dati di latitudine e longitudine ottenuti attraverso i satelliti gps..
come faccio??
scusa prima  mi ero confuso il mio iphone è il samsung wonder...

come posso risolvere il problema per potermi connettere al gps???
potrei disattivare il wifi forse fa interferenza e usare il traffico dati spendendo una patela di soldi dal mio iphone..


ciao ancora grazie..

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema visualizzazione coordinate
« Risposta #3 il: 15 Aprile 2013, 12:32:07 CEST »
0
grazie mille..

usando come dici il wifi_provider funziona..ricevo i dati correttamente.
ma la mia tesi si basa sui dati di latitudine e longitudine ottenuti attraverso i satelliti gps..
come faccio??
scusa prima  mi ero confuso il mio iphone è il samsung wonder...

come posso risolvere il problema per potermi connettere al gps???
potrei disattivare il wifi forse fa interferenza e usare il traffico dati spendendo una patela di soldi dal mio iphone..


ciao ancora grazie..

Se hai un abbonamento internet classico (1 gb mensile per dieci euro) non lo finisci nemmeno a morire, a me è capitato solo perchè mi ero messo a scaricare app tramite 3g :) .
E anche se ti finisse, generalmente puoi ancora navigare senza spendere altri soldi, vai solo più lento.

Comunque mettiti l'anima in pace, non si può sistemare il problema GPS, ho avuto gli stessi casini pure io col Galaxy S

Soluzione? O vai di emulatore o ti prendi un cellulare con un GPS migliore :)
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:problema visualizzazione coordinate
« Risposta #4 il: 15 Aprile 2013, 12:51:41 CEST »
+1
Citazione
sn due mesi che sono bloccato e non capisco il motivo per cui non riesco a visulizzare le coordinate sul mio iphone android  samsung ice 2.3.6..quello che ricevo nei dati è no data sia per la latitudine e longitudine.

Se usi "Iphone" per indicare "smartphone", caro mio, non sei adatto a questo forum.

Comunque io vedo un paio di cose che secondo me dovresti tenere in considerazione:

1) Stai usando la libreria vecchia delle mappe, che oramai è deprecata e non dovrebbe essere più usata.
2) Usa la libreria nuova e la posizione dell'utente ce l'hai gratis, con una sola istruzione.

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #5 il: 15 Aprile 2013, 13:08:11 CEST »
0
essere apprendisti di un mestiere non vuol dire non capire niente di un mestiere..
non tutti nascono imparati!!!!
credo che se uno chiede è perche ha delle difficoltà che non riesce a capire ma non credo che sia una mancanza di intelligenza o meno.non credo che tu debba indicarmi se sono adatto o meno di stare in questo luogo!!!
tutti abbiamo bisogno degli altri e viceversa per andare avanti..
comunque preferisco farmi le ossa ma quando dopo due mesi non riesco a risolvere un problema mi rivolgo a chi magari ha avuto lo stesso probelma..grazie..

come faccio ad usare la libreria che mi hai indicato e come??

mi indichi il problema grazie..

Post unito: 15 Aprile 2013, 13:16:51 CEST
grazie mille..
« Ultima modifica: 15 Aprile 2013, 13:16:51 CEST da mos, Reason: Merged DoublePost »

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #7 il: 15 Aprile 2013, 14:16:52 CEST »
0
ok perfetto grazie..

Post unito: 15 Aprile 2013, 14:50:00 CEST
Se usi "Iphone" per indicare "smartphone", caro mio, non sei adatto a questo forum.

Comunque io vedo un paio di cose che secondo me dovresti tenere in considerazione:

1) Stai usando la libreria vecchia delle mappe, che oramai è deprecata e non dovrebbe essere più usata.
2) Usa la libreria nuova e la posizione dell'utente ce l'hai gratis, con una sola istruzione.
_____________________________________________________________________________________

scusami mi hai parlato di vecchie librerie!!!!quali e dove devo effetuare la modifica?
quindi il problema del gps puo essere dovuto al fatto che uso delle librerie vecchie???

non capisco..mi spieghi cosa intendi con librerie vecchie e secondo te dove dovrei apportare le modifiche del caso...grazie.
« Ultima modifica: 15 Aprile 2013, 14:50:00 CEST da mos, Reason: Merged DoublePost »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:problema visualizzazione coordinate
« Risposta #8 il: 15 Aprile 2013, 16:39:16 CEST »
0
essere apprendisti di un mestiere non vuol dire non capire niente di un mestiere..
non tutti nascono imparati!!!!
credo che se uno chiede è perche ha delle difficoltà che non riesce a capire ma non credo che sia una mancanza di intelligenza o meno.non credo che tu debba indicarmi se sono adatto o meno di stare in questo luogo!!!
tutti abbiamo bisogno degli altri e viceversa per andare avanti..

La mia non era una considerazione personale sulle tue capacità, ci mancherebbe.
Era solo una battuta sul fatto che sei venuto su un forum di sviluppo Android chiamando con il termine iPhone (che è il diretto concorrente il Android) quello che in realtà è uno smartphone. Sono abbastanza sicuro che per l'utente medio le due parole siano intercambiabili (come iPad con tablet e iPod con lettore mp3), ma non me lo sarei aspettato da uno sviluppatore o da un aspirante tale.

Comunque, mi sembra che s1m0 ti abbia indicato parecchio materiale dal quale prendere spunto con la nuova libreria per le mappe (conosciuta anche come Google Maps Android API v2).

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #9 il: 15 Aprile 2013, 16:54:22 CEST »
0
chiedo scusa se me la sono preso nessuna offesa.
sn un novello in questo campo quindi fatemi passare tutte le balle che dico!!!!hhhh

comuque mi sembra di utilizzare gia le librerie nuove..

non saprei dove ritoccare il cordice mi date una dritta???grazie

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema visualizzazione coordinate
« Risposta #10 il: 15 Aprile 2013, 17:06:46 CEST »
0
chiedo scusa se me la sono preso nessuna offesa.
sn un novello in questo campo quindi fatemi passare tutte le balle che dico!!!!hhhh

comuque mi sembra di utilizzare gia le librerie nuove..

non saprei dove ritoccare il cordice mi date una dritta???grazie

Non so come riconoscere le nuove librerie, ho sempre utilizzato le v2 e mai quelle precedenti.

Non capisco comunque questa istruzione:

Codice (Java): [Seleziona]
Double geoLat = location.getLatitude()*1E6;
Comunque non c'entra il problema del gps con la versione delle librerie. Mal che vada apri Google Maps e vedi se ti prende la tua posizione precisa. Assicurati di avere Wifi e reti mobili disattivate, riavvia il telefono e avvia Maps.
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #11 il: 15 Aprile 2013, 17:32:57 CEST »
0
nel mio programma forse il mio galaxy wonder non riesce a connettersi ai 4 satelliti pe ril gps.

perchio l'unico modo per visulizzare le coordinate è il wifi ma è molto impreciso..penso dia un errore sulla posizione di 25 metri che non è cosi bello!!!

dovrei lavorare sulla precisione del metro per la mia tesi.
sinceramente credo che il mio galaxy non riesca a connettersi ai satelliti gps!!!!!

qui potrebbe esserti di aiuto per la funzione getlatitude()..

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:problema visualizzazione coordinate
« Risposta #12 il: 15 Aprile 2013, 19:46:31 CEST »
0
dovrei lavorare sulla precisione del metro per la mia tesi.

Ti consiglio di documentarti meglio sul GPS, una precisione di un metro è impossibile. Ritieniti fortunato se arrivi a 25 metri sulla longitudine e latitudine, l'altitudine ha una precisione peggiore.

Gli smartphone hanno A-GPS, si tratta di un GPS Assistito dalla rete telefonica per migliorare i tempi di fixing (ricevere le effemeridi) nelle aree urbane (i palazzi attenuano il segnale dei satelliti GPS).


Inviato dal mio LG-P990 con Tapatalk 2
adb logcat | tee /tmp/logcat | grep TAG

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:problema visualizzazione coordinate
« Risposta #13 il: 15 Aprile 2013, 19:52:55 CEST »
+1
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:problema visualizzazione coordinate
« Risposta #14 il: 23 Aprile 2013, 17:34:40 CEST »
0
ciao ragazzi.
non sono un esperto in android.

dovrei salvare i dati provenienti dal gps(avendo utilizzato un programmino  in android per ricavare tali dati) su un file di testo e poi dopo organizzarlo come segue:

time della misura;gps/wifi;long;latitudine;accuratezza;
time della misura1;gps/wifi;long;latitudine1;accuratezza1;
....
....
....
....
....



dovrei salvare questi dati su file di testo in formato testo txt.
mi date una dritta.con riferimenti non riesco a trovare nulla!!!

grazie