Android проверяет наличие GPS на устройстве
Возможный дубликат:
Программно найти устройство с поддержкой 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");
}
У меня всегда есть HAS GPS, но у моего Archos 101IT нет модуля GPS. Есть ли способ проверить аппаратную доступность GPS?
2 ответа
Используйте этот код
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)
метод.
если вернуть false даже в том случае, если у вас нет GPS на вашем устройстве
Экран настройки GPS системы Android можно вызвать так же, как и любые другие действия:
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
Для проверки доступности GPS используйте код ниже:
(Деятельность должна реализовывать LocationListener)
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);