2013-05-31 9 views
16

Ich verwerfe den bereitgestellten Code, um zu prüfen, ob das Gerät des Nutzers über Google Play-Dienste verfügt, bevor Standortdaten von http://developer.android.com/training/location/retrieve-current.html erfasst werden. Wenn copy-Einfügen in meine IDE Eclipse Punkte korrekt Fehler in den Zeilen heraus, denn „Connection“ wurde nie definiert worden, noch ist „getSupportFragmentManager“Unklare Anleitung zum Abrufen des aktuellen Standorts für Android

int errorCode = connectionResult.getErrorCode(); 

und

errorFragment.show(getSupportFragmentManager(), 
        "Location Updates"); 

Soll ich einfach erstellen eine Variable namens ConnectionResult connectionResult, um das Problem zu beheben? Ich bin mir nicht sicher, wie ich das zweite korrigieren soll.

Zusätzlich wird die Linie

mLocationClient = new LocationClient(this, this, this); 

aus weiter entlang der Seite in der MainActivity Klasse schlägt setzen, die nicht den LocationClient Konstruktor nicht erfüllt, einen anderen Fehler hervorruft.

Update: Ein weiteres Problem mit dem Tutorial. Hallo zusammen, das Tutorial verweist auf die Klasse LocationResult, die es hier nicht erstellt hat: http://developer.android.com/training/location/receive-location-updates.html. Wie/wo soll ich das definieren?

+1

Ihr Titel nicht Ihre Beschreibung verwendet ist – juned

+0

@juned Sie dankt, ich hoffe, dass es klar ist jetzt – NumenorForLife

Antwort

35

Das Lernprogramm ist irreführend. Wenn Sie Google Play-Dienste überprüfen möchten, gehen Sie folgendermaßen vor.

int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
if (errorCode != ConnectionResult.SUCCESS) { 
    GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show(); 
} 

Dies wird automatisch einen entsprechenden Fehlerdialog anzeigen, wenn er nicht existiert.

Zu Ihrem zweiten Problem. Der Rest des Tutorials muss befolgt werden. Sie müssen GooglePlayServicesClient.ConnectionCallbacks und GooglePlayServicesClient.OnConnectionFailedListener implementieren, wenn Sie die locationclient mit new LocationClient(this, this, this);

Hinweis erstellen möchten: nicht versuchen, die locationclient bis zu verwenden, nachdem die onConnected Methode in der Rückruf aufgerufen wird.

-1

Nach dem Tutorial lief ich die gleichen Fehler, aber das mitgelieferte Codebeispiel scheint korrekt implementiert zu sein.

/** 
* Verify that Google Play services is available before making a request. 
* 
* @return true if Google Play services is available, otherwise false 
*/ 
private boolean servicesConnected() { 

    // Check that Google Play services is available 
    int resultCode = 
      GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 

    // If Google Play services is available 
    if (ConnectionResult.SUCCESS == resultCode) { 
     // In debug mode, log the status 
     Log.d(LocationUtils.APPTAG, getString(R.string.play_services_available)); 

     // Continue 
     return true; 
    // Google Play services was not available for some reason 
    } else { 
     // Display an error dialog 
     Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 0); 
     if (dialog != null) { 
      ErrorDialogFragment errorFragment = new ErrorDialogFragment(); 
      errorFragment.setDialog(dialog); 
      errorFragment.show(getSupportFragmentManager(), LocationUtils.APPTAG); 
     } 
     return false; 
    } 
} 

http://developer.android.com/shareables/training/LocationUpdates.zip

Verwandte Themen