Как я могу отличить телефон от планшета

1

Используя Adobe AIR для Android, я хотел бы найти способ отличить телефон от планшета. Самое близкое, что я могу найти, это обнаружение dpi. (Мой телефон составляет 254, мой планшет - 149), но будет ли это надежным или есть лучший способ?

(Я использовал stackoverflow некоторое время, но это мой первый пост - yippee!)

Теги:
air

3 ответа

1
Лучший ответ

но это будет надежным

Абсолютно нет. T-Mobile G1 будет табло по этой мере.

есть ли лучший способ?

Честно говоря, вы не должны заботиться о том, является ли Android-устройство телефоном, планшетом, телевизором, тостером, телескопом или туалетом.

Вы должны заботиться о характеристиках и возможностях.

Например, если вы думаете о таблицах с точки зрения размера экрана, используйте <supports-screens> и набор ресурсов -large и -xlarge (например, res/layout/ для обычных вещей и res/layout-large/ для больших размеров экрана).

Или, если вы думаете о планшетах с точки зрения того, можете ли вы поместить телефонный звонок, используйте <uses-feature> и hasSystemFeature() на PackageManager.

  • 0
    Я использую Adobe AIR для Android, у меня нет доступа к этим атрибутам. Если бы я писал нативное приложение для Android, я мог бы сделать это. Я обеспокоен тем, что хочу разрешить поворот версии планшета, но не телефона. Мне нужна строка состояния на экране, и на телефоне в альбомной ориентации она занимает слишком много недвижимости и делает игровую зону слишком маленькой.
  • 1
    @cdotspace. Если в Adobe AIR нет способов определить размер экрана и реагировать на него, то Adobe AIR не готов к работе в прайм-тайм. Имейте в виду, что если вы знаете плотность и разрешение, то вы знаете размер - разрешение / плотность = размер.
Показать ещё 1 комментарий
0

cdotspace, не беспокойтесь о реальных dpi, вам нужно всего лишь получить вирутальные dpi:

int virtual_dpi=webview1.getResources().getDisplayMetrics().densityDpi;

Virutal dpi означает точки на виртуальный дюйм. Например, htc желание hd реальная ширина составляет 2,21 дюйма, но его ширина virutal все еще составляет 2 дюйма, галактическая вкладка 10,1 реальная ширина составляет 5,35 дюйма (портретная ориентация), но ее виртуальная ширина составляет 5 дюймов.

int portrait_width_pixel=Math.min(this.getResources().getDisplayMetrics().widthPixels, this.getResources().getDisplayMetrics().heightPixels);
int dots_per_virtual_inch=this.getResources().getDisplayMetrics().densityDpi;
float virutal_width_inch=portrait_width_pixel/dots_per_virtual_inch;
if (virutal_width_inch<=2)
   {//is phone
   }
else
    {//is tablet
    }
0

Является ли устройство планшетом или нет, может означать...

Один. Используется ли эта версия планшета Honeycomb (Android 3.0)? Вы можете использовать System.getProperty(), чтобы получить эту информацию.

или

Два... Это размер таблетки? то есть экран большего размера? Но имейте в виду, что некоторые планшеты не так уж велики. Лучший способ справиться с этим - отдельные ресурсы для каждого размера устройства.

Я бы сказал, что в целом это плохая идея, чтобы попытаться определить планшеты Android в определенные группы, так как сейчас существует много разновидностей, и еще много. Поэтому обычно лучше всего создавать приложение, чтобы он обрабатывал разные размеры экрана, разные версии ОС и различные функции, доступные или отсутствующие (например, GPS, клавиатура и т.д.).

  • 0
    Приложение, которое я создаю, использует плавную компоновку (на самом деле это один исходный код для настольных компьютеров Mac / Win, iOS / Android-телефонов / планшетов и веб-сайтов), просто основная область контента становится слишком маленькой на телефоне в альбомной ориентации. Я решил просто позволить пользователю решить, что он может вернуться в портрет, если ему это не нравится. (Apple, скорее всего, откажется от этого, но меня не волнуют айфоны).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню