Compruebe si un dispositivo Android tiene un determinado botón de hardware en el código

Necesito comprobar si un cierto dispositivo androide tiene un botón del hardware en código. Por ejemplo, sólo algunos teléfonos tienen el botón de búsqueda. Entonces, ¿cómo puedo comprobar si un dispositivo tiene un botón de hardware (búsqueda, cámara, d-pad, etc) o no?

3 Solutions collect form web for “Compruebe si un dispositivo Android tiene un determinado botón de hardware en el código”

Puede utilizar PackageManager.hasSystemFeature() .
Ejemplo:

 boolean hasCamera = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); 

También puede obtener algunas de las características que no son probables por PackageManager través de la Configuration , por ejemplo, la DPAD.

 Configuration c = getResources().getConfiguration(); if(c.navigation == Configuration.NAVIGATION_DPAD) hasDpad = true; 

La única excepción es el botón de búsqueda. Había una pregunta aquí hace unos días, preguntando básicamente lo mismo. No recuerdo ninguna respuesta y no sé una manera de detectar el botón de búsqueda, ya que no está en la lista de características. (Editar: Ahí tienes, posible hilo duplicado es el que he mencionado aquí)

Esta es una buena manera de comprobar si el botón "Menú" del hardware está presente:

 ViewConfiguration.get(context).hasPermanentMenuKey(); 

De: https://stackoverflow.com/a/9481965 Vea también: http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey ()

Sé que este post es más de un año de edad, pero con él todavía aparece en las búsquedas de Google (en la primera página). Me imaginé, me gustaría publicar una ligera actualización o sugerencia con lo que estoy usando en caso de que alguien como yo está buscando lo mismo.

 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { Toast.makeText(this,"VOL Down", Toast.LENGTH_LONG).show(); return true; } else if(keyCode == KeyEvent.KEYCODE_SEARCH){ Toast.makeText(this,"search", Toast.LENGTH_LONG).show(); return false; }else{ Toast.makeText(this,"Vol Up", Toast.LENGTH_LONG).show(); return true; //return super.onKeyDown(keyCode, event); } } 

He puesto fuera el lado de la onCreate () .. Esto funciona bien en mi Thunderbolt (enraizado corriendo MikMik GingerGrits)

  • Agregar el botón a PreferenceScreen
  • Añadir efecto de rizado para View en onClick
  • Android Phonegap 2.1> 2.2 Error de actualización
  • Obtener dirección MAC Ethernet de Android (no interfaz wifi)
  • Código para descargar el video de Youtube en Java, Android
  • Cómo ordenar la fecha en orden descendente De Arraylist Fecha en android?
  • Google Maps Fragment no se carga
  • Importar todas las importaciones en eclipse a la vez?
  • ¿Por qué no puedo pasar los datos a través de Intent?
  • Operador ternario devuelve valor - Java / Android
  • Dibuja un personaje con 2 colores en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.