如何检查手机是否有GPS设备?

7
我正在寻找一段代码,可以告诉我安卓手机是否有GPS设备?大多数搜索结果都只能告诉我GPS是否启用。我感兴趣的是安卓手机是否有物理GPS设备?谢谢。
2个回答

21

从API level 8 (Froyo)开始,您可以使用以下代码:

PackageManager packageManager = mContext.getPackageManager();
boolean hasGPS = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);

已在不带GPS的Kindle Fire上进行测试,效果非常好。 - stevo.mit
比LocationManager#getAllProviders()的处理时间更短。 - Muhammad Babar

11
public boolean hasGPSDevice(Context context)
    {
    final LocationManager mgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
    if ( mgr == null ) return false;
    final List<String> providers = mgr.getAllProviders();
    if ( providers == null ) return false;
    return providers.contains(LocationManager.GPS_PROVIDER);
    }

1
你的回答很有道理。但是在模拟器中,即使我设置 GPS Support = No,这段代码仍然返回 true。有什么想法吗?也许在没有 GPS 的手机上,它会返回 false,但不确定... - Haris Hasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接