¿Cómo verificar la presencia de un sensor GPS?

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 ...

hasSystemFeature("FEATURE_LOCATION_GPS")  // on PackageManager

Devuelve falso, ya sea que el dispositivo tenga 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

Returns true, incluso en un dispositivo que tengo aquí que no tiene hardware 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 tal vez incluso que los dispositivos con los que estoy probando se comportan de manera extraña.

¿Qué me estoy perdiendo

Respuestas a la pregunta(3)

Su respuesta a la pregunta