Как узнать, является ли его планшет или телефон в android программно? [дубликат]
На этот вопрос уже есть ответ здесь:
- планшет или телефон-Android 28 ответов
Я хотел бы получить, чтобы определить, является ли данное устройство планшетом или телефоном в android.Я попробовал два из них в симуляторе, но ни один не сработал. Оба здесь:
Первый
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
//code
}
Второй
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;
}
4 ответа:
Попробуйте этот код. Вы можете получить экран дюймов
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+"");
Создайте две папки layout в папке res, подобной этой layout и layout_xlarge.Создайте один нежелательный вид в файле layout-xlarge .Получите этот нежелательный идентификатор представления программно.Доступ к нежелательной ID в код в примечание. blocak если вы получаете null указатель исключения тогда небольшое устройство иначе таблетки.еще одна вещь скрывает нежелательный вид в layout-xlarge screen.
Я думаю, что первый вопрос, на который нужно ответить, - это то, что вы подразумеваете под "телефоном" или "планшетом". Мы можем иметь некоторое различие в наших умах, но на самом деле, ваше заявление не должно волновать. Ноутбук ASUS Transformer это планшет, Samsung Галактика Nexus телефон. Что такое Samsung Galaxy Note ? Engadget и другие называют его "фаблет " - что должно предполагать ваше приложение в этом случае?
Является ли ваше определение "планшета" любым устройством, которое не имеет SIM-карты? Это тоже а ошибочное определение, потому что есть много планшетов, которые имеют встроенную SIM-карту. Является ли ваше определение "планшета" любым устройством, которое по умолчанию работает в альбомном режиме и вращается в портретном режиме? Возможно, это один из подходов, но я сомневаюсь, что этого достаточно, поскольку в будущем могут появиться планшеты, которые по умолчанию будут портретными или, что еще хуже, будут иметь квадратные форм-факторы.
На мой взгляд, лучший способ справиться с этим-использовать рекомендации Android и включить макеты пользовательского интерфейса. Если вы думаете, что вы если у вас есть четкое определение планшетов по сравнению с телефонами и вам абсолютно необходимо обнаружить один над другим, вам, вероятно, нужно сделать что-то вроде извлечения имени модели из строки агента пользователя браузера, а затем сопоставить его с базой данных имен планшетов, которые вы поддерживаете. Я знаю. Фу.
Поместите этот метод в onResume() и можете проверить.
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; }
Обычно таблетки начинаются после 6-дюймового размера.