El Arsenal de Android – Ubicación

Esta biblioteca empaqueta las API de localización en las corrutinas de Kotlin y Flow .

Cree una CoLocation o CoGeocoding preferiblemente usando un marco de inyección de dependencia. CoLocation es muy similar a las clases proporcionadas por la API de ubicación. En lugar de LocationServices.getFusedLocationProviderClient (context) .lastLocation puede utilizar coLocation.getLastLocation () . Asegúrese de tener permiso de ubicación de Marshmallow si es necesario para sus solicitudes de API.

Ejemplo:

  val  coLocation  =    CoLocation  .from (contexto);
 val  coGeocoder  =    CoGeocoder  .da (contexto);

 val  locationRequest  =    LocationRequest  .create ()
        .setPriority ( LocationRequest .  PRIORITY_HIGH_ACCURACY )
        .setInterval ( 5000 )

 val  locationUpdates :    MutableLiveData   <  Ubicación >    =    MutableLiveData  ()
 val  addressUpdates :    LiveData   <  Dirección ? >    =  locationUpdates.switchMap {location  - [19659009]> 
        liveData {emit (coGeocoder.getAddressFromLocation (ubicación))}
    }

 val  trabajo  =  viewModelScope.launch {
     prueba  {
        coLocation.getLocationUpdates (locationRequest) .collect ( mutableLocationUpdates  :: postValue)
    }  catch  ( y :    CancellationException ) {
          //  Se cancelaron las actualizaciones de ubicación 
    }
}

  //  Las actualizaciones se cancelan automáticamente cuando se cancela viewModelScope. 
  //  Si desea cancelar antes, guarde su trabajo y cancélelo. 
job.cancel () 

Las siguientes API se incluyen en esta biblioteca:

  • FusedLocationProviderClient via CoLocation
  • SettingsClient via CoLocation
  • Geocoder via CoGeocoder

El control de la configuración de ubicación se simplifica con esta biblioteca al proporcionar un SettingsResult a través de coLocation.checkLocationSettings (locationRequest) :

  val  settingsResult] =  coLocation.checkLocationSettings (locationRequest)

 cuando  (settingsResult) {
     SettingsResult.Satisfied    - >  startLocationUpdates ()
     es    SettingsResult.Resolizable    - >  settingsResult.resolve (actividad,  REQUEST_SHOW_SETTINGS )
     otro    - >  {  / *  Ignore por ahora, no podemos resolverlo de todos modos  * /  }
}

 anular    fun    onActivityResult  ( requestCode :    Int   resultCode :    Int   datos : [19659005] ¿Intención ?) {
     super  .onActivityResult (requestCode, resultCode,  datos )
     if  (requestCode  ==    REQUEST_SHOW_SETTINGS    &&  resultCode  ==    Actividad .  RESULT_OK) 
          //  Resolución correcta, ahora se cumplen los ajustes de ubicación 
        startLocationUpdates ()
    }
} 

Una aplicación de muestra básica está disponible en el proyecto de muestra .

La biblioteca está disponible en jCenter. Agregue lo siguiente a build.gradle :

  dependencias {
    implementación   & # 39;  com.patloew.colocation: colocation: 1.0.0  & # 39; 
      implementación   & # 39;  com.google.android.gms: play-services-location: 17.0. 0  & # 39; 
} 

Si desea utilizar una versión más reciente de Google Play Services, declare la última versión en su build.gradle . Esto luego anula la versión declarada en la biblioteca.

CoLocation solo funciona con Android Gradle Plugin 3.0.0 o superior, ya que utiliza funciones del lenguaje Java 8. No olvide configurar la compatibilidad del código fuente con Java 8:

  android {
  compileOptions {
      sourceCompatibility  JavaVersion .   VERSION_1_8 
      targetCompatibility  JavaVersion .   VERSION_1_8 
  }
  kotlinOptions {
      jvmTarget  =    " 1,8 " 
}
} 

Al realizar pruebas unitarias de las clases de tu aplicación, el comportamiento de CoLocation y CoGeocoder se puede burlar fácilmente. Consulte MainViewModelTest en el proyecto muestra para obtener una prueba de muestra.

Si le gusta la biblioteca y le gustaría apoyar al creador para el desarrollo / mantenimiento, puede hacer una donación de Bitcoin a bc1q5uejfyl2kskhhveg7lx4fcwgv8hz88r92yzjsu . ¡Gracias!

  Copyright 2020 Patrick Löwenstein

Con licencia de Apache License, Versión 2.0 (la "Licencia");
no puede utilizar este archivo excepto de acuerdo con la licencia.
Puede obtener una copia de la licencia en

    http://www.apache.org/licenses/LICENSE-2.0

A menos que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.
Consulte la licencia para el idioma específico que rige los permisos e
limitaciones de la licencia.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *