Kit de ubicación: use una ubicación simulada y obtenga una actualización de ubicación solo una vez Giemo | Desarrolladores de Huawei | Octubre de 2020

Este artículo proporcionará una integración más rápida con el kit de ubicación y cubrirá cómo obtener su ubicación actual solo una vez, en lugar de tener que obtener actualizaciones continuas a intervalos, y cómo usar la ubicación simulada para cambiar su ubicación actual a cualquier parte del mundo.

Conjunto de ubicación de HUAWEI combina GPS, Wi-Fi y datos de ubicación de la estación base, lo que permite a los desarrolladores de aplicaciones obtener rápidamente la ubicación exacta del usuario.

Comencemos agregando almacenamiento y dependencias de Maven a la aplicación.

  • agregue el repositorio de Huawei Maven al archivo build.gradle del proyecto.
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
...
}
allprojects {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
...

}
}
  • agregue el kit de ubicación al archivo build.gradle de la aplicación.
dependencies {
...

implementation 'com.huawei.hms:location:5.0.2.301'
}
  • agregar permisos a AndroidManifest.xml archivo. (dentro de la etiqueta de manifiesto)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
  • Location Kit no requiere App Gallery Connect para ejecutarse. Entonces, si solo desea probar el kit de ubicación, no tiene que crear una aplicación en AG Connect o descargar agconnect-services.json archivo. Para usar el kit de ubicación, simplemente agregue las dependencias graddle.

Para reducir drásticamente la cantidad de filas en su actividad / fragmento y facilitar la integración de los servicios de ubicación en su proyecto, puede usar lo siguiente HMSLocationService class o ajústelo a las necesidades de su proyecto.

HMSLocationService la clase proporcionará una solución rápida sin inflar su actividad / fragmento al verificar y procesar los permisos de ubicación, crear y procesar solicitudes de ubicación y devoluciones de llamada. Si la ubicación no está disponible actualmente, el servicio intentará devolver la última ubicación conocida del usuario.

Inicialice HMSLocationService para obtener la ubicación actual una vez o para obtener actualizaciones de ubicación continuas.

// initialize on activity or on fragment
val locationService = HMSLocationService(this)
// to get location for one time, initialize with parameter
val locationService = HMSLocationService(this, isContinuous=false)

Si es continuo el parámetro está establecido en Falso, el parámetro de número de actualizaciones de solicitud de ubicación se establecerá en 1 para obtener la ubicación actual por una vez, lo que significa que el servicio de ubicación actualiza la ubicación del usuario solo una vez.

mLocationRequest = LocationRequest()// set the priority of the request
mLocationRequest?.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
// set number of updates
mLocationRequest?.numUpdates = 1

Habilitar ubicación

HMSLocationService la clase proporcionará una solución rápida sin inflar su actividad / fragmento al verificar y procesar los permisos de ubicación. Cuando inicializas una clase, verifica los permisos. Para solicitar permiso, reescribe onRequestPermissionsResult método agregando la siguiente línea a su actividad o fragmento:

Anular el método onRequestPermissionsResult en la actividad o el fragmento
Pide permiso de ubicación

Procesando actualizaciones de ubicación

Puede manejar las actualizaciones de ubicación configurando la devolución de llamada a setLocationCallback el método del objeto que se crea HMSLocationService clase.

Solicitud de actualización de ubicación

Después de configurar una devolución de llamada para procesar una actualización de ubicación recibida, podemos solicitar una actualización de ubicación al servicio de posicionamiento de llamadas requestLocationUpdatesWithCallback método.

Eliminar una actualización de ubicación

Si ya no necesita una actualización de ubicación continua, puede dejar de recibir actualizaciones de ubicación llamando removeLocationUpdatesWithCallback método.

Felicidades !! Ha integrado con éxito el kit de ubicación en su proyecto.

Calcule la distancia entre la posición actual y la posición de destino

Para fines de depuración y prueba, es posible que desee utilizar la aplicación en otra ubicación, quizás en un continente diferente. Puede utilizar la ubicación simulada para estos escenarios.

Preparación

Primero debe agregar permisos para acceder a la ubicación falsa AndroidManifest.xml archivo. (dentro de la etiqueta de manifiesto)

<uses-permission
android:name="android.permission.ACCESS_MOCK_LOCATION"
tools:ignore="MockLocation,ProtectedPermissions" />

Desarrollo

Después de la inicialización del objeto HMSLocationService class, puede definir una ubicación falsa en cualquier parte de su actividad o fragmento.

val mockLocation = Location("MockLocation")
mockLocation.latitude = 41.028720
mockLocation.longitude = 29.117000
locationServices?.setMockMode(true)
locationServices?.setMockLocation(mockLocation)

En la aplicación de muestra, creé mi propio cuadro de diálogo de alerta, en el cual el usuario puede ingresar un ancho y largo falso y establecer una posición falsa.

Incluso si ha implementado correctamente la configuración y la habilitación de una ubicación falsa, recibirá el siguiente error al iniciar el proyecto.

Error de ubicación simulada

Para usar una ubicación falsa en las opciones de desarrollador, debe otorgar permiso a la aplicación. Solo necesita realizar este paso una vez, pero si desinstala la aplicación, deberá repetir este paso la próxima vez que instale la aplicación.

Vaya a Configuración -> Opciones de desarrollador -> Seleccionar ubicación simulada -> Seleccione su aplicación

Seleccione la aplicación que desea utilizar Mock Location

Después de seleccionar una aplicación, puede volver a la aplicación y volver a intentarlo.

Establecer una posición falsa

Cuando se utiliza la ubicación simulada, la precisión se vuelve cero. Porque el servicio de localización no realiza ninguna operación para calcular la ubicación actual del usuario.

Deshabilitar la ubicación simulada

Para desactivar una posición falsa, solo necesita configurar modo falso en Falso. Entonces, cuando un usuario solicita una actualización de ubicación, el servicio devuelve la ubicación actual del usuario en lugar de la ubicación falsa que definió anteriormente.

locationService?.setMockMode(false)
Deshabilitar la ubicación falsa

Deja una respuesta

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