Используя Adobe AIR для Android, я хотел бы найти способ отличить телефон от планшета. Самое близкое, что я могу найти, это обнаружение dpi. (Мой телефон составляет 254, мой планшет - 149), но будет ли это надежным или есть лучший способ?
(Я использовал stackoverflow некоторое время, но это мой первый пост - yippee!)
но это будет надежным
Абсолютно нет. T-Mobile G1 будет табло по этой мере.
есть ли лучший способ?
Честно говоря, вы не должны заботиться о том, является ли Android-устройство телефоном, планшетом, телевизором, тостером, телескопом или туалетом.
Вы должны заботиться о характеристиках и возможностях.
Например, если вы думаете о таблицах с точки зрения размера экрана, используйте <supports-screens>
и набор ресурсов -large
и -xlarge
(например, res/layout/
для обычных вещей и res/layout-large/
для больших размеров экрана).
Или, если вы думаете о планшетах с точки зрения того, можете ли вы поместить телефонный звонок, используйте <uses-feature>
и hasSystemFeature()
на PackageManager
.
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
}
Является ли устройство планшетом или нет, может означать...
Один. Используется ли эта версия планшета Honeycomb (Android 3.0)? Вы можете использовать System.getProperty(), чтобы получить эту информацию.
или
Два... Это размер таблетки? то есть экран большего размера? Но имейте в виду, что некоторые планшеты не так уж велики. Лучший способ справиться с этим - отдельные ресурсы для каждого размера устройства.
Я бы сказал, что в целом это плохая идея, чтобы попытаться определить планшеты Android в определенные группы, так как сейчас существует много разновидностей, и еще много. Поэтому обычно лучше всего создавать приложение, чтобы он обрабатывал разные размеры экрана, разные версии ОС и различные функции, доступные или отсутствующие (например, GPS, клавиатура и т.д.).