CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

Problema con interfacciamento 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
    Jan 2010
    Messaggi
    4

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Problema con interfacciamento gps

    Salve a tutti, sono nuovo del mondo android. La piattaforma mi sta piacendo molto, ed avendo delle basi di programmazione java, volevo cimentarmi nella scrittura di qualche programma.

    Partendo da alcuni esempi presi da internet, per cercare di capire come si programma per android, ho provato a scrivere un applicazione che si interfacciasse con il gps e mi mostrasse un qualche tipo di informazione. (nella fattispecie l'orario)

    Il problema al quale sono arrivato è che da qualche parte ho sbagliato, ma non capisco dove perchè non ho errori o warning in compilazione, solo quando il programma viene lanciato nell emulatore, questo mi dice:

    "The application org.me.helloworld (process org.me.helloworld) has stopped unexpectedly. Please try again"

    Il problema non si pone se non uso l'oggetto loc (tipo Location). Se lo uso o in get o in set, il problema si pone.

    Mi potete aiutare?

    Il listato del mio programma è:
    codice:
    package org.me.helloworld;
    
    import android.app.Activity;
    import android.content.Context;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.widget.TextView;
    
    
    
    
    public class MainActivity extends Activity {
    
     LocationListener gpsListener = new LocationListener(){
                Location curLocation;
                boolean locationChanged = false; 
                public void onLocationChanged(Location location) {
                    if(curLocation == null) {
                        curLocation = location;
                        locationChanged = true;
                    }
    
                    if(curLocation.getLatitude() == location.getLatitude() &&  curLocation.getLongitude() == location.getLongitude())
                        locationChanged = false;
                    else
                        locationChanged = true;
    
                        curLocation = location;
                    }
    
                public void onProviderDisabled(String provider){}
    
                public void onProviderEnabled(String provider){}
    
                public void onStatusChanged(String provider, int status, Bundle extras){}
            };
    
            
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
    
            LocationManager locMan;
            locMan =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
            locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 1, gpsListener);
    
    
            Location loc = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
    
    
       
    
            Long ora = loc.getTime();
    
       
            TextView tv = new TextView(this);
            tv.setText(ora.toString());
            setContentView(tv);
    
        }
    }
    Il file manifest è:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="org.me.helloworld">
        <application>
             <activity android:name=".MainActivity" android:label="MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>
        <uses-permission android:name="android.permission.LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
        </manifest>
    PS programmo in netbeans 6.7.1 in ambiente Kubuntu 9.10. Ho provato sia con l'emulatore di android 1.5 che 2.1. Stesso problema.

    Dove sto sbagliando?

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Jan 2010
    Messaggi
    4

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho trovato il problema da solo: il 99% dei problemi di programmazione, nascono tra la sedia ed il monitor.

    Questo era uno di quei casi.

    Semplicemente loc è sempre null, per il semplice fatto che è sbagliato il programma in se per come l'ho impostato. A rileggere il codice ora mi vergogno di averlo scritto.

    Mi sa che prima di imparare per android, mi devo ristudiare un po di java... dopo 2 anni che non programmo sono parecchio arrugginito.

  4. #3
    Baby Droid


    Registrato dal
    Feb 2010
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    mi spigheresti dove è il problema che può servire anche a me?

  5. #4
    Baby Droid


    Registrato dal
    Jan 2010
    Messaggi
    4

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Duarda il nuovo codice. Non da il tempo, ma la latitudine. Stessa zuppa comunque. Basta sostituire getLatitude con gettime. Ho preferito metterti la latitudine invece del tempo perche, visto che l'evento è onlocationchanged, dovresti capire che non hai un orologio, ma hai solo indicazioni temporali quando la tua posizione è cambiata. Comunque, spero tu capisca il nuovo (Semplicissimo) codice.

    codice:
    package org.me.androidapplication10;
    
    import android.app.Activity;
    import android.content.Context;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    
    
    
    
    public class MainActivity extends Activity {
    
         
    
        LocationListener gpsListener = new LocationListener(){
                public void onLocationChanged(Location location) {}
                public void onProviderDisabled(String provider){}
                public void onProviderEnabled(String provider){}
                public void onStatusChanged(String provider, int status, Bundle extras){}
        };
    
    
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            LocationManager locMan;
            locMan =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
            locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 1, gpsListener);
            Location ora = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
            while (true){
                Double latitudine = ora.getLatitude();
                Log.e("Latitudine", latitudine.toString());
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

  6. #5
    Baby Droid


    Registrato dal
    Jan 2010
    Messaggi
    4

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ah, dimenticavo: è noto che questo programma dopo poco si pianti. Mettere un bel while (true) nel costruttore è esattamente quello che il primo giorno di scuola ti insegnano a non fare.

    Ad ogni modo questo è solo un esempio semplicissimo per farti vedere qual'è un modo giusto per interfacciarsi.

    Per usarlo magari ti puoi fare una bella classe che implementa thread e che faccia quel che ti pare (che ne so, vedere la latitudine ogni 5 secondi ) con un parametro da passare al costruttore, che manco a dirlo sara per esempio "locMan.getLastKnownLocation(locMan.GPS_PROVIDER)" .

    Spero tu abbia capito. Il programma sta a te farlo ed impostarlo come vuoi. Questo post era solo per dirti che il nuovo codice l'ho programmato coi piedi e l'ho fatto SOLO per farti un esempio di interfacciamento, NON è il sistema giusto per sviluppare il programma.

    Buona programmazione...

    Ah, se fai i soldi grazie a questa dritta, ricordati di me!

  7. #6
    Baby Droid


    Registrato dal
    Feb 2010
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    non ho capito...
    ti linko il thread dove ho esposto il mio problema...
    https://www.androidiani.com/forum/in...atore-gps.html

    in due parole, le coordinate che l'emulatore manda sono sempre 0 0 e non capisco il perchè...

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