¿Cómo saber si su una tableta o un teléfono en android programmatically?

Me gustaría llegar a detectar si el dispositivo dado es una tableta o teléfono en android.I han probado los dos en el simulador, pero ninguno funcionó. Ambos están aquí:

primero

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) { //code } 

Segundo

  private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } 

Pruebe este código. Puede obtener la pantalla en pulgadas

  String inputSystem; inputSystem = android.os.Build.ID; Log.d("hai",inputSystem); Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // deprecated int height = display.getHeight(); // deprecated Log.d("hai",width+""); Log.d("hai",height+""); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); double x = Math.pow(width/dm.xdpi,2); double y = Math.pow(height/dm.ydpi,2); double screenInches = Math.sqrt(x+y); Log.d("hai","Screen inches : " + screenInches+""); 

crear dos carpetas de diseño en la carpeta res como esta disposición y layout_xlarge. Crear una vista no deseada en el archivo layout- xlarge. Obtener este ID de la vista no deseada programatically.Access que indeseados id en el código dentro intenta bloquear catch si obtiene una excepción puntero nulo, entonces es pequeño dispositivo de lo contrario es la tableta. Una cosa más ocultar la vista no deseada en la pantalla de layout-xlarge.

Creo que la primera pregunta a responder es lo que quieres decir con "teléfono" o "tableta". Podemos tener alguna distinción en nuestras mentes, pero en realidad, su aplicación no debe importarle. El Asus Transformer es una tableta, el Samsung Galaxy Nexus es un teléfono. ¿Qué es el Samsung Galaxy Note ? Engadget y otros lo llaman un " phablet " – ¿qué debería asumir su aplicación en ese caso?

¿Su definición de "tableta" es cualquier dispositivo que no tiene una tarjeta SIM? Eso también es una definición defectuosa, ya que hay muchas tabletas que tienen una tarjeta SIM incorporada. ¿Su definición de "tableta" es cualquier dispositivo que cambia por defecto al modo horizontal y gira al modo vertical? Tal vez ese es un enfoque, pero dudo que sea suficiente ya que podría haber tabletas que por defecto a retrato, o peor, tienen factores de forma cuadrada en el futuro.

En mi opinión, la mejor manera de manejar esto es usar las pautas de Android y cambiar los diseños de interfaz de usuario. Si usted piensa que tiene una definición clara de las tabletas frente a los teléfonos y absolutamente necesidad de detectar uno sobre otro, es probable que tenga que hacer algo como extraer el nombre del modelo de la cadena de agente del usuario del navegador y luego coincidir con una base de datos de nombres de tabletas que usted mantiene. Lo sé. Yuck.

Coloque este método en onResume () y puede comprobarlo.

 public double tabletSize() { double size = 0; try { // Compute screen size DisplayMetrics dm = context.getResources().getDisplayMetrics(); float screenWidth = dm.widthPixels / dm.xdpi; float screenHeight = dm.heightPixels / dm.ydpi; size = Math.sqrt(Math.pow(screenWidth, 2) + Math.pow(screenHeight, 2)); } catch(Throwable t) { } return size; } 

Generalmente las tabletas comienzan después de 6 pulgadas tamaño.

  • Android ADB no ve el dispositivo
  • Mejor tableta Android para el desarrollo
  • Configuración de dispositivo virtual Android para una tableta de 7 pulgadas en Android SDK 2.3.3
  • Universal (tableta y teléfono) app - la mejor forma de estructura - múltiples xml de diseño o mostrar / ocultar widgets?
  • ¿Cómo hacer que la aplicación android esté disponible para tablets y pre 11 sdk?
  • El selector de fechas HTML5 se abre sólo en el segundo clic
  • ¿Por qué mi aplicación no aparece en tablets en Google Play?
  • ¿Cómo bloqueo la orientación de la pantalla para el teléfono, pero no para la tableta? (Androide)
  • Archos 101 internet tablet: ¿Es posible ocultar los botones predeterminados de Android (software)
  • ¿Es posible instalar xampp en un dispositivo móvil como una pestaña de galaxia o ipad?
  • La aplicación para Android no se muestra en Google Android Market para tablets
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.