Estoy escribiendo un método que devolverá verdadero si hay un sensor GPS presente y habilitado, pero devuelve falso si está ausente o apagado. Está resultando difícil porque ...¿Cómo verificar la presencia de un sensor de GPS?
hasSystemFeature("FEATURE_LOCATION_GPS") // on PackageManager
Devuelve falso, si el dispositivo tiene un GPS o no. Entonces, incluso en un dispositivo que tiene uno, y está encendido, todavía devuelve falso. Me parece completamente incorrecto, pero no puedo ver por qué.
isProviderEnabled("gps") // on LocationManager
Devuelve cierto, incluso en un dispositivo que tengo aquí que no tiene ningún hardware de GPS en absoluto. Eso también parece completamente contra-intuitivo.
Acepto que estos resultados podrían deberse a que me falta algo, el SDK no es intuitivo, o incluso que los dispositivos con los que estoy probando se están comportando de manera extraña.
¿Qué me estoy perdiendo?
No hay error, pero devuelve verdadero en un dispositivo que no tiene un GPS en absoluto (Advent Vega 10 "tableta no aprobada por Google). Tal vez la culpa es culpa de la tableta y el sistema operativo está incorrectamente configurado en el dispositivo. –
Bueno, el desarrollador del dispositivo tiene que implementar una clase PackageManager ya que el SDK PackageManager es abstracto. No sería la primera vez que un desarrollador de dispositivos rompió algo. –
Probé esto en Kinde Fire (sin GPS) y funciona como un encanto. (Supongo que no vale la pena apoyar craps aprobados no aprobados por Google) –