2011-01-13 4 views
1

Jede Hilfe, um die NMEA Satz wie $ GPRMC anzuzeigen ..... ich den Code unten bin mit:NMEA-Satz anzeigen?

public class SampleNMEA extends Activity implements LocationListener, GpsStatus.Listener,GpsStatus.NmeaListener{ 

    LocationManager lm; 
    TextView output; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     output = (TextView)findViewById(R.id.out); 
     lm = (LocationManager) getSystemService(LOCATION_SERVICE); 

     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this); 
     final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 


     output.append("\nBelow Data is about the your location:"); 

     output.append("\n\n\nLatit:"+location.getLatitude()); 
     output.append("\n\nLongitude:"+location.getLongitude()); 
     output.append("\n\nTime: "+location.getTime()); 


    } 
    public void onLocationChanged(Location location) 
    { 
     output.append("\n\n\nLatitude:"+location.getLatitude()); 
     output.append("\n\nLongitude:"+location.getLongitude()); 
     output.append("\n\nTime: "+location.getTime()); 
    } 

    public void onProviderDisabled(String arg0) { 
     // TODO Auto-generated method stub 

    } 

    public void onProviderEnabled(String arg0) { 
     // TODO Auto-generated method stub 

    } 

    public void onStatusChanged(String arg0, int arg1, Bundle arg2) 
    { 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this); 
     final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     output.append("\n\n\nLatitude:"+location.getLatitude()); 
     output.append("\n\nLongitude:"+location.getLongitude()); 
     output.append("\n\nTime: "+location.getTime()); 


} 

    public void onGpsStatusChanged(int event) 
    { 

    } 
    public void onNmeaReceived(long timestamp, String nmea) 
    { 
     output.append("NMEA Sentence: "+nmea); 

    } 

    } 

Jede Hilfe, die ich hinzugefügt Berechtigungen in manifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> 
+0

Hey Jagan, hast du dein Problem gelöst? Ich möchte dieselbe Operation durchführen, aber das kann ich nicht. Ich möchte die aktuell verwendeten Satelliteninformationen sowie Längen- und Breitengrade von NMEAListener abrufen. Kannst du mir bitte einen Gefallen tun, kannst du bitte deinen Code teilen, damit ich meinen Fehler finden kann und ich mehr Ahnung davon bekommen kann. Danke im Voraus. – anddev

Antwort

0

Rufen Sie addNmeaListener(GpsStatus.NmeaListener) an, um diese Klasse als Listener festzulegen? Wenn nicht, solltest du!

Um dies zu tun, rufen Sie es wie lm.addNmeaListener(this);.

Viel Glück & Grüße

+0

Ich versuchte dies auch, aber es reagiert nicht richtig .. einfach die Anwendung sagen "Force Close", was ich für diese jede Erlaubnis in Manifest-Datei erforderlich ändern muss. – Jagan

+1

Sie müssen die Berechtigung android.permission.ACCESS_FINE_LOCATION zu Ihrer Aktivität hinzufügen. Aber neben "Force Close" sollte der Protokolleintrag weitere Informationen enthalten. – mdelolmo

0

Der Abschluss in this discussion here erreicht wird, ist, dass NMEA nicht auf einigen Telefonen funktioniert (das onNmeaReceived Ereignis nie ausgelöst). ... aber würde gerne darüber korrigiert werden.

1

Ich habe Samsung Galaxy Spica und ja, es funktioniert nicht. Allerdings habe ich "Ultra GPS Logger" (link) installiert und NMEA-Daten werden korrekt gelesen. Vielleicht hat der Autor dieses Tools eine andere Lösung zum Lesen von NMEA verwendet, was bedeutet, dass dies möglich ist.

2

Fügen Sie einfach einen NmeaListener

public class SampleNMEA extends Activity implements LocationListener, GpsStatus.Listener,GpsStatus.NmeaListener{ 
LocationManager lm; 
TextView output; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    output = (TextView)findViewById(R.id.out); 
    lm = (LocationManager) getSystemService(LOCATION_SERVICE); 

    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this); 
    final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 


    output.append("\nBelow Data is about the your location:"); 

    output.append("\n\n\nLatit:"+location.getLatitude()); 
    output.append("\n\nLongitude:"+location.getLongitude()); 
    output.append("\n\nTime: "+location.getTime()); 
    //add listener here 
    lm.AddNmeaListener(this); 





} 
3

ändern Ihrem Provider GPS_PROVIDER.

Sie können den Nmea-Satz von Gps-Provider erhalten.

Ändern Sie diese Zeile

 **lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this);** 

zu

 **lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000,10,this);** 

Jetzt in onNmeaReceived() Methode überprüfen.

0

Wenn fakeGps in der Liste der installierten Anwendungen ist, sollten Sie es zu löschen und Neustart Gerät um Nmea Info zu starten Empfang. Sie können den kostenlosen Nmea Info Monitor vom Spielemarkt installieren, um den Nmea Receiver auf Ihrem Gerät zu testen.

Verwandte Themen