No se puede obtener la ubicación en Genymotion VM

He creado esta sencilla aplicación para obtener la ubicación. Estoy usando la máquina virtual genymotion. He habilitado el GPS e instalado correctamente los servicios de Google Play. Lamentablemente no puedo recuperar la ubicación. Seguramente ya he añadido el permiso correcto. Hay algo más que debo hacer?

package com.salvo.weather.android; import android.app.Activity; import android.location.Location; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationServices; public class TodayActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { protected static final String TAG = "location-weather"; protected Location mLastLocation; /** * Provides the entry point to Google Play services. */ protected GoogleApiClient mGoogleApiClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_today); // TODO: here get coordinates data and pass to Valley JsonObjectRetrieve buildGoogleApiClient(); } /** * Builds a GoogleApiClient. Uses the addApi() method to request the LocationServices API. */ protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); if (mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_today, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * Runs when a GoogleApiClient object successfully connects. */ @Override public void onConnected(Bundle bundle) { mLastLocation = LocationServices .FusedLocationApi .getLastLocation(mGoogleApiClient); if (mLastLocation != null) { Log.i(TAG, String.valueOf(mLastLocation.getLatitude())); Log.i(TAG, String.valueOf(mLastLocation.getLongitude())); } else { Toast.makeText(this, "No Location detected", Toast.LENGTH_LONG).show(); } } @Override public void onConnectionSuspended(int i) { // The connection to Google Play services was lost for some reason. We call connect() to // attempt to re-establish the connection. mGoogleApiClient.connect(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { // Refer to the javadoc for ConnectionResult to see what error codes might be returned in // onConnectionFailed. Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + connectionResult.getErrorCode()); } } 

Genymotion tiene una función gratuita para configurar la ubicación llamada "GPS" accesible mediante un icono en la parte superior derecha de la ventana del emulador. Utilice el icono "GPS" para establecer su ubicación a través de latitud / longitud o mapa de búsqueda. A continuación, los Servicios de ubicación encontrarán la ubicación que especificó.

Entre las soluciones adicionales se incluyen Genyshell scriptable libre o API Java pagada.

  • Evitar que se detecte una ubicación incorrecta con el proveedor de la red
  • ADB Shell obtiene la ubicación GPS en vivo (no la última ubicación conocida)
  • Donde el archivo .apk se coloca en el teléfono después de la instalación
  • FusedLocationApi.getLastLocation siempre null
  • Compruebe si el usuario ha activado GPS después de
  • Cómo recuperar la ubicación GPS a través de SMS
  • Error invocar método virtual 'doble android.location.Location.getLatitude ()' en una referencia de objeto nulo
  • Obtención de la ubicación actual de un dispositivo mediante la función {X} api
  • La ubicación de la red Android tarda horas en actualizar la ubicación
  • Diferencia entre LocationRequest setInterval (long millis) y LocationRequest setFastestInterval (long millis)
  • Qt5 QGeoPositionInfoSource :: createDefaultSource () se bloquea en Android 5.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.