Geolocalización de Android de React-native

Necesito detectar la geolocalización del usuario en React-nativo de Android, pero la implementación actual es compatible sólo con iOS. No he encontrado ningún tutorial ni preguntas relacionadas en ninguna parte.

He intentado crear mi propio componente nativo de Android para esto. He intentado con el emulador (el establecimiento de algunas coordenadas a través de línea de comandos) y con un teléfono, pero no hay icono de gps en la barra de acción y la reacción de devolución de llamada no tiene datos en él.

Estoy tratando de obtener la última ubicación conocida de inmediato y también estoy configurando un detector de eventos para las actualizaciones.

public class GeoLocation extends ReactContextBaseJavaModule implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { protected static final String TAG = "GeoLocation"; protected GoogleApiClient mGoogleApiClient; protected Location mLastLocation; public GeoLocation(ReactApplicationContext reactContext) { super(reactContext); buildGoogleApiClient(); } @Override public String getName() { return "GeoLocation"; } protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(getReactApplicationContext()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); mGoogleApiClient.connect(); } @Override public void onConnected(Bundle connectionHint) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); //WritableMap params = Arguments.createMap(); //Can I use ConcurrentHashMap instead of WritableMap? ConcurrentHashMap<String, String> params = new ConcurrentHashMap(); params.put("lastLocation", mLastLocation.toString()); sendEvent(getReactApplicationContext(), "geoCoordsChanged", params); } @Override public void onConnectionFailed(ConnectionResult result) { Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode()); } @Override public void onConnectionSuspended(int cause) { mGoogleApiClient.connect(); } @ReactMethod public void getLastLocation(Callback success,Callback err){ try { String msg = "No location found yet"; if(mLastLocation != null){ msg = mLastLocation.toString(); } success.invoke(msg); } catch (Exception e) { err.invoke(e.getMessage()); } } private void sendEvent(ReactContext reactContext, String eventName, @Nullable ConcurrentHashMap<String, String> params) { try { reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(eventName, params); } catch(Exception e){ } } 

Permisos:

 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <application android:allowBackup="true" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 

No he encontrado nada relevante de los registros logcat tampoco. ¡Cualquier extremidad qué está mal con este código o cualquier clase de solución para conseguir geocoordinates sería grande!

UPDATE : Suspiro. Hablé pronto. Es parte de 0.15.0: https://github.com/facebook/react-native/releases/tag/v0.15.0

El módulo oficial todavía no está abierto (consulte: Problemas conocidos ), pero el hecho de que haya documentación para usarlo con Android sugiere que aparecerá en algún momento … pronto. Mientras tanto, esto es lo que tengo un mes después y después de un poco de google:

  • Rn-geolocalización (Parece simple, va a intentarlo).
  • Reaccionar-nativo-androide-geolocalización (También se ve bien?)
  • Reaccionar-nativo-fondo-geolocalización (no libre para Android, pero se parece a la verdadera oferta para graves aplicaciones con GPS intensivo como el funcionamiento / navegación cosas)
  • Reaccionar-nativo-geolocalización-androide (LGPL.)
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.