作者jacktoad (逛逛...)
看板AndroidDev
標題Re: [問題] 在ICS上區分phone or tablet ?
時間Fri Feb 17 10:53:53 2012
※ 引述《weruioi (傑)》之銘言:
: ※ 引述《PeterLiu (阿勇)》之銘言:
: : 在舊版的android上,可以簡單利用系統版本來區分device
: : ver 2.x 是手機,ver 3.x 是平板
: : (至少八九不離十)
: : 現在 4.x 則是手機平板通用,
: : 當app上某個功能我希望只能在平板上才開放時,
: : 請問要如何去區別app是裝在手機or平板?
: : 本來想說利用解析度去判別,但是現在手機也是有 1280x720...=.=
: 節錄自GoogleIO 2011 app source code
: 兩個判斷版本與螢幕大小的function
: 希望有幫助XD
: public static boolean isHoneycomb() {
: // Can use static final constants like HONEYCOMB, declared in later versions
: // of the OS since they are inlined at compile time.
: // This is guaranteed behavior.
: return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
: }
恕刪
其實ICS本身有利用density來判斷UI應該用phone還是tablet的機制
http://baroqueworksdev.blogspot.com/2012/01/phone-mode-or-tablet-
mode-in-ice-cream.html
看過文章之後可以看出來framework透過ro.sf.lcd.density的值去算出
shortSizeDp的值
然後根據文章找到
\frameworks\base\policy\src\com\android\internal\policy\impl
- PhoneWindowManagerService.java
從裡面可以發現ICS要套用哪一套UI由shortSizeDp是否大於600決定
所以光從ICS的角度來判斷的話可以參考framework的判斷方式
除非你的開發裝置這部份的設定本來就有問題導致framework誤判
當然這是從framework的角度去探討...對上層app來說是否有參考價值
就見仁見智了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.124.112.76
1F:→ PeterLiu:感謝您的分析,weruioi大的文章我都還沒爬完,大大就已經 02/17 13:04
2F:→ PeterLiu:有處理方案,實在是太厲害了... m(_._)m 02/17 13:04
3F:推 siriusu:話說其實我在想直接分開會不會比較快啊 印象中iOS tablet 04/19 23:29
4F:→ siriusu:的app後面都會加一個HD 04/19 23:30