Está en la página 1de 21

Explorando con LocationSensor en AI2

El AI2 LocationSensor es un control simple que es difícil de usar sin el conocimiento de algunos
conceptos básicos de geolocalización. El objeto sensor de ubicación se utiliza para comunicarse
con el receptor satelital de posicionamiento global (GPS) en su teléfono / tableta. Cuando el sensor
de ubicación se comunica con el receptor GPS incorporado, el GPS puede determinar la ubicación
de su dispositivo. El sensor también puede funcionar con servicios de ubicación de red /
wifi. Encontrar una ubicación usando la red usa técnicas muy diferentes para determinar una
ubicación que las que se usan con un GPS. Ubicación significa la latitud y longitud actual del
dispositivo o puede significar su dirección. Las unidades de medida empleadas en el objeto de
ubicación para la distancia son metros y la latitud / longitud decimal para esas mediciones. El
tiempo se mide en milisegundos (ms). Tenga en cuenta que un segundo = 1000 ms.
Cuando el sensor informa información de distancia o establece una distancia en el objeto, las
unidades deben ser metros. El control solo entiende metros. Si su aplicación debe tratarse en
unidades en inglés, utilice los bloques matemáticos para convertir unidades en el momento en que
las muestre. Convierta a pies o use más / diferentes bloques matemáticos y conviértelos en
millas. Calcule todo en metros,  informe el resultado en pies o millas en su pantalla. No tiene que
hacer la conversión de unidades en todas partes, ya que debe hacer todos los cálculos necesarios
en sus aplicaciones que usan medidores. Pensar en los medidores!  

Una milla náutica es la distancia subtendida por un minuto de ángulo (1/60 de grado) a través del
radio de la Tierra. Lo que esto significa para usted como programador es que la distancia entre un
grado de latitud y el siguiente grado completo es de sesenta millas náuticas. Un grado de longitud
es de sesenta millas náuticas en el ecuador, pero la separación entre grados de longitud
adyacentes disminuye a medida que cambia la latitud hacia los polos. Los espaciamientos entre los
grados de latitud son constantes, el espaciado entre los grados de longitud es variable. El sensor
informa la ubicación en grados decimales de latitud y grados de longitud. Considere que 0.00001
de un grado de latitud es 0.006 de una milla náutica, o 3 pies, 7 + 3/4 pulgadas. Mencioné aquí que
los desarrolladores deberían pensar en términos de metros, pero hace mucho tiempo, los
navegantes describieron su nave ' s posición con respecto a las unidades en inglés de grados,
minutos y segundos. La latitud y la longitud todavía se describen en términos de grados, minutos y
segundos. Estas son unidades incómodas para su uso en una computadora, por lo que los
desarrolladores y otros comúnmente usan descripciones decimales de latitud y longitud. Hacer eso
hace que las matemáticas en los cálculos sean relativamente fáciles. La forma métrica de mirar
0.00001 de un grado de latitud es que convierte a 0.9144 metros. La medición nos dice que la
información posicional del satélite puede ser reportada con una precisión de 0.9 metros. Los
satélites informan los datos posicionales usando una precisión de cinco decimales. ¿Significa esto
que cuando un GPS se fija en múltiples satélites, la distancia más pequeña resuelta debería ser de
0.9144 metros? No. Por otras razones, la mejor precisión posible con receptores GPS
especializados es del orden de tres metros. Hay técnicas que pueden mejorar la resolución. Los
satélites informan latitud y longitud con cinco decimales. Su teléfono / tableta, latitud o longitud del
GPS tiene una precisión de solo cuatro decimales y su precisión es peor en ocasiones, como se
explica más adelante. A medida que desarrolla aplicaciones con esta herramienta, tenga en cuenta
que el GPS en su dispositivo puede hacer mucho, pero su precisión es limitada en muchas
situaciones.
Harás tu mejor trabajo al desarrollar aplicaciones usando el Sensor de ubicación si entiendes cómo
funciona un sistema GPS. Los principales de geolocalización y una descripción de las Propiedades,
Eventos y Métodos de LocationSensor se describen cerca del final del tutorial.
GPS Accuracy Logger  Una aplicación GPS sencilla
GPS Accuracy Log   es una aplicación que demuestra el uso del receptor de posicionamiento global
por satélite (GPS) de un dispositivo. La aplicación también demuestra cómo la precisión del GPS
de un dispositivo varía según dónde se encuentre el dispositivo. Lo que hace el control
LocationSensor es instruir al receptor GPS en un teléfono / tableta para obtener una solución
satelital (encontrar un satélite, determinar que la información del satélite es válida, buscar al menos
dos satélites más para confirmar la información, y solo luego informar el información de vuelta a su
dispositivo). Algunos GPS pueden usar entre 12 y 20 satélites para obtener una solución muy
precisa, siempre que el receptor GPS sea capaz de recibir 12 o 20 canales de datos. Muchos
dispositivos simples solo usarán algunos satélites.
A continuación se muestra una imagen de la pantalla de una tableta de 7 pulgadas e imágenes de
los bloques AI2 necesarios para programar la aplicación. La aplicación de ejemplo captura los
datos posicionales de latitud / longitud y proporciona una estimación numérica de la fiabilidad del
arreglo satelital del GPS (Precisión). Los valores pequeños de Precisión indican una mejor
precisión. La aplicación informa lo que el GPS resuelve como latitud y longitud y demuestra cómo
la precisión del dispositivo puede variar a medida que el GPS actualiza sus arreglos satelitales, el
dispositivo se mueve desde el exterior a un edificio o pierde una solución en los satélites que utiliza
para determinar la ubicación. Tenga en cuenta el cambio en las lecturas de precisión capturadas
durante un corto período de tiempo (ocho minutos). Este dispositivo estaba estacionario en un
escritorio dentro de un edificio cuando capturó las lecturas y hay una variación significativa en la
capacidad del dispositivo para proporcionar información de ubicación precisa. Los satélites se
mueven continuamente alrededor de la Tierra. El GPS en el dispositivo pierde precisión a medida
que disminuye el número de satélites que puede recibir. La precisión de las correcciones
normalmente aumenta a medida que el GPS puede recibir más satélites. AI2 puede informar la
precisión de cualquier corrección siempre que el receptor GPS en el dispositivo tenga la capacidad
de informarPrecisión  (una de las muchas propiedades del LocationSensor descrito más
adelante). El GPS está diseñado para utilizar la mayor cantidad de información posible y de tantos
satélites como sea posible para proporcionar la mejor precisión posible en cualquier momento. Más
adelante se analiza la importancia de la precisión, las causas de su fluctuación y lo que un
desarrollador puede hacer para minimizar el impacto en los usuarios de la aplicación al evitar el
envío de datos de ubicación "sospechosos".
Antes de comenzar a construir esta aplicación, tenga en cuenta que debe probar esta aplicación
mediante WIFI o USB en un dispositivo que tenga capacidades GPS reales . Puede crear los
bloques de la aplicación y el diseño de la pantalla mientras está conectado a un emulador, siempre
que sepa que el emulador no tiene la capacidad de determinar la información de ubicación. Si
programa en el emulador, querrá deshabilitar los bloques del reloj mientras transcribe el código del
bloque. También tenga en cuenta que el dispositivo con el que experimente DEBE tener un
receptor GPS incorporado. Más adelante hay una discusión simple de lo que se puede hacer para
proporcionar información de ubicación al conectarse a una red o a través de WIFI. Los teléfonos /
tabletas sin un receptor GPS pueden proporcionar datos de ubicación (aunque son menos
precisos) y, aunque como se menciona aquí, será el tema de un futuro tutorial.
AI2 no tiene las herramientas para interpretar toda la información disponible en la amplia corriente
de datos de los satélites. Lo que un satélite "sabe" se informa en el formato NEMA transmitido
desde satélites y recibido por un GPS. NMEA 0183 es un estándar para comunicarse con
dispositivos electrónicos marinos y es un método común para recibir datos de un GPS.  El flujo de
datos NEMA es una compilación de muchos datos transmitidos desde un satélite en formato de
texto. Otros sistemas de programación tienen las herramientas para determinar el número, la
posición, la intensidad de la señal de las señales satelitales recibidas y otras propiedades basadas
en ese flujo de datos. Una aplicación AI2 no puede extraer todos los datos disponibles de un
satélite GPS, pero eso no suele ser necesario. A pesar de las limitaciones del control AI2, AI2
proporciona las funciones básicas necesarias para utilizar un receptor GPS en su dispositivo.

La  aplicación GPS Accuracy Logger  requiere solo unos pocos bloques y controles. El trabajo
pesado se realiza en el  control LocationSensor . Use un LocationSensor1 ,
un Clock1 , Button1 y siete etiquetas (del 1 al 7) en la  pantalla de Diseño para mostrar la
información del GPS que adquirirá la aplicación. La pantalla muestra un solo  control de diseño
horizontal ; el diseño debe contener el Label8 , Label3  y Label4  objetos   Button1  (se muestra
más arriba con el subtítulo GPS Accuracy Log en una imagen de la aplicación en ejecución)
controla la actualización de Accuracy. El botón está destinado a estar "oculto" a menos que incluya
algún código opcional (vea el código fuente de aia más adelante). El botón es para su uso. En el
código fuente aia, el botón está oculto . Habilite el botón para mostrar  desde
la  pantalla Diseño si decide que su función simple es útil.
Una explicación de las partes:
La  pantalla de Diseño a continuación muestra una ubicación sugerida de los controles. La
colocación no es crítica.  Label3  es el control en el medio de la HorizontalArrangement1  se
muestra a continuación (el texto de Label3 indica "precisión" en la pantalla. Cuando se muestra en
la pantalla de una aplicación de funcionamiento, la etiqueta informa los valores de precisión en una
fuente de rojo o negro.  Label8  tiene el texto Texto "Accuracy Now:"; Label4 tiene el texto "+/-
metros". El texto en  Label8  y Label4  nunca cambia.
La  aplicación GPS Accuracy Logger  establece algunos valores predeterminados del dispositivo
para el sensor de ubicación cuando se inicializa la pantalla de apertura. El
bloque Screen1.Initialize contiene el código.  Establecer LocationSensosr1.Enabled en
true permite que el control hable con el receptor GPS. El  objeto establecido
Clock1.TimerEnabled habilita un temporizador utilizado para sondear las propiedades
deLocationSensor . El temporizador sondea cada segundo y comprueba si la precisión informada
ha cambiado desde la última encuesta. Los controles posteriores ponen cierta información de texto
en las etiquetas en la pantalla de Diseño . El conjunto Label6.TextColor a (el bloque azul)
cambia el color de la etiqueta a azul para que se pueda ver fácilmente. Esta etiqueta es el
encabezado de una tabla de información de pantalla simple que genera la aplicación. El último
bloque oculta el texto que se asignó temporalmente a   Label7 en la pantalla Diseño . ( establece
Label7.Text a  ningún valor).
Inicialice una variable global para almacenar temporalmente los consejos de precisión del
dispositivo; nombrar la variable global LP_accuracy   (abreviatura de ListPicker Accuracy).-j

En este punto, veamos la información de latitud y longitud proporcionada por el GPS e interpretada
por LocatonSensor y cómo está formateada. La latitud y la longitud se informan utilizando un
separador decimal de período. El uso de un separador de punto decimal no causa problemas
cuando un separador de punto decimal es común. En otras partes del mundo, una coma se usa
normalmente como un separador decimal. Le están presentando el concepto en la programación
llamada Localización. En pocas palabras, los indicadores de moneda, separadores decimales y
otras cosas comúnmente utilizadas en muchos países y regiones no se comparten universalmente,
por lo que los programadores necesitan desarrollar una codificación adecuada, a veces, acomodar
estas diferencias y asegurar que sus aplicaciones se comporten adecuadamente o incluso
funcionen al aire libre Su propio país. La ubicación AI2. El sensor informa la ubicación de xxxxxx
como -96.89211 y 30.12561, por ejemplo. Esos valores tienen que ser informados al dispositivo en
países que usan un separador decimal coma como -96,89211 y 30,12561 respectivamente. Es
posible que los desarrolladores tengan que reemplazar la salida del período de la latitud y la
longitud del Sensor de ubicación con una coma para usar la latitud y la longitud en otras rutinas en
su aplicación. Por ejemplo, tendría que hacer las conversiones si calcula la distancia entre dos
puntos usando relaciones matemáticas. Si intenta hacer eso con una latitud o longitud inalterada,
sus Bloques le darán un mensaje de error. El bloque que viene al rescate del desarrollador es
el 89211 y 30,12561 respectivamente. Es posible que los desarrolladores tengan que reemplazar la
salida del período de la latitud y la longitud del Sensor de ubicación con una coma para usar la
latitud y la longitud en otras rutinas en su aplicación. Por ejemplo, tendría que hacer las
conversiones si calcula la distancia entre dos puntos usando relaciones matemáticas. Si intenta
hacer eso con una latitud o longitud inalterada, sus Bloques le darán un mensaje de error. El
bloque que viene al rescate del desarrollador es el 89211 y 30,12561 respectivamente. Es posible
que los desarrolladores tengan que reemplazar la salida del período de la latitud y la longitud del
Sensor de ubicación con una coma para usar la latitud y la longitud en otras rutinas en su
aplicación. Por ejemplo, tendría que hacer las conversiones si calcula la distancia entre dos puntos
usando relaciones matemáticas. Si intenta hacer eso con una latitud o longitud inalterada, sus
Bloques le darán un mensaje de error. El bloque que viene al rescate del desarrollador es
el Tendría que hacer las conversiones si calcula la distancia entre dos puntos usando relaciones
matemáticas. Si intenta hacer eso con una latitud o longitud inalterada, sus Bloques le darán un
mensaje de error. El bloque que viene al rescate del desarrollador es el Tendría que hacer las
conversiones si calcula la distancia entre dos puntos usando relaciones matemáticas. Si intenta
hacer eso con una latitud o longitud inalterada, sus Bloques le darán un mensaje de error. El
bloque que viene al rescate del desarrollador es el     reemplazar todo el texto
                                                                                             ít
                                                                                reemplazo
bloquear. Aquí hay varios procedimientos que pueden ayudar a un desarrollador si necesita
convertir. El  bloque de resultados Switch_Period_To_Comma convertirá la latitud o la longitud al
formato correcto para las aplicaciones centradas en las comas. Normalmente, si no hace cálculos
usando la latitud o longitud sin procesar, no lo necesitará.
El código que se muestra en el controlador de eventos Button4.Click prueba un dispositivo para
informarle si el dispositivo está usando un separador decimal de coma o período.
Ahora las cosas divertidas. El  bloque LocationSensor1.LocationChanged le dice a su aplicación
qué cree que la latitud y la longitud actual de su dispositivo están en grados decimales después de
que el GPS confirme una solución. y la ubicación ha cambiado. Los dos bloques de código
informan la información de ubicación del GPS en las dos etiquetas.  Desplácese   sobre
las  variables de latitud  y longitud del  bloque naranjaLocationSensor1.LocationChanged con
el mouse de su PC para capturar la latitud get  y obtener  bloques de longitud que introducen la
información en las etiquetas. La latitud y la longitud son variables "locales", por lo tanto, solo puede
usarlas dentro de este bloque.

El bloque Button1.Clicked es un bloque que informará sobre la precisión de una corrección de


satélite actual cada vez que se toca. La precisión es una determinación de la confiabilidad de la
información de ubicación en el momento de la corrección. El bloqueo no es necesario para la
aplicación, ya que el   objeto Clock1 se utiliza para establecer los valores predeterminados y
solicitar información del GPS de forma regular.   Button1  se muestra y se proporciona como una
conveniencia. Si descargas la  fuente aia , notarás que el bloque está "oculto". Los bloques dentro
del  controlador de eventos Button1 replican parte del código en Clock1.Timer bloque, el bloque
que cambia el color de la precisión del GPS en metros desde una fuente negra (cuando el sensor
informa exactitud <= 10 metros) a una fuente roja cuando el valor excede los 10 metros. Cambia el
valor de 10 metros a lo que quieras. Tenga en cuenta las precauciones mencionadas más adelante
en el tutorial sobre el uso de disparadores de distancia de menos de 10 a 20 metros. El bloque
lógico compara el  valor del bloque deLocationSensor1.Accuracy con el valor que usted decide
que es el límite para informar que hay datos confiables de corrección de satélites disponibles.
El  bloque Clock1.Timer (junto con el  bloque LocationSensor1.LocationChanged ) son los
bloques básicos de la aplicación. Estos bloques se colocan directamente en el bloque del
temporizador si sigues las instrucciones del tutorial. Sin embargo, los desarrolladores pueden
querer poner estos bloques en un  bloque de procedimiento en su lugar. Llame al
procedimiento DoThisStuff y coloque un  bloque DoThisStuff de llamada en
el  bloqueClock.Timer en lugar de los bloques individuales. Si bien este tutorial trata sobre el
sensor, quiero que sepa que hay muchas maneras de hacer la programación básica. Usar un
procedimiento hace que el ejemplo sea un poco más complicado. ¿Por qué un
procedimiento? Considere, además de usar Clock1.Timer Para este código, usted como
desarrollador podría colocar los bloques en un botón. Haga clic en el controlador de eventos junto
con una solicitud para forzar a un bloque de código de arreglo satelital a actualizar arreglos a
pedido. Si los bloques necesarios están en un procedimiento, puede llamar
a DoThisStuff . Agregar un botón adicional con bloques apropiados proporcionará un control
"manual" para actualizar la solicitud de fiabilidad de un arreglo de satélite con mayor frecuencia. El
botón extra es para que diseñe.
¿Qué es todo lo que hay en el  bloque Clock1.Timer ?
Ya estás familiarizado con algunos de los bloques. Son una duplicación de los bloques opcionales
utilizados en Button1 . El propósito del código en los  bloques Label3 se explicó anteriormente. El
código en los  bloques deControl es nuevo. El primer   bloque  Si prueba para ver si la Precisión
es mejor que 10 metros (verifica si un valor de distancia es menor a 10 permite filtrar los datos para
mostrar el "mejor" en una fuente negra y obliga a valores más altos a mostrar en una fuente roja un
problema con la confiabilidad de la ubicación reportada). El segundo si el bloque compara la
precisión presente con la precisión determinada durante un control previo. Si las dos lecturas de
precisión son las mismas, el bloque no hace nada, sin embargo, si hay un valor diferente, la
aplicación entiende que la precisión se ha actualizado e informa una nueva línea en la lista de
datos. La lista enumera la última precisión, latitud y longitud. Esta "lista" se muestra en la parte
inferior de la pantalla de la aplicación. Una línea aparece aproximadamente cada minuto. La
aplicación puede hacer este tipo de visualización de texto en una etiqueta porque \ n el símbolo se
usa para forzar cada conjunto de datos (que consta de tiempo, precisión, latitud, longitud) en líneas
individuales. Aunque codifique una sola etiqueta, el resultado en la pantalla es varias líneas que
muestran la hora de la observación y tres datos de satélite, ordenados con la información más
reciente en la parte superior de la pantalla.
¿Cuándo 'sabe' el sensor de ubicación cuándo verificar una reparación de satélite? Hay dos formas
de desencadenar una reparación de satélite, una está utilizando la  propiedad TimeInterval del
sensor. Un segundo es usar el  objeto DistanceInterval. El valor codificado en
la  propiedad LocationSensor1.TimeInterval determina la frecuencia de intentos de arreglos de
satélite. El control se actualizará a una frecuencia determinada por el valor asignado a esta
propiedad. Pero, un  bloque TimeInterval no está incluido en los bloques de código que se
muestran arriba. ¿Por qué? El valor predeterminado de LocationSensor1.TimeInterval   ya está
establecido en una vez por minuto. Este intervalo de actualización es aceptable en esta
aplicación. Evité usar una  establecer el  bloque LocationSensor1.TimeInterval pero también
podría haber colocado el bloque en el  bloqueScreen1.Initialize . Donde establezca el valor
depende de usted, el desarrollador. El LocationSensor se  activa una vez por minuto
aproximadamente. Dicho de otra manera, LocationSensor1.TimeInterval  contiene el intervalo de
tiempo en el que el GPS verificará una corrección, mostrando la ejecución del reconocimiento de
una distancia recorrida mayor que la establecida actualmente en el objeto
LocationSensor1.DistanceInterval.  
La  configuración de DistanceInterval es que esta aplicación se deja en su configuración
predeterminada de 0. El cambio de distancia no se usa como activador en esta aplicación. Un
posible uso de la  propiedadDistanceInterval se demuestra en el     ejemplo de la aplicación
de prueba de sensor de ubicación que se analiza más adelante.
Tenga cuidado, las unidades de intervalo de tiempo están en ms (descritas anteriormente). Como
desarrollador, puede establecer el valor de 'actualización' a cualquier cosa que desee. Algunas
configuraciones pueden ser muy indeseables. Con qué frecuencia y qué herramientas usar
depende de usted, el desarrollador, asegúrese de estar familiarizado con la descripción detallada
de cómo funciona el control.
Finalmente,  se necesita un método para sondear la propiedad Accuracy en la
aplicación. El reloj1  se utiliza para sondear el LocationSensor1.Accuracy actual  para establecer
si el GPS ha determinado que hay disponible una determinación de precisión diferente desde la
última verificación. La aplicación aprovecha que el bloque Clock1.Timer se dispara una vez por
segundo según lo diseñado y sin ninguna intervención del programador. El sondeo de la precisión
una vez por segundo es razonable, por lo que la aplicación utiliza la configuración predeterminada
del intervalo de tiempo del reloj. El valor de tiempo para un informe sobre la Precisión se puede
establecer en otros valores en la  pantalla Diseño o desde dentro de la aplicación
cambiando Clock1.TimerInterval a cualquier valor de número entero que requiera en ms. No
confunda este reloj de sondeo que verifica los cambios en el  valor
de Precisión con LocationSensor1.TimeInterval. The LocationSensor1.TimeIntervaldetermina
con qué frecuencia el GPS intenta un arreglo de satélite (encuentra un satélite, determina que la
información del satélite es válida, y solo luego vuelve a informar la información a tu
dispositivo). Más tarde, aprenderá, su GPS tiene que tener esa información de un mínimo de tres
satélites para proporcionar al receptor del GPS información que sea útil; datos insuficientes, sin
solución Cuando no hay suficientes datos disponibles para el GPS y el GPS parece estar
"pensando", probablemente verá un pequeño ícono parpadeando en la parte superior de su
teléfono o tableta. Cada vez que ve ese ícono, el GPS está intentando una solución satelital.
Mantenimiento de la casa : ¿Para qué sirve \ n  ? Este símbolo (que consiste en una barra
invertida y el carácter n) fuerza un cambio de línea en una etiqueta. Colocar el símbolo en un
bloque de texto ayuda a que la presentación de informes sea "bonita" cuando Label7 se actualiza y
se publica en la pantalla del dispositivo.
Pruebas : Tenga cuidado, debe probar esta aplicación usando WIFI en un dispositivo que
tenga capacidades reales de GPS . Puede programar los bloques de la aplicación conectados a
un emulador siempre que sepa que el emulador no tiene la capacidad de determinar la información
de ubicación.
Se pone peor. Presta atención a las precauciones en la aplicación. No todos los teléfonos / tabletas
tienen un receptor de GPS y no todos tienen la capacidad de usar el  control de precisión . Hay
más. En algunos dispositivos, la capacidad de utilizar los Servicios de ubicación , ya sea GPS o
Red / WIFI, puede estar desactivada. GPS Accuracy Logger  no verifica estas condiciones. Si el
servicio de ubicación está desactivado en el dispositivo con el que está realizando la prueba,
tendrá problemas. Ve a la configuración de tu dispositivo . Debería haber algo como los servicios
de ubicación . Asegúrese de que las casillas de permiso para Usar satélites GPS  y Usar redes
inalámbricas  estén marcadas. Si solo quieres GPS, no revisesUse el  cuadro de redes
inalámbricas a menos que desee que World sepa dónde se encuentra. La configuración que
realiza aquí otorga permisos para TODAS sus aplicaciones.
 Aplicación de prueba de sensor de ubicación AI2
NO encontrará los bloques aquí para una aplicación que demuestre la mayoría de las capacidades
de un sensor de ubicación AI2 ( prueba del sensor de ubicación  ). Hay muchos bloques, más de lo
que quiero copiar. Adjunto hay un archivo aia para que pueda explorar el código. Las dos imágenes
a continuación muestran una prueba de sensor de ubicación en    funcionamientoaplicación en una
tableta. Por ahora, eres un experto en el uso de las propiedades básicas del sensor. Espero que la
ausencia de una explicación para la lógica de bloque en esta aplicación de prueba de sensor no
sea un obstáculo. Supongo que leyó todo el tutorial (incluidas las explicaciones que siguen a las
cosas divertidas), probó sus propios experimentos de sensores de ubicación y puede seguir la
lógica de programación. En caso de duda, lea la siguiente sección que describe el comportamiento
de las diversas propiedades de control, métodos y eventos.
La imagen de la izquierda muestra la herramienta de prueba del sensor en acción, pero antes de
tocar el  botón de Capacidades . Toca el botón y la pantalla se verá como la imagen de la
derecha. La aplicación confirma que el GPS de la tableta tiene todas las capacidades requeridas.
GPS Accuracy Logger  hace todo lo siguiente:

 Comprueba si las capacidades de Latitud / Longitud, Altitud y Exactitud existen en el


dispositivo que se está probando. Use el  botón de Capacidades . No todos los
dispositivos tienen todas estas capacidades.
 Informa la precisión de cada corrección de satélite GPS en +/- metros. El número describe
un círculo con el radio informado. Su GPS 'sabe' que está en algún lugar dentro de este
círculo. (ver explicación a continuación).
 Anuncia          LocationSensor.TimerIinterval . La herramienta informa la configuración
actual y le permite cambiarla.
 Anuncia los proveedores de servicios disponibles. En una tableta WIFI, posiblemente solo
obtenga 'gps'; en un teléfono, habrá más opciones si el teléfono tiene un GPS real.
 Muestra el proveedor de servicios actualmente seleccionado. Puede cambiar entre gps y
red tocando el botón Alternar proveedor . Sí, cambia entre gps y red solo en esta
aplicación.
 Informa la altitud, pero solo si el dispositivo GPS tiene la capacidad. No espere que la
altitud cambie cuando camine desde el nivel de la calle hasta el tercer piso de un
edificio. La medida no es tan precisa.
 Informa la dirección actual, solo si hay una dirección de ubicación disponible.
 Permite saber si el dispositivo se ha movido más que la distancia seleccionada. Lee las
advertencias en las secciones a continuación. Puede cambiar la distancia a cualquier valor
en metros que desee.
 Permite establecer los intervalos de distancia y tiempo. La distancia probablemente esté
configurada como 0 para la mayoría de los dispositivos de manera
predeterminada; Tiempo hasta 60000 ms (un minuto). Los valores predeterminados
pueden ser diferentes en algunos dispositivos.
 Puede alternar proveedores Alternar significa cambiar entre los dos proveedores
codificados en esta aplicación.
 Puede proporcionar un registro de datos de Precisión y Latitud y Longitud durante un
período de tiempo. Marque el cuadro Datos de registro. Cuando se marque, la aplicación
proporcionará un tiempo de informe de flujo de datos, Precisión, Latitud y Longitud. Es
posible que deba desplazarse hacia abajo en la pantalla.
 Informa si el GPS tiene una solución satelital o no y si la información de ubicación está
basada en la red. Lea sobre arreglo a continuación.

No estoy seguro de que los ajustes de datos para el tiempo y la distancia proporcionados al
dispositivo GPS por la prueba del sensor de ubicación sean persistentes después de que se cierre
la aplicación. Si cambia la configuración de tiempo y distancia en su aplicación, ¿el dispositivo GPS
regresa automáticamente a su configuración predeterminada después de que se cierra una
aplicación? El botón "Cerrar la aplicación y restablecer la distancia de ubicación a 0 y restablecer el
temporizador de ubicación" es parte de la aplicación. Garantiza que el GPS se restablezca si es
necesario. Use el botón de la aplicación para restablecer la configuración predeterminada del GPS
y cerrarlo la aplicación.
Cosas que hacer: a) hacer que la pantalla de la aplicación luzca bonita, b) agregar una alarma de
vibración o sonido, para la Distancia c) mostrar la precisión en un círculo de confiabilidad, d)
verificar que la aplicación realmente funcione para usted. (Utilice el  objeto Canvas para dibujar el
círculo de visualización de confiabilidad).
Cómo un teléfono / tableta "conoce" su ubicación
¿Cómo es capaz un teléfono o una tableta de "saber" dónde se encuentra? Es necesario
comprender cómo funcionan el GPS y las redes inalámbricas para comprender el control del
sensor de ubicación. Tanto el GPS como las redes inalámbricas proporcionan información
posicional de diferentes maneras. El  control de LocationSensor puede obtener información
usando cualquiera de los sistemas, pero el desarrollador de una aplicación tiene que explicarle al
sensor con sus bloques cómo hacerlo.
Todo lo que quieras saber sobre GPS y cómo funcionan los receptores GPS se resume
aquí: http://en.wikipedia.org/wiki/Global_Positioning_System  . Wikipedia no siempre es la fuente
más precisa, pero en este caso Wikipedia proporciona una introducción bastante buena a los
conceptos de geolocalización. El artículo es parte de su tarea de "trabajo a domicilio". 
Los satélites de GPS emiten dos tipos de datos llamados Almanac y Efemérides. Los datos del
almanaque incluyen los parámetros orbitales del satélite. Son datos precisos y son válidos por
varios meses. Los datos de efemérides incluyen datos de corrección orbital y de reloj para cada
satélite que son necesarios para un posicionamiento preciso. Cuando el GPS se enciende
inicialmente, el receptor "busca" los satélites según el lugar donde se supone que está el satélite y
según se describe en el Almanaque y se corrige para la hora actual. El GPS determina si los datos
de Almanac son válidos; si el almanaque no es válido, posiblemente si el receptor del GPS se ha
apagado durante un tiempo, el GPS busca en el cielo o se reinicializa internamente para que pueda
descargar un nuevo almanaque de un satélite y comenzar de nuevo.
Un receptor GPS necesita una vista clara del cielo para obtener datos de efemérides / almanaques
de los satélites. Utiliza esta información para determinar la ubicación. Necesita mediciones de un
mínimo de tres satélites para proporcionar información posicional. Los receptores GPS
generalmente tienen la capacidad de usar de 12 a 20 satélites para proporcionar información
precisa. En la práctica, la mayoría de los GPS usan menos de 9 o 10 satélites para proporcionar
una solución de ubicación. Un número limitado de satélites puede ser visible para el GPS, algunos
satélites están fuera de servicio, los objetos se encuentran entre el GPS y el satélite, reducen la
intensidad de la señal de transmisión del satélite y la cantidad de canales que el GPS puede recibir
y otros factores determinan cómo muchos satélites son utilizados por el GPS en una solución.

Las redes inalámbricas usan triangulación para determinar la ubicación de un dispositivo. La


información de ubicación se obtiene más rápidamente que los datos obtenidos de una reparación
de GPS. Una reparación de GPS puede tomar desde unos segundos hasta un minuto más o
menos con receptores GPS de un solo canal. Una solución de red es muy rápida. Sin embargo, los
datos proporcionados por las redes inalámbricas son menos confiables que la mayoría de los
arreglos de GPS. Por lo general, la ubicación geográfica de la red no es tan precisa como la
información proporcionada por un GPS. Los teléfonos móviles obtienen los ID de la torre de la
celda de las tres o cuatro torres de telefonía más cercanas. La tecnología utiliza la diferencia de
tiempo de llegada para obtener su ubicación "exacta" dentro de 10-50 metros de precisión con 10-
15 segundos. Este método se llama MS-Assist para teléfonos GSM. Un método de retroceso se
llama Cell ID. La ID de celda es una estimación pasiva de aproximadamente 1.
Se usa un GPS para obtener una instantánea precisa de la ubicación del dispositivo mientras se
mueve o estacionario. Las redes inalámbricas se pueden usar para posiciones estacionarias en
ausencia de un receptor GPS.La información proporcionada en el tutorial con respecto a estos
detalles del sistema de ubicación está continuamente en flujo. Use su motor de búsqueda para
conocer los detalles y mantenerse informado sobre los avances tecnológicos.
Depende del programador de aplicaciones elegir qué método de ubicación usa su aplicación o
proporcionar un medio para seleccionar entre proveedores de ubicación. Lea sobre proveedores a
continuación. Las opciones habituales de proveedor son: gps  o red .
Lo que los desarrolladores deben saber para programar utilizando el Objeto de sensor de
ubicación AI2
Los desarrolladores tienen muchas cosas que considerar incluso antes de comenzar a usar el
sensor de ubicación en AI2. Para que una aplicación basada en geolocalización sea exitosa, el
desarrollador debe saber cómo funcionan las cosas y las limitaciones que existen debido a la
calidad del dispositivo que incluye los receptores GPS, cómo funciona el sistema satelital GPS y
qué se puede hacer para superar los obstáculos.
1) Tenga en cuenta que Location.Sensor informa la latitud y la longitud utilizando un separador de
punto decimal. Si está desarrollando áreas donde el separador decimal común es una coma y
necesita usar los valores de LocationSensor.Latitude o Longitude para realizar cálculos dentro de
su aplicación, deberá proporcionar el código adecuado para convertir el período provisto en una
coma. Este tema fue cubierto anteriormente.
2) La sensibilidad de los receptores GPS en diferentes dispositivos varía. Algunos dispositivos son
más sensibles a si el teléfono / tableta está en un edificio, debajo de árboles o si está viajando en
entornos tipo cañón (es decir, en las montañas, entre rascacielos o simplemente edificios
altos). Los edificios oscurecen la línea de visión desde el GPS a los satélites posicionales. Las
señales débiles en el GPS dan como resultado una precisión reducida o pérdida de la corrección.
3) La precisión de un receptor de GPS depende de la cantidad de satélites a los que se puede fijar
(recibir y confirmar) en cualquier momento. En consecuencia, la precisión de la ubicación
informada por el dispositivo puede variar fácilmente en más o menos 50 metros aproximadamente
en un período de tiempo muy corto. La precisión del GPS también depende de la calidad del GPS
en su dispositivo. Los dispositivos GPS reales, no las tabletas / teléfonos, pueden tener una
precisión de menos de 2 metros. Es probable que tu teléfono no esté cerca de esa capacidad, pero
podría ser. La mayoría de los GPS tienen 12 canales paralelos. Los canales ayudan a adquirir
señales satelitales. Algunos GPS tienen solo un canal, lo que significa que el receptor tarda más en
adquirir una solución y es posible que no tenga la precisión de un receptor con múltiples canales.
4) La experiencia con el receptor GPS en una  tableta Galaxy Tab 2 de  7 "demuestra
que LocationSensor.DistanceInterval  puede desencadenar un cambio inesperado de respuesta
de ubicación cuando se establece en 100 metros. El GPS puede indicar un cambio de distancia
incluso cuando la tableta está en reposo. a menudo sucede. Un ajuste de 100 m para esta
herramienta de disparo es razonable, pero establecer DistanceInterval  en ese valor no garantiza
que el dispositivo se mueva 100 metros cuando se dispara el sensor. Este es un problema porque
la capacidad del GPS para resolver con precisión un la ubicación se encuentra en un estado
constante de flujo. Una respuesta temprana de disparo del dispositivo se puede evitar
proporcionando bloques lógicos que solo se activan cuando la precisión del GPS se encuentra
dentro de las normas que usted programa.
5) Cuando la precisión del GPS es reportada por LocationSensor.Accuracy  de 32 metros por
ejemplo, significa que si un LocationSensor DistanceInterval  está configurado a algo menos de
32 metros, el GPS intentará una nueva solución (cambio) como si la distancia fuera establecer a 0
metros. Las unidades de GPS en teléfonos de gama baja especialmente no son muy precisas y
algunos teléfonos no tienen GPS en absoluto.
6) Para comprender cómo cambia la precisión de su dispositivo (confiabilidad posicional),
establezca DistanceInterval  en cero y monitoree los cambios en la precisión de su GPS en la
aplicación integral descrita anteriormente. El  proyecto de codificación GPS Logger
Accuracy descrito anteriormente monitorea los cambios en la precisión del GPS con el
tiempo. La prueba de sensor de ubicación AI2 de demostración  recopila datos de su
dispositivo. No todos los teléfonos / tabletas proporcionan todos estos datos. Muchos teléfonos
pueden no tener los datos de altitud, por ejemplo.
7) Lea la descripción de MIT App Inventor del equipo del sensor de ubicación aquí
http://appinventor.mit.edu/explore/content/sensors.html.          Una versión anotada de la
descripción que describe la herramienta con más detalle sigue en la siguiente sección. 
En resumen, el receptor GPS en la mayoría de los teléfonos no es precisamente preciso. La
información posicional que proporciona puede ser de solo +/- 50 metros en promedio, tal vez tan
buena como +/- 5 metros en ocasiones. Los receptores GPS en los teléfonos no son muy
sensibles. El GPS incorporado pierde señales en los edificios y es difícil en un entorno urbano. No
todos los teléfonos o tabletas tienen un GPS. Los teléfonos que no tienen un receptor GPS tienen
una precisión posicional muy reducida en comparación con los teléfonos que tienen un GPS. Las
alternativas a una aplicación de ubicación GPS no son tan precisas como la información basada en
el GPS. Los dispositivos sin un receptor GPS probablemente pueden usar la triangulación entre las
torres de teléfonos celulares y / o una ubicación wifi para aproximarse a la ubicación del
teléfono. Los dispositivos sin un GPS todavía se pueden usar para determinar la ubicación,
después de una moda.
Hay una opción en el sensor de ubicación para determinar la proximidad a un destino. Mis
experimentos indican que esta característica no es muy precisa cuando se establece en pequeños
cambios de distancia.Aproximadamente +/- 50 metros de confiabilidad podrían ser posibles
regularmente usando el  control LocationSensor.Distance . El problema es que el GPS en los
teléfonos no es muy preciso. Normalmente, el GPS 'dispara' en función del tiempo, pero también
puede permitir que el sensor de ubicación 'dispare' en función de la distancia recorrida. Puedo ver
una aplicación que mezcla los dos métodos. La ubicación activará una corrección de GPS en
función del tiempo, pero también intentará activarse en función del movimiento desde la última
corrección. Una muestra de diez metros de una ubicación no parece práctica. porque un GPS de
teléfono solo podría resolver +/- 50 metros. Ver por ti mismo. Utilizar el Bloqueo de localización 1.
Bloqueo de precisión y muestra la precisión de lectura cada minuto y ver lo que
obtienes? El Registrador de precisión de GPS  hace esto para que el código esté disponible en
este tutorial.
¿Cuáles son las capacidades del AI2 LocationSensor?
A continuación, se describe lo que los sensores de ubicación en AI2 pueden (y no pueden) hacer:
Algunas funciones que los sensores pueden controlar no están disponibles en todos los
dispositivos. Si una función que el LocationSensor  tiene disponible no parece funcionar en una
aplicación que construyes, es posible que la versión de Android en tu dispositivo no tenga la
capacidad o que el dispositivo no tenga la capacidad que sondeas en su GPS. La prueba de
sensor de ubicación de la  aplicación  puede ayudarlo a descubrir qué capacidades existen en su
teléfono / tableta. Un enlace a la prueba de ubicación del sensor  AIA  fuente se encuentra al final
del tutorial.   
La siguiente es una descripción anotada del sensor de ubicación AI2  como se describe en la
página web de MIT. Las anotaciones están en  cursiva  . Los métodos públicos de Android que son
la base para el control de AI2 se describen en Java en este
enlace: http://developer.android.com/reference/android/location/Location.html  . AI2 proporciona la
mayoría de estos servicios. No tiene una distancia entre medias  método, que habría sido
bueno.Usted como desarrollador puede proporcionar esas funciones haciendo los cálculos usted
mismo. Google "haversine" para un método de cálculo de distancias cortas punto a punto entre
ubicaciones. Reescribí el algoritmo en código de bloque en AI2 y lo publicaré en un futuro
tutorial. Si usa Haversine's, tenga en cuenta que el método de cálculo de distancia no es  válido
para determinar distancias largas; como DC a Londres, pero son válidos para distancias más
pequeñas, especialmente en el orden de varios kilómetros o millas. El método de Vincenty se
encuentra entre los mejores algoritmos para calcular una ruta Great Circle Path y es más preciso
para cualquier cálculo de distancia. Usar el algoritmo de Vincenty requerirá MUCHOS bloques.
Sensor de ubicación
Este componente proporciona la ubicación del dispositivo Android, utilizando GPS
si está disponible y un método alternativo en caso contrario, como torres celulares
o redes inalámbricas conocidas.
LocationSensor  es un componente no visible que proporciona información de
ubicación, incluida la longitud, la latitud, la altitud (si es compatible con el
dispositivo) y la dirección. Este componente también puede proporcionar
geocodificación, convirtiendo una dirección dada (no necesariamente la actual) en
una latitud (con el  método LatitudeFromAddress ) y una longitud (con
el  métodoLongitudeFromAddress ).
Para funcionar, el componente debe tener su  propiedad habilitada establecida
en verdadero, y el dispositivo debe tener detección de ubicación habilitada a
través de satélites GPS (si el dispositivo está al aire libre) o un método alternativo.
Muchos dispositivos pueden utilizar su GPS en interiores.
Propiedades
Exactitud
Indica el nivel de precisión del dispositivo Android, en metros.
AI2 no tiene control para decirle cuántos satélites se están utilizando en una
solución o qué tan fuertes son las señales recibidas en el GPS.  En cambio, AI2
usa otra información del flujo de datos del satélite para establecer un círculo de
confiabilidad, un círculo de distancia con un radio de la precisión indicada.  Solo
informa el radio de ese círculo como se describe a continuación.  Su dispositivo
puede estar en el centro del círculo, puede estar en el borde del círculo de
confiabilidad o en el centro. La precisión demuestra la calidad del arreglo del
satélite al informar la precisión de más / menos x metros en cualquier
momento.  Los valores más bajos son mejores .
La Referencia del desarrollador de Android define la precisión como "el radio del
68% de confianza". Si dibuja un círculo centrado en la latitud y la longitud de esta
ubicación, y con un radio igual a la precisión, existe un 68% de probabilidad de
que la ubicación verdadera sea dentro del círculo. En términos estadísticos, se
asume que los errores de ubicación son aleatorios con una distribución normal,
por lo que el círculo de confianza del 68% representa una desviación estándar.
En la práctica, los errores de ubicación no siempre siguen una distribución tan
simple. solo para precisión horizontal, y no indica la precisión de la altitud si se
informan. Si esta ubicación no tiene precisión, se devuelve 0.0.
Altitud
Altitud del dispositivo Android, si está disponible.
Las unidades son metros.  La altitud es la altitud sobre el elipsoide de referencia
WGS84, no la elevación sobre el nivel medio del mar.  La altitud desde un GPS es
terriblemente inexacta, incluso para receptores GPS costosos. Lea sobre
determinación de altitud aquí:  http://gpsinformation.net/main/altitude.htm  . La
altitud es muy poco fiable en la mayoría de los receptores GPS, no solo en los
integrados en teléfonos y tabletas.  ¡La altitud reportada en un teléfono / tableta
puede ser fácilmente de +/- 30 metros   o más! 
AvailableProviders
Lista de proveedores de servicios disponibles, como gps o red. Esta información
se proporciona como una lista y en forma de texto.
Direccion actual
Dirección física de la calle del dispositivo Android.
La dirección informada puede no ser siempre de la casa donde está el dispositivo
o la dirección puede no estar disponible siempre del proveedor disponible.
DistanceInterval
Determina el intervalo de distancia mínima, en metros, que el sensor intentará
utilizar para enviar actualizaciones de ubicación. Por ejemplo, si se establece en
5, el sensor disparará un  eventoLocationChanged solo después de que se
hayan recorrido 5 metros. Sin embargo, el sensor no garantiza que se reciba una
actualización exactamente en el intervalo de distancia. Puede llevar más de 5
metros disparar un evento, por ejemplo.
Cuando configura LocationSensor1.DistanceInterval para .. Si puede vivir con
alguna imprecisión y necesita el cambio del sensor en función de la distancia
recorrida de un punto a otro, este es el camino a seguir para medir la distancia
recorrida de una manera sencilla. Advierto que ingresar valores pequeños como
se sugiere en la descripción del control, como 5 metros, genera problemas
porque la precisión (y consecuentemente la inexactitud) del GPS cambia cuando
la vista del cielo del receptor cambia de clara a oscura por edificios, montañas,
etc. El uso de distancias disparadas más pequeñas que el círculo de precisión
más grande que normalmente informa el dispositivo (fácilmente> 50 metros en
algunas situaciones) no es recomendable. Use 150, 500 metros, 1 km (ingresado
como 1000 metros), etc. y puede obtener un disparo confiable utilizando esta
propiedad del sensor.  Tenga en cuenta el LocationSensor1.Timer  podría
dispararse antes de que el intervalo de distancia sea alcanzado o excedido y
activado.Como desarrollador, puede superar la limitación de precisión solo
realizando cálculos o haciendo que se produzcan acciones cuando la precisión
del dispositivo informa valores por debajo de un cierto umbral.Este concepto
donde solo informa información o información de actuación cuando la precisión
está en valores razonables para su dispositivo se demuestra en las dos
aplicaciones de AI2 que se describen a continuación. Sus usuarios pueden recibir
información cuando la reparación del GPS no es confiable.
No practico, para obtener una solución precisa (una solución que cumple con sus
requisitos), alternar LocationSensor.Enabled  = Off
y LocationSensor.Enabled   = On. En los bloques, usa falso para apagado y
verdadero para encendido. Luego, dentro de una   estructura de control   if
..else , determine si  LocationSensor.Accuracy  <5 o <20 metros, etc. Si su
dispositivo se está moviendo, la precisión de su dispositivo cambia
constantemente debido a edificios, árboles, etc. que intervienen entre el receptor
GPS de su dispositivo y suficientes satélites para obtener la solución más
precisa. El GPS requiere un mínimo de 4 o 5 segundos para adquirir una solución
y puede llevar más tiempo.  Si pierde una solución, sus datos confiables estarán
varios segundos desactualizados.  Si está parado y no usa un GPS, su ubicación
es constante, en lo que respecta al dispositivo cuando usa una conexión de red.
Sin embargo, debido a la Precisión (descrita anteriormente), en realidad puede
mostrar un cambio de ubicación. La cantidad de variación en la precisión que
experimente depende de la sensibilidad de su GPS y la cantidad de canales de
satélite que puede recibir, además de si el dispositivo tiene una vista despejada
del cielo.
Habilitado
Si se establece, la información de ubicación está disponible.
Esta propiedad enciende de manera efectiva su informe de conexión de ubicación
GPS. Alternar la propiedad no necesariamente enciende o apaga el GPS,
aparentemente solo establece una conexión.  Es posible que deba encender el
GPS manualmente en su dispositivo antes de que su aplicación se ejecute en el
teléfono o la tableta. Encendido es verdadero booleano; fuera booleano falso.
Tiene exactitud
Si es cierto, el dispositivo Android puede informar su nivel de precisión.
Esta propiedad se informa como un valor booleano;  es decir, verdadero o falso
(use los bloques de Lógica).  Todo lo que hace la configuración es consultar el
dispositivo para establecer si un dispositivo tiene esta capacidad cuando se usa
en un   bloque de control if then  .
HasAltitude
Si es verdadero, el dispositivo Android puede informar su altitud.
Esto se informa como un valor booleano; es decir, verdadero o falso (use los
bloques de Lógica).  Todo lo que hace es consultar el dispositivo para establecer
si un dispositivo tiene esta capacidad cuando se usa en un   bloque if then  .
HasLongitudLatitud
Si es verdadero, el dispositivo Android puede informar la longitud y la latitud.
Esto se informa como un valor booleano; es decir, verdadero o falso (use los
bloques de Lógica).  Otra forma de ver esto es si este dispositivo admite un
GPS. Todo lo que hace es consultar el dispositivo para establecer si un
dispositivo tiene esta capacidad cuando se usa en un   bloque  if then .
Latitud
Latitud del dispositivo Android.
La latitud se informa en grados decimales; por ejemplo 33.01560
grados.  Observe que la latitud se informa con cinco decimales.  La latitud se
informa como un número decimal entre  -90 a 90   (del sur al polo
norte). Convencionalmente, las latitudes del norte son positivas, el sur son
valores negativos. Cuando conoces tanto la latitud como la longitud de una
dirección dada, puedes publicar esa ubicación en un mapa o calcular su distancia
desde otro objeto conocido.

Longitud
Longitud del dispositivo Android.
 La longitud se informa en grados decimales;  por ejemplo -103.01567
grados.  Aviso, la longitud se informa con cinco decimales. La longitud se informa
como un número decimal entre   -180 a 0 a 180,   donde los valores negativos son
las regiones al oeste del meridiano principal (0 grados de longitud) a las regiones
al este.  Cuando conoces tanto la latitud como la longitud de una dirección
determinada, puedes publicar esa ubicación en un mapa o calcular la distancia de
la ubicación desde otro objeto conocido.
Proveedor bloqueado
El dispositivo no cambiará el proveedor de servicios.
Es posible que los proveedores cambien cuando el proveedor actual no puede
proporcionar soluciones de ubicación adecuadas para las circunstancias. Este es
un interruptor booleano;  verdadero Falso. Es cierto, para evitar que los
proveedores cambien.
Nombre del proveedor
El proveedor de servicio actual.
El proveedor probablemente sea GPS o red.
Intervalo de tiempo
Determina el intervalo de tiempo mínimo, en milisegundos, que el sensor intentará
utilizar para enviar actualizaciones de ubicación. Sin embargo, las actualizaciones
de ubicación solo se recibirán cuando la ubicación del teléfono realmente cambie,
y no se garantiza el uso del intervalo de tiempo especificado. Por ejemplo, si se
usa 1000 como intervalo de tiempo, las actualizaciones de ubicación nunca se
dispararán antes de 1000 ms, pero pueden dispararse en cualquier momento
posterior.
El valor predeterminado en el receptor GPS de una tableta Galaxy Tab II es de
60000 ms (por minuto).  No sé si un minuto es una configuración estándar para
otros dispositivos o no. Considere que cuanto más frecuente sea una
actualización, más rápidamente se agotará la batería del dispositivo.
Los datos del sensor pueden cambiar a una velocidad alta, lo que significa que el
sistema puede llamar al método LocationSensor.Changed con bastante
frecuencia. Como práctica recomendada, debe hacer lo mínimo posible dentro
del   método LocationSensor.Changed  para no bloquearlo.  Si su aplicación
requiere que realice algún filtrado de datos o reducción de los datos del sensor,
debe realizar ese trabajo fuera del método LocationSensor.Changed  .
Eventos
LocationChanged (latitud del número, longitud del número, altitud del número)
Se invoca cuando el dispositivo Android informa una nueva ubicación.
Este evento es la parte más importante del control cuando se usa un
GPS. Latitud, longitud y altitud son todas variables locales.  Pase el mouse sobre
uno de ellos para capturar una latitud de obtención   oestablecer la latitud
para   bloquear o una longitud de obtener   o establecer la longitud
para   bloquear o una altitud   o establecer la altitud para   bloquear según sea
necesario.  Tenga en cuenta que el valor de la altitud es notoriamente inexacto en
comparación con la latitud / longitud.  Este valor puede ser mucho más fácil.  ¿Por
qué?  Se está procesando una gran cantidad de información de geometría, la
tierra no es una esfera (es un geoide) lo que dificulta esta determinación. Los
valores aparecen en un orden de magnitud razonable para valores superiores a
cien metros.
La mejor práctica es verificar siempre que exista un sensor en un dispositivo
antes de intentar adquirir datos del mismo.  No suponga que existe un sensor
simplemente porque es un sensor de uso frecuente.Los fabricantes de
dispositivos no están obligados a proporcionar ningún sensor en particular en sus
dispositivos.
Ver también TimeInterval  .
StatusChanged (proveedor de texto, estado del texto)
Se llama cuando cambia el estado del proveedor del servicio.
No tengo teléfono, así que no he probado cómo se podría usar este
evento. Código como este debería ser posible en el   bloque StatusChanged :
Si provider = gps y status = TEMPORARILY_UNAVAILABLE, entonces
LocationSensor1.Enabled = False
LocationSensor1.Enabled = True
Métodos
número LatitudeFromAddress (text locationName)
Determina la latitud de la dirección dada.
La latitud se informa como un número decimal entre -90 a 90   (del sur al polo
norte). Convencionalmente, las latitudes del norte son positivas, el sur son
valores negativos. Cuando conoces tanto la latitud como la longitud de una
dirección dada, puedes publicar esa ubicación en un mapa o calcular su distancia
desde otro objeto conocido.
número LongitudeFromAddress (text locationName)
Determina la longitud de la dirección dada.
 La longitud se informa como un número decimal entre   -180 a 0 a 180,   donde
los valores negativos son las regiones al oeste del meridiano principal (0 grados
de longitud) a las regiones al este.  Cuando conoces tanto la latitud como la
longitud de una dirección determinada, puedes publicar esa ubicación en un
mapa o calcular la distancia de la ubicación desde otro objeto conocido.
Otros asuntos
El LocationSensor  tiene una función llamada DistanceInterval ... las unidades están en
metros. Otra característica se llama TimeInterval : establece la frecuencia con la que el GPS
activa un evento o actualiza la ubicación.Estos controles activan el GPS para intentar obtener una
solución satelital y determinar su posición. Puede usar el intervalo de tiempo o puede solicitar que
el dispositivo se dispare en un intervalo establecido ... en realidad, ambos sensores pueden
funcionar simultáneamente. Creo, pero no puedo confirmar, que el intervalo de tiempo
predeterminado sea de 60000 ms (un minuto) para la mayoría de los dispositivos. Creo que
el DistanceIntervalpredeterminado es cero (0). Si desea trabajar solo sobre la base de la
distancia, puede que tenga que establecer el intervalo de tiempo en un valor grande. No sé si el
intervalo de distancia se puede controlar en cada GPS de un teléfono / tableta, sin embargo, el
intervalo de tiempo ciertamente será controlable.
Ambos valores se pueden restablecer. Los receptores GPS simples en los teléfonos tardan un
poco en estabilizarse y adquirir una solución satelital, por lo que poner el TimeInterval a un valor
muy pequeño que exceda el tiempo que tarda el GPS en estabilizarse tiene poco sentido. Mis
experimentos indican que su dispositivo podría arreglarse en tan solo dos o tres segundos, aunque
con frecuencia se necesita más tiempo. Las actualizaciones frecuentes contribuirán a drenar la
batería del dispositivo. No hay garantía de que después de que alguien cruce intervalos de 10
metros pequeños, el GPS se actualice a menos que la precisión sea inferior a 10 metros. Como
desarrollador, puede superar la incertidumbre al proporcionar un código que restringe las
actualizaciones a los períodos de confiabilidad (precisión del GPS) que usted configura como
desarrollador.
No puede probar el código del sensor en el emulador porque el emulador no puede emular los
sensores. Debe probar su código de sensor en un dispositivo físico. Existen simuladores de
sensores que puede usar para simular la salida del sensor, pero no están empaquetados con
AI2. Los sensores AI2 funcionan bien con aiCompanion utilizando WIFI o USB si el dispositivo tiene
un GPS.
Uso de la API de servicios de ubicación
Este tema no está cubierto en este tutorial. Puede consultar
aquí:         http://developer.android.com/training/location/index.html  . El enlace describe el uso de
la programación de la API de Google Location Services en Java. Parte de la información es
aplicable a la codificación con AI2. La API de servicios de ubicación es un enfoque de la
geolocalización muy diferente del que se describe aquí mediante un GPS. Requiere una conexión
de red o WIFI. También es posible que desee
ver http://developer.android.com/reference/com/google/android/gms/location/package-
summary.html 

También podría gustarte