2013-07-26 2 views
1

Как определить устройство, у которого есть HD-экран, такой как Asus HD?Идентифицируйте устройства HighDefinition

Я провел некоторое исследование и нашел некоторые параметры, на которых я пытаюсь вычислить это.

Где первая информация от арены GSM (размер и ppi) и DisplayMetrics, собранных из устройства через getDisplay(). GetDisplayMetrics();

Asus HD - 1920 x 1200 pixels, 10.1 inches (~224 ppi pixel density) - DisplayMetrics{density=1.5, width=1920, height=1128, scaledDensity=1.5, xdpi=159.89508, ydpi=159.58115} 
GTab - 800 x 1280 pixels, 10.1 inches (~149 ppi pixel density) - DisplayMetrics{density=1.0, width=800, height=1280, scaledDensity=1.0, xdpi=160.15764, ydpi=160.0} 
Xoom - 800 x 1280 pixels, 10.1 inches (~149 ppi pixel density) - DisplayMetrics{density=1.0, width=1280, height=752, scaledDensity=1.15, xdpi=149.82489, ydpi=149.41176} 
Xoom 2 ME - 800 x 1280 pixels, 8.2 inches (~184 ppi pixel density) - DisplayMetrics{density=1.0, width=1280, height=752, scaledDensity=1.0, xdpi=149.82489, ydpi=149.41176} 
nexus 7 - 800 x 1280 pixels, 7.0 inches (~216 ppi pixel density) 
nexus 7 2 - 1200 x 1920 pixels, 7.0 inches (~323 ppi pixel density) 
Gnote II - 720 x 1280 pixels, 5.5 inches (~267 ppi pixel density) 
Gnote - 800 x 1280 pixels, 5.3 inches (~285 ppi pixel density) 
Gtab 7.7 - 800 x 1280 pixels, 7.7 inches (~196 ppi pixel density) 
Gtab 7 - 600 x 1024 pixels, 7.0 inches (~170 ppi pixel density) 

я учил с использованием плотности в качестве параметра, чтобы идентифицировать его, но большинство устройств вернуть 1,0 (по крайней мере, Asus HD действительно возвращается 1.5), но я не уверен, что я могу полагаться на эти значения.

Есть ли какой-нибудь лучший aproach, чтобы идентифицировать тогда?

+0

Как вы определяющего "HD-экран"? – CommonsWare

+0

На самом деле, для меня это устройство, на котором ppi очень высока (вследствие этого изображение выглядит лучше и должно быть на более высоких разрешениях). –

+0

И это не означает, что вы можете использовать устройства xhdpi, поскольку они все еще могут быть не HD (такие Galaxy Tab 10.1 и Motorola Xoom). –

ответ

0

Независимо от аргумента по поводу «что такое HD». Если вы хотите что-то, основанное на Денисти; Делайте это с классификаторов ресурсов:

В файлах:

/values-xxxhdpi/hd.xml 
/values-xxhdpi/hd.xml 
/values-xhdpi/hd.xml 

hd.xml:

<resources> 
    <bool name="isWhatIClassifyAsHD">true</bool> 
</resources> 

(настройка ниже не является обязательным, как они будут в любом случае неверно).

/values/hd.xml 
/values-mdpi/hd.xml 
/values-hdpi/hd.xml 

hd.xml:

<resources> 
    <bool name="isWhatIClassifyAsHD">false</bool> 
</resources> 

Тогда в вашей деятельности:

boolean isHD = getResources().getBoolean(R.bool.isWhatIClassifyAsHD); 
+0

Хм .. хороший обходной путь –

Смежные вопросы