AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de geolocalización
  • Casos especiales
  • Modo de funcionamiento en iPhone/iPad
  • Permisos necesarios
  • Funcionalidad de aplicación requerida
  • Navegadores que permiten la geolocalización
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Recupera el estado de activación del proveedor de geolocalización o pide ser notificado cuando cambia el estado.
WEBDEV - Código Navegador Recupera el estado de activación del proveedor de geolocalización.
Ejemplo
// Checks the status of the GPS provider
IF GPSStatus() = gpsDisabled THEN
Info("Geolocation is not enabled.")
END
Universal Windows 10 AppAndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst
// Branches a notification procedure if the status of the GPS is modified
GPSStatus(ProcGPSStatus)
// Procedure called whenever the status of the GPS is modified
PROCEDURE ProcGPSStatus(GPS_Status is int)
 
IF GPS_Status = gpsUnavailable THEN
Info("Geolocation not available.")
END
Sintaxis

Recuperar el estado de activación del proveedor Ocultar los detalles

<Result> = GPSStatus()
<Result>: Constante de tipo Integer
Estado de activación del proveedor de la ubicación. Se pueden devolver los siguientes valores:
gpsDisabledEl proveedor está incapacitado.
gpsEnabledEl proveedor está habilitado.
gpsErrorError al recuperar el estado de activación del proveedor. Para obtener más información sobre el error, utilice la función ErrorInfo.
WINDEVWEBDEV - Código NavegadorUniversal Windows 10 App Esta constante no está disponible.
WINDEVUniversal Windows 10 AppAndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst

Pedir que se le notifique cuando cambie el estado de activación Ocultar los detalles

GPSStatus(<WLanguage procedure>)
<WLanguage procedure>: Nombre de Procedure
Procedimiento WLanguage (procedimiento "callback") llamado para cada Notification.
Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<Status>)
es una constante entera que corresponde al nuevo estado del proveedor.
Puede tomar los siguientes valores:
gpsAvailableEl proveedor está disponible.
gpsDisabledEl proveedor fue desactivado por el usuario.
gpsEnabledEl proveedor fue habilitado por el usuario.
gpsOffServiceEl proveedor está fuera de servicio.
gpsUnavailableEl proveedor no está disponible temporalmente.
Observaciones

Casos especiales

  • AndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst Se recomienda restablecer los parámetros del proveedor de localización con GPSInitParameter antes de recuperar el estado de este proveedor.
  • Universal Windows 10 AppAndroidWidget Android iPhone/iPadIOS WidgetMac Catalyst Para dejar de recibir notificaciones cuando cambia el estado, utilice la función GPSStatus con una cadena vacía ("") como parámetro o utilice GPSEnd.
iPhone/iPadIOS WidgetMac Catalyst

Modo de funcionamiento en iPhone/iPad

Cuando se ejecuta por primera vez una función GPS, el sistema solicita la geolocalización Permission al usuario. Si el usuario se niega, todas las funciones GPS utilizadas en el resto de la aplicación fallarán (error fatal)..
Para volver a permitir el uso de GPS para esta aplicación, se debe modificar la configuración del sistema de la aplicación..
AndroidWidget Android

Permisos necesarios

La llamada a esta función modifica los permisos requeridos por la aplicación.
Requerido Permission: ACCESS_FINE_LOCATION.
Caso específico de Android 11: Esta función requiere la Permission ACCESS_BACKGROUND_LOCATION para acceder a la ubicación del dispositivo.
Esta Permission permite utilizar la función cuando la aplicación está en la Background.
Si la aplicación necesita utilizar la ubicación de Background:
  • Agregar manualmente el permiso "ACCESS_BACKGROUND_LOCATION" en el asistente de generación de la aplicación Android.
  • Solicitar explícitamente la ubicación de fondo Permission con PermissionRequest. Por ejemplo:
    PermissionRequest(permBackgroundLocation, Callback)
    INTERNAL PROCEDURE Callback(p is Permission)
    IF p.Granted THEN
    // Functions that require background location access can be used
    END
    END
Una ventana permite a los usuarios:
  • permitir el acceso a la ubicación del dispositivo mientras la aplicación está en la Background,
  • permitir el acceso a la ubicación sólo mientras la aplicación está en uso,
  • negar el acceso a la ubicación. El usuario puede cambiar estos permisos en cualquier momento en la configuración de Android.

Observaciones:
  • Siga las directrices de Google para las aplicaciones que requieren acceso a la ubicación de Background. Para obtener más información, consulte https://support.google.com/googleplay/android-developer/answer/9799150. Si no se cumplen estas condiciones (especialmente los requisitos de información del usuario), es posible que no se acepte la publicación de las aplicaciones en Google Play.
  • La ubicación de fondo Permission sólo debe solicitarse si se ha concedido la ubicación Permission. De lo contrario, PermissionRequest fallará.
  • Si la opción elegida por el usuario para la solicitud de acceso a la localización de Background es más restrictiva que la opción elegida para la solicitud de acceso a la localización, la aplicación se reiniciará automáticamente.
  • En los dispositivos con Android 10 o anterior, si se ha concedido la ubicación Permission a la aplicación, se concederá la ubicación de fondo Permission sin mostrar una ventana.
Universal Windows 10 App

Funcionalidad de aplicación requerida

Cuando se utiliza esta función, se debe declarar una funcionalidad de la aplicación en el asistente de generación de aplicaciones.
Característica necesaria: Geolocalización
Esta característica permite a las aplicaciones acceder a las características de geolocalización que se encuentran en el dispositivo o en el equipo.
WEBDEV - Código Navegador

Navegadores que permiten la geolocalización

Atención: La geolocalización sólo está disponible en ciertos navegadores modernos:
  • FireFox a partir de la versión 3.5,
  • Cromo de la versión 5.0.342.1,
  • Opera a partir de la versión 10.6,
  • Safari a partir de la versión 5.0.
Durante la llamada a una función de geolocalización, el navegador solicita una autorización de localización.
Componente: wd290java.dll
Versión mínima requerida
  • Versión 15
Esta página también está disponible para…
Comentarios
Exemplo
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/3701-trabalhando-com-gps/read.awp
Boller
13 03 2021
EXAMPLE: GPS status and on / off GPS via Java
FONTE:

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/9-windev-mobile-verifica-gps-ligado-posicao/read.awp

---x---

Example 01:
#####################################################

Procedure GPS_VerificaStatus()

Retorno is string = ""

GloLatitude , GloLongitude is real = 0

GPSInitParameter(gpsSatellite,gpsPrecisionHigh)

// Recuperação da posição
Retorno is geoPosition = GPSGetPosition() // 2000 = Intervalo máxo,p de 20 segundos

GloLatitude = NumToString(Retorno..Latitude,"+-10.6f")
GloLongitude = NumToString(Retorno..Longitude,"+-10.6f")

Retorno = GloLatitude +"; "+ GloLongitude

IF GloLatitude = 0 AND GloLongitude = 0 OR GloLatitude = null AND GloLongitude = null
ToastDisplay("GPS Desligado!!!")
END

RESULT(Retorno )

---x---



Example 02:
#####################################################

//Java GPS_On

import android.app.Activity;
import java.lang.*;
import android.util.*;
import java.lang.Exception;
import android.util.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

PUBLIC static void GPS_On()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", True);
getActiviteEnCours().sendBroadcast(intent);
}

---x---

//Java GPS_Off

import android.app.Activity;
import java.lang.*;
import android.util.*;
import java.lang.Exception;
import android.util.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

PUBLIC static void GPS_Off()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", False);
getActiviteEnCours().sendBroadcast(intent);
}


---x---

OBS.:
You must enable these options in the Android Manifest XML Windev Mobile

A) Android.Permission.WRITE_SECURE_SETTINGS

B) Android.Permission.WRITE_SETTINGS

---x---



Example 03
#####################################################
Another way to test whether this off GPS:

// GLOBAL
GloGpsAtivado is boolean = False

//Open Window
Procedure GPS_Inicializar()

GPSInitParameter(gpsSatellite,gpsPrecisionHigh +gpsSpeed)

IF GPSStatus() <> gpsEnabled THEN

Popup("Para melhorar a precisão da sua localização, ative o seu GPS","L")

gloStatusGps = False

ELSE
ChangeGPSStatus(GPSStatus())
END

GPSStatus(ChangeGPSStatus)

---x---

//Procedure Global

Procedure ChangeGPSStatus(nStatus)
IF gnCurrentStatus = nStatus THEN
RETURN
END

gnCurrentStatus = nStatus

IF nStatus = gpsEnabled OR nStatus = gpsAvailable THEN

GPSFollowMovement(GetPosition,300)

END

SWITCH nStatus
CASE gpsEnabled
GloGpsAtivado = True // <------------- Ligado
CASE gpsDisabled
GloGpsAtivado = False // <------------- Desligado
gloStatusGps = False
CASE gpsOffService
CASE gpsUnavailable
CASE gpsAvailable
END

adrianoboller
14 02 2015

Última modificación: 24/06/2023

Señalar un error o enviar una sugerencia | Ayuda local