Android Tutorials

  • Antworten:13
  • OffenNicht stickyNicht beantwortet
6
Gelöschter Account

01.02.2011 17:59:12 via Website

Danke.Werds mir mal durchschauen....

06.02.2011 23:31:28 via App

Kommunikation zwischen laufendem Service und frischem Broadcastreceiver (Receiver sendet Daten an Service) :grin: Ja, das hätte ich jetzt gerne :) Vielleicht sollte ich aber eher googlen oder hier nen Thread öffnen?
Lg Ansgar

06.02.2011 23:39:11 via App

Ok, macht einerseits Sinn, andererseits muss der Broadcastreceiver (zb für SMS-Empfang) ja auch irgendwie Aktionen auslösen, deswegen hätte ich gehofft, dass er sich auch bei einem laufendem Service 'melden' kann.. Naja, werd nochmal ein bisel googlen.
Lg Ansgar

07.02.2011 00:05:57 via App

Also ich brauche eine einzelne aktuelle GPS-Position. Vielleicht kann man das auch anders machen, aber ich habs halt erstmal so versucht. Und der request für die Ortung wird halt aus einem Service gestartet und nun soll (bei Erhalt der Position) der Service benachrichtigt werden, dass er die Locationupdates abbricht. Ich dachte, dass ich so eine einzelne aktuelle Position bekomme :) Ich vermute schon, dass das besser geht, aber wie? (erst ab 2.3 gibt es 'requestSingleLocationUpdate' leider :( )
Lg Ansgar

— geändert am 07.02.2011 00:06:35

07.02.2011 00:18:25 via Website

Das kannst du direkt in deinem Service machen :D

Zuerst implementierst du in deinen Service LocationListener.

dann hast du die 3 Methoden:
  • onLocationChanged
  • onProviderDisabled (gps ist deaktiviert)
  • onProviderEnabled (gps ist aktiviert)
  • onStatusChanged (wenn der user das gps ab oder aufdreht)

dann machst du dir noch 2 Methoden:
1private void registerLocationListener() {
2 // Register LocationManager
3 locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
4
5 try {
6 locationManager.requestLocationUpdates("gps", 0, 0, LocationActivity.this);
7 Log.i("Altitude", "LocationListener is now registered. Evering should work fine!");
8 } catch (final RuntimeException e) {
9 Log.e("Altitude", "Could not register location Listener: " + e.getMessage(), e);
10 }
11 }
12
13 private void unregisterLocationListener() {
14 if (locationManager != null) {
15 locationManager.removeUpdates(this);
16 locationManager = null;
17 }
18 }

Du musst dir oben ein Obejkt von LocationManager erstellen. Und rufst im onStart (glaube ich) registerLocationListener() auf
in der onLocationChanged schreibst du dann folgendes rein :
1if (location.getProvider().equals("gps")) {
2 if (location != null) {
3 //Location gefunden, TODO: tu das was du mit der location machen willst
4
5 unregisterLocationListener();
6 }
7 }

Wenn er dann einmal eine Position gefunden hat, höhrt er auf zu empfangen. :D