我正在尝试在我的代码中检测7“平板电脑(即Kindle Fire& Nook Color)。但是,仅测试1024x600的最小尺寸并不好,因为Galaxy Nexus也会通过此测试。任何人都有检测此类信息的经验?
谢谢, 伊戈尔
修改 我找到了一种方法来检测Kindle Fire& Nook Color设备,代码如下:
Activity activity = (Activity) activityContext;
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
if ((width == 1024 && height == 600) || (width == 600 && height == 1024)) {
//Detects 7" tablets: i.e. Kindle Fire & Nook Color
isTablet = true;
}
答案 0 :(得分:5)
要计算设备的高度和宽度(以英寸为单位),您可以使用以下代码。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float widthInInches = metrics.widthPixels / metrics.xdpi;
float heightInInches = metrics.heightPixels / metrics.ydpi;
然后可以计算大小
double sizeInInches = Math.sqrt(Math.pow(widthInInches, 2) + Math.pow(heightInInches, 2));
//0.5" buffer for 7" devices
boolean is7inchTablet = sizeInInches >= 6.5 && sizeInInches <= 7.5;
根据上面的Commonsware建议,可能会更快,但不那么明显。
double sizeInInchesSquared = (widthInInches * widthInInches) + (heightInInches * heightInInches);
//0.5" buffer for 7" devices (6.5^2 = 42.25) (7.5^2 = 56.25)
boolean is7inchTablet = sizeInInchesSquared >= 42.25 && sizeInInchesSquared <= 56.25;
答案 1 :(得分:1)
如果它是你关心的平板电脑而不是尺寸,特别是:有Build类,它可以告诉你模型和产品之类的东西。
答案 2 :(得分:1)
请参阅以下内容。似乎无法在所有设备上运行。如果这两款平板电脑是您唯一担心的设备,我会试一试。
https://stackoverflow.com/a/10080537/300972
https://groups.google.com/group/android-developers/browse_thread/thread/cae5ff90157098b1?pli=1
答案 3 :(得分:1)
我知道这是旧线程,但这种方式如何:
public boolean isLargeScreen() {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.device_screen, null);
FrameLayout menu = (FrameLayout) view.findViewById(R.id.menu);
if (left_menu != null) {
return true;
} else {
return false;
}
}
然后:
if ( isLargeScreen() ) {
// do something for large screen & extra large screen
} else {
// do something for normal screen size
}
和xml布局(例如):
res / layout / device_screen.xml //正常屏幕尺寸的布局(“默认”)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
[leave it blank]
</LinearLayout>
res / layout-large / device_screen.xml //大屏幕平板电脑7'的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/menu"
... />
</LinearLayout>
res / layout-xlarge / device_screen.xml //超大屏幕尺寸的布局&gt;平板电脑10'
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/menu"
... />
</LinearLayout>
在HTC Desire&amp;三星Galaxy Note 10.1 - 效果很好!