Есть ли способ для приложения Android узнать, на каком устройстве оно установлено?

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

Если это звучит смешно, как разработчик Android, можете ли вы указать при публикации своего приложения, на каких устройствах вы хотите, чтобы приложение было доступно?

Думаю, в конечном итоге я мог бы написать заглавными буквами EXCLUSIVE TO или AVAILABLE IN «вставить имя устройства» в описании приложения.

Заранее спасибо.


person Abid Ullah    schedule 27.01.2011    source источник


Ответы (2)


Если вы хотите разработать приложение для планшета, вам следует обратить внимание на размер экрана.

Вы можете узнать размер экрана с помощью Resources.getConfiguration().screenLayout:

http://developer.android.com/reference/android/content/res/Configuration.html#orientation

Обратите внимание, что ваше первое решение будет заключаться в том, считаете ли вы планшет размером SCEENLAYOUT_SIZE_XLARGE или и XLARGE, и SCREENLAYOUT_SIZE_LARGE. (Примечание: XLARGE введен в Honeycomb; вы можете найти константу в предварительной версии SDK.)

Если вы хотите ограничить, какие устройства будут видеть ваше приложение на Маркете, вы можете использовать тег support-screens, чтобы указать, с какими размерами экрана вы совместимы. Например

<supports-screens android:smallScreens="false" android:normalScreens="false" />

Дополнительные сведения о размерах экрана см. здесь: http://developer.android.com/guide/practices/screens_support.html

person hackbod    schedule 27.01.2011

Пытаться...

String s="Debug-infos:";
s += "\n OS Version: " + System.getProperty("os.version") + "(" + android.os.Build.VERSION.INCREMENTAL + ")";
s += "\n OS API Level: " + android.os.Build.VERSION.SDK;
s += "\n Device: " + android.os.Build.DEVICE;
s += "\n Model (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";
person Will Tate    schedule 27.01.2011
comment
Вау, спасибо, не думал, что будет такое хорошее решение. Это работает на всех устройствах Android? - person Abid Ullah; 27.01.2011
comment
Да, это встроенная часть ОС Android. - person Will Tate; 27.01.2011
comment
Большое спасибо, это решило серьезное препятствие. Раньше я не занимался разработкой для Android, поэтому не очень знаком с API. Могу ли я заставить вас спросить о второй части моего вопроса, могу ли я выбрать, на какие устройства можно установить мое приложение? - person Abid Ullah; 27.01.2011
comment
Вы можете посмотреть здесь: developer.android.com/guide/practices/compatibility.html Я знаю, что вы можете ограничить его функциями устройства (например, есть ли у него камера/компас), но я не совсем уверен в фактическом типе устройства. Я не пробовал это раньше, извините :-\ - person Will Tate; 27.01.2011
comment
Фильтрация по функциям должна быть достаточно хорошей. Спасибо за вашу помощь. - person Abid Ullah; 27.01.2011
comment
Если вы хотите узнать, работаете ли вы на планшете, это ВООБЩЕ не очень хорошее решение. На самом деле, это 99% ужасное решение. Пожалуйста, не используйте ничего, кроме android.is.Build.VERSION_SDK для определения поведения; ни одно из других полей не имеет достаточно четко определенного значения для такого программного использования. - person hackbod; 27.01.2011