LocationClient getLastLocation () devolver null

Soy nuevo en la programación de Android y quería empezar creando una aplicación muy básica que muestra la latitud y la longitud de la ubicación actual en la pantalla.

Estoy desarrollando para mi Samsung Galaxy S3 y leído que usted necesita kickstart el teléfono para devolver el GPS .

He intentado hacer esto en el método onConnected() con la llamada de método requestLocationUpdates() en el LocationManager. Sin embargo, encuentro que el LocationClient todavía está devolviendo una localización null .

¿Puede alguien decirme lo que estoy haciendo mal?

Aquí está mi MainActivity:

 import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesClient; import com.google.android.gms.location.LocationClient; public class MainActivity extends FragmentActivity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener { private LocationClient mLocationClient; private Location mCurrentLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationClient = new LocationClient(this, this, this); } @Override protected void onStart() { super.onStart(); mLocationClient.connect(); } @Override protected void onStop() { mLocationClient.disconnect(); super.onStop(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onConnectionFailed(ConnectionResult arg0) { // TODO Auto-generated method stub } @Override public void onConnected(Bundle arg0) { Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show(); LocationManager manager = (LocationManager) this .getSystemService(Context.LOCATION_SERVICE); manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(final Location location) { } }); mCurrentLocation = mLocationClient.getLastLocation(); TextView latTextView = (TextView) findViewById(R.id.latitude_text); latTextView.setText(Double.toString(mCurrentLocation.getLatitude())); TextView longTextView = (TextView) findViewById(R.id.longitude_text); longTextView.setText(Double.toString(mCurrentLocation.getLongitude())); } @Override public void onDisconnected() { Toast.makeText(this, "Disconnected. Please re-connect.", Toast.LENGTH_SHORT).show(); } } 

Mi manifiesto para Android tiene este aspecto:

  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.willigetwet.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Al funcionar el depurador encuentro que mCurrentLocation es null después de la llamada a mLocationClient.getLastLocation() .

Estaría muy agradecido por cualquier ayuda!

mLocationClient.getLastLocation(); Puede devolver null si no tiene ninguna última ubicación guardada por el dispositivo. Si usted lee su documentación , dice;

It returns the best most recent location currently available. If a location is not available, which should happen very rarely, null will be returned

También dentro del método onLocationChanged es posible que desee establecer la ubicación en la ubicación más reciente, cuando cambie su ubicación.

 @Override public void onLocationChanged(final Location location) { mCurrentLocation = location; } 
  • Dar localización falsa al emulador de Genymotion
  • LocationClient getLastLocation () return null
  • ¿Cómo obtener la posición GPS actual sin esperar cambios de ubicación en Android?
  • Cómo obtener el nombre de la ciudad por latitud y longitud en android?
  • CellID y LAC / PSC para celdas vecinas 3G en Android
  • IllegalArgumentException: el proveedor no exisit: null en Maps V1
  • La ubicación de la red Android tarda horas en actualizar la ubicación
  • Usar ubicación simulada sin configurarla en la configuración
  • Ubicación Actualización en función del estado del dispositivo
  • Bug in Android Geofence Código de ejemplo? ¿Puede alguien confirmar?
  • El proveedor de ubicación fusionado setsmallestDisplacement no funciona en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.