如何在代码中检测 7 英寸安卓平板电脑



我正在尝试在我的代码中检测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;
    }

若要计算设备的高度和宽度(以英寸为单位),可以使用以下代码。

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; 

如果你关心的是平板电脑而不是维度,具体来说:有 Build 类,它可以告诉你模型和产品等信息。

请参阅以下内容。似乎不适用于所有设备。如果这两个平板电脑是您唯一担心的设备,我会尝试任何一种实现。

https://stackoverflow.com/a/10080537/300972

https://groups.google.com/group/android-developers/browse_thread/thread/cae5ff90157098b1?pli=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/布局-大/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/布局-xlarge/device_screen.xml//超大屏幕尺寸的布局>平板电脑 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和Samsung Galaxy Note 10.1上进行测试 - 效果很好!

相关内容

  • 没有找到相关文章

最新更新