Autore Topic: salvataggio dati gps su file.txt  (Letto 984 volte)

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
salvataggio dati gps su file.txt
« il: 08 Maggio 2013, 17:33:49 CEST »
0
ciao ragazzi.

siccome sto facendo la mia tesi su un programma di localizzazione ho dei seri problemi per la manipolazione dei dati (latitudine,longitudine,).
vorrei salvare questi dati su un file.txt sulla sd card del mio samsung android. il problema  e che ho fatto una prova per poter salvare sul file almeno il dato relativo alla latitudine ma non ricevo nulla anzi sul file txt ho sempre la pagina bianca.
non so dove sia il problema..
mi dite dove sbaglio??
vi allego il file java..

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

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import it.anddev.Tesi.R;
import android.content.Context;
import android.location.Location;

import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.text.format.Time;
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;

public class thesi_geoposizionamento extends MapActivity
{
        private TextView tvLatitudine;
        private TextView tvLongitudine;
        private TextView tvAccuratezza;
        char gps,wifi;
       

        //Riferimento alla MapView
        private MapView mapView;
        android.location.Location luogo ;
        int i=0;

        //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);
                tvAccuratezza = (TextView)this.findViewById(R.id.tvAccuratezza);
                // Otteniamo il riferimento alla MapView
                mapView = (MapView)findViewById(R.id.mapView);//   la piu importante..

                // 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);
                        do
                            {  
                               
                                 Toast.makeText(this, "1)questa è l'ora effettiva di partenza della prova",Time.EPOCH_JULIAN_DAY);
                                     if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
                                        {
                                               Toast.makeText(this, "1)GPS è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();
                                                   
                                               for(int i=0;i<200;i++)
                                                          {
                                            i++;
                                                      }
                                    // Registriamo il LocationListener al provider gps
                                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,4,5,locationListener);
                                                //eseguo il salvataggio dei dati gps
                                       
                                       
                                              {
                                                // scriviFile(tvLatitudine,tvLongitudine,tvAccuratezza) ;      
                                                 // scriviFile(gps,tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                  scriviFile(luogo);
                                              }
                                                               
                                              //disabilito gps una volta che ho salvato i dati in modo da risparmiare la batteria.
                                              Toast.makeText(this, "1)operazione di scrittura coordinare finita!! GPS è attualmente abilitato.vuoi disabilitarlo dalle importazioni?", Toast.LENGTH_LONG).show();
                                             
                                              for(int i=0;i<200;i++)
                                                                 {
                                                   i++;
                                                             }
                                              //controllo se il wifi è abilitato
                                              if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
                                                  {
                                                 
                                                            Toast.makeText(this, "1)wifi è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();
                                                         locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE);  
                                                            for(int i=0;i<200;i++)
                                                                         {
                                                                               i++;
                                                                             }
                                                  }
                                                 
                                                      // Registriamo il LocationListener al provider wifi
                                                      locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,4,2, locationListener);
                                               
                                                      //eseguo il salvataggio dei dati wifi
                                                           {
                                                                  // scriviFile(wifi,tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                  // scriviFile(tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                  scriviFile(luogo);
                                                           }
                                                           
                                                           Toast.makeText(this, "1)operazione di scrittura coordinare finita!!wifi è attualmente abilitato.vuoi disabilitarlo dalle importazioni?", Toast.LENGTH_LONG).show();
                                                           for(int i=0;i<200;i++)
                                                                         {
                                                                               i++;
                                                                             }
                                                 }
                                           else
                                             {
                                                   locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                                                    // Registriamo il LocationListener al provider gps
                                                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,4,2, locationListener);
                                                       
                                                                //eseguo il salvataggio dei dati gps
                                                              {
                                                               
                                                                 // scriviFile(gps,tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                  //scriviFile(tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                  scriviFile(luogo);
                                                              }
                                                              //disabilito gps una volta che ho salvato i dati in modo da risparmiare la batteria.
                                                             
                                                         Toast.makeText(this, "2)operazione di scrittura coordinare finita!! GPS è attualmente abilitato.vuoi disabilitarlo dalle importazioni?", Toast.LENGTH_LONG).show();
                                                              for(int i=0;i<2000;i++)
                                                                         {
                                                                               i++;
                                                                             }
                                                              //controllo se il wifi è abilitato
                                                              if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
                                                                  {
                                                                  locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE);  
                                                                  Toast.makeText(this, "2)wifi è attualmente disabilitato. E' possibile abilitarlo dal menu impostazioni.", Toast.LENGTH_LONG).show();
                                                                             
                                                                            for(int i=0;i<200;i++)
                                                                                {
                                                                                       i++;
                                                                                    }
                                                                  }
                                                           // Registriamo il LocationListener al provider wifi
                                                              locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE);    
                                                              locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,4,1,locationListener);
                                                               
                                                                      //eseguo il salvataggio dei dati wifi
                                                                           {
                                                                                                                                                                                                                                          // scriviFile(wifi,tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                                   //scriviFile(tvLatitudine,tvLongitudine,tvAccuratezza) ;
                                                                                   scriviFile(luogo);
                                                                            }
                                                                           Toast.makeText(this, "2)operazione di scrittura coordinare finita!!wifi è attualmente abilitato.vuoi disabilitarlo dalle importazioni?", Toast.LENGTH_LONG).show();                  
                                                                              for(int i=0;i<200;i++)
                                                                                    {
                                                                                           i++;
                                                                                        }                        
                                                }
                                     i++;
                                                   
            }                  
               while(i<30);
       
            }          
                       
                        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)));
                        tvAccuratezza.setText(Integer.toString((int)location.getAccuracy())+" m");     
                }

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

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

                @Override
                public void onStatusChanged(String provider, int status,Bundle extras) {
                        Toast.makeText(thesi_geoposizionamento.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,4,2, locationListener);
                   //myLocationOverlay.enableMyLocation();
           }

 
         long endTime = System.currentTimeMillis();
                         
                  public static double getRound(double x, int digits)
                  {
                         double powerOfTen = Math.pow(200, digits);
                         return ((double)Math.round(x * powerOfTen) / powerOfTen);
                  }
        @Override
           protected boolean isRouteDisplayed()
               {
                  // TODO Auto-generated method stub
                      return false;
               }
        public void  scriviFile( Location luogo)
        //public void scriviFile(TextView tvLatitudine, TextView tvLongitudine, TextView tvAccuratezza)
        //public void scriviFile(char String,TextView tvLatitudine, TextView tvLongitudine, TextView tvAccuratezza)
            {  
                  String path = "/sdcard/external_sd/ciao1.txt";
                try
                      {
                     File file = new File(path);
                       FileWriter fw=new FileWriter(file);
                       
                            //fw.write("ciao a tutti");
                       Double geoLat= luogo.getLatitude()*1E6;
                      // fw.write((int) luogo.getLatitude());
                                fw.write("tvLatitudine="+geoLat);
                       //+"tvLongitudine="+tvLongitudine+";"+"tvAccuratezza="+tvAccuratezza+"\n"
                                    fw.write('\n');
                       fw.flush();
                     
                    // scriviFile(String,tvLatitudine,tvLongitudine,tvAccuratezza) ;
                    // scriviFile(tvLatitudine,tvLongitudine,tvAccuratezza) ;
                }
                catch (IOException e)
                   {
                    e.printStackTrace();
               }
    }
}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:salvataggio dati gps su file.txt
« Risposta #1 il: 08 Maggio 2013, 18:03:19 CEST »
+1
A occhio il problema è che cerchi di scrivere su file nella OnCreate, in cui tra l'altro hai messo dei ritardi hardcoded che hanno poco senso.

Senza stare a stravolgere il codice (dopo tutto si tratta di una tesi), prova a scrivere su file nella onlocationchanged e vedi se arrivi al risultato che ti serve.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:salvataggio dati gps su file.txt
« Risposta #2 il: 08 Maggio 2013, 20:49:23 CEST »
0
ok provo a salvare nell'altra parte.

grazie.

Post unito: 08 Maggio 2013, 20:52:34 CEST
essendo poco pratico di java vorrei introdurre dei ritardi in modo da permettere di fare le misure su gps una volta e su wifi un po di tempo dopo e quindi ho introdotto dei stupidi cicli for come ritardatori..

mi sai indicare come si fa a ritardare un azione rispetyto ad un altra e viceversa..

grazie
« Ultima modifica: 08 Maggio 2013, 20:52:34 CEST da mos, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:salvataggio dati gps su file.txt
« Risposta #3 il: 08 Maggio 2013, 21:18:48 CEST »
0
essendo poco pratico di java vorrei introdurre dei ritardi in modo da permettere di fare le misure su gps una volta e su wifi un po di tempo dopo e quindi ho introdotto dei stupidi cicli for come ritardatori..

mi sai indicare come si fa a ritardare un azione rispetyto ad un altra e viceversa..

Per schedulare operazioni puoi usare AlarmManager | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline AntonioE.

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Microsoft Windows 7 x64
Re:salvataggio dati gps su file.txt
« Risposta #4 il: 14 Maggio 2013, 16:37:47 CEST »
0
mi accodo visto che faccio una cosa molto simile ... salvo un file .xml in  /storage/sdcard0/Documents/  usando come nome del file il toString di un oggetto Date, sostituendo gli spazi con degli underscore

esempio:  /storage/sdcard0/Documents/Tue_May_14_16:32:40_CEST_2013.xml

il problema è che non crea nessun file con quel nome, se invece metto qualsiasi altra cosa lo crea correttamente, ho provato anche file lunghissimi, o con spazi, gli piace qualsiasi cosa tranne il toString di un oggetto data ... dov'è l'arcano?

Non c'è cattivo più cattivo di un buono che diventa cattivo

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:salvataggio dati gps su file.txt
« Risposta #5 il: 14 Maggio 2013, 18:26:04 CEST »
0
mi accodo visto che faccio una cosa molto simile ... salvo un file .xml in  /storage/sdcard0/Documents/  usando come nome del file il toString di un oggetto Date, sostituendo gli spazi con degli underscore

esempio:  /storage/sdcard0/Documents/Tue_May_14_16:32:40_CEST_2013.xml

il problema è che non crea nessun file con quel nome, se invece metto qualsiasi altra cosa lo crea correttamente, ho provato anche file lunghissimi, o con spazi, gli piace qualsiasi cosa tranne il toString di un oggetto data ... dov'è l'arcano?

Spesso il problema è nel modo in cui viene composto il path. Puoi postare quella parte di codice?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nicola_D

  • Moderatore
  • 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:salvataggio dati gps su file.txt
« Risposta #6 il: 14 Maggio 2013, 18:51:55 CEST »
0
il problema è dato dai due punti, non sono ammessi come nome del file...
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:salvataggio dati gps su file.txt
« Risposta #7 il: 29 Maggio 2013, 14:12:06 CEST »
0
ciao ragazzi.vorrei chiedervi una cosa.

una volta ottenuto il dato sulla posizione che sia(latitudine,longitudine,altezza),dovrei salvari il tempo in cui io ottengo ogni dato..ho provate in tutte la maniere usando ilo calendario greoriano e usando il formato Date..

nulla funziona..
il formato per il salvataggio è il seguente:la data:in ore:minuti:secondi:millisecondi.

fw.write("<"+Calendar.MINUTE+":"+Calendar.MILLISECOND+":"+Calendar.SECOND+":"+Calendar.MILLISECOND+">"+"WIFI"+"tvLatitudine="+(geoLat1/1E6)+";"+"tvLongitudine="+(geoLng1/1E6)+";"+"tvAccuratezza+2="+(Accuratezza1/1E6)+"\n");

il risultato
<11:12:13:14>;7.....;67.....;30 m


se qulcuno mi puo indicare come fare?

vorrei usare il formato per la data dall'importazione di:  java.util.Date..

grazie



 


Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:salvataggio dati gps su file.txt
« Risposta #8 il: 29 Maggio 2013, 14:19:33 CEST »
+1
Codice (Java): [Seleziona]
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
String formattedTime = formatter.format(new Date());

fw.write("<"+formattedTime+">"+"WIFI"+"tvLatitudine="+(geoLat1/1E6)+";"+"tvLongitudine="+(geoLng1/1E6)+";"+"tvAccuratezza+2="+(Accuratezza1/1E6)+"\n");

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:salvataggio dati gps su file.txt
« Risposta #9 il: 29 Maggio 2013, 14:41:06 CEST »
0
quando inserisco il codice anche se lo avevo gia provato prima mi dice :
the costructor Date() is undefined..
come mai?
ho gia importato le librerie-

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:salvataggio dati gps su file.txt
« Risposta #10 il: 29 Maggio 2013, 14:44:18 CEST »
0
quando inserisco il codice anche se lo avevo gia provato prima mi dice :
the costructor Date() is undefined..
come mai?
ho gia importato le librerie-

se stai importando java.util.Date non è possibile che non ci sia il costruttore di default, verifica che effettivamente stai importando il Date dal package corretto.

Offline mos

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    andorid galaxy 2.3.5
Re:salvataggio dati gps su file.txt
« Risposta #11 il: 29 Maggio 2013, 14:56:15 CEST »
0
il rpobela dovrebbe essere questo:
nell'importanzione di import java.util.Date;

mi da un errore che dice:the import java.util.Date collids whith another import statement.


Post unito: 29 Maggio 2013, 18:35:04 CEST
ciao ragazzi vorrei introdurre in ritardo  nell'esecuzione di un programma..non voglio ritardare un thread ma un ritardo nell'esecuzione di una sequenza di codice..questo è dovuto al fatto che dovrei salvare i dati rtelativi al gps ma non voglio salvare mille volte lo stesso dato ma "dare tempo"a l sistema di cambiare misura e dopo cio salvare i nuovi dati delle coordinate...ho provato usando il seguente codice:
try {
  Thread.sleep(millisecondi);
}
catch (Exception e) {}

purtroppo questo codice non introduce ritadi ma esegue una certa sequenza ogni tot millesecondi..

grazie
mi date una dritta grazie!!!
« Ultima modifica: 29 Maggio 2013, 18:35:04 CEST da mos, Reason: Merged DoublePost »