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");
}

私は常にHASGPSを取得しますが、Archos101ITには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 に答える