13

可能重复:
以编程方式查找设备是否支持 GPS?

如何检查设备上的 GPS 是否可用?

当我尝试使用下一个代码时

PackageManager pm = context.getPackageManager();
boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION);

if (hasGps) {
    Log.d("TAG", "HAS GPS");
} else {
    Log.d("TAG", "HAS NOT GPS");
}

我总是有 GPS,但我的爱可视 101IT 没有 GPS 模块。有没有办法检查硬件 GPS 的可用性?

4

2 回答 2

28

使用此代码

boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);

如果您的设备嵌入了 GPS 硬件但未启用,请使用以下代码动态启用它,

LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    //Ask the user to enable GPS
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Location Manager");
    builder.setMessage("Would you like to enable GPS?");
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //Launch settings, allowing user to make a change
            Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(i);
        }
    });
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //No location service, no Activity
            finish();
        }
    });
    builder.create().show();
}

您可以调用LocationManager.getAllProviders()并检查是否LocationManager.GPS_PROVIDER包含在列表中。

否则,您只需使用此代码 LocationManager.isProviderEnabled(String provider)方法。

即使在您的设备中没有 GPS 的情况下,如果返回 false

于 2011-11-03T04:36:42.410 回答
2

android 系统 GPS 设置屏幕可以像任何其他活动一样被调用:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);

要检查 GPS 可用性,请使用以下代码:

(Activity必须实现LocationListener)

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);
于 2011-11-03T06:24:47.160 回答