Como detectar se o aparelho possui gps via código?

Olá galera, esse é meu primeiro post de muitos no fórum. Bom, eu estou com uma dúvida no desenvolvimento de um sistema e gostaria de pedir a ajuda de vocês que são feras no assunto.
O problema é o seguinte: como identificar se o celular android possui um receptor gps via código? eu encontrei alguns códigos na internet que não funcionam 100% no emulador, são eles:
public boolean isGpsAvailable() {
PackageManager pm = this.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)) {
return true;
} else {
return false;
}
}

este retorna sempre true no emulador, mesmo desativando o gps.

public boolean hasGPSDevice(Context context)
{
final LocationManager mgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
if ( mgr == null ) return false;
final List providers = mgr.getAllProviders();
if ( providers == null ) return false;
return providers.contains(LocationManager.GPS_PROVIDER);
}
esse trava e reinicia o emulador quando o gps está desativado.

Eu estive pensando que seria mais fácil verificar se o Objeto Location permanece nulo, se sim é pq o gps não está funcionando corretamente.
Alguém já passou por isso?
Agradeço desde já!