¿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
- Tablet no puede descargar el archivo .apk en algunos navegadores
- ¿Cómo puedo reflejar la salida sólo en dispositivos compatibles con HDCP?
- Diseño de aplicaciones de Android para tablets
- ¿La Acer Iconia Tab A500 admite el modo de accesorio?
- Leer y grabar datos a través del puerto USB en Android 3.1
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; }
- Cambiar el logotipo que aparece en Android ActionBar por programa
- Configurar los juegos libgdx para que sean "diseñados para tabletas"
- Comenzando en el desarrollo de tablets Android
- Google IO Sched App - Disposición de tableta y fragmentos
- ¿Cómo encajar en la pantalla después de cambiar el ancho de la ventana de visualización en el cambio de orientación?
- Nuevo NavigationDrawer en tabletas con disposición fija a la izquierda
- ¿Los eventos Javascript no funcionan en Tablet-pc?
- @ Font-face problema de representación en la etiqueta de párrafo, Chrome Android 4
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.