作者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