如何在Android中检查设备是Tablet,Mobile还是Android TV

时间:2014-12-26 13:31:02

标签: android

我正在制作一个在不同设备上表现不同的应用程序。有没有办法检查我的应用程序是否在电视设备,手机或平板电脑上运行?即使我想检查我在模拟器上运行我的应用程序。在一些链接中,我看到我们可以检查内部版本号或类似的东西。我只是想确定哪些是能让我们知道设备不同的主要内容?

2 个答案:

答案 0 :(得分:6)

根据定义,平板电脑是7英寸或更高。这是检查它的方法:

/**
 * Checks if the device is a tablet (7" or greater).
 */
private boolean checkIsTablet() {
    Display display = ((Activity) this.mContext).getWindowManager().getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);

    float widthInches = metrics.widthPixels / metrics.xdpi;
    float heightInches = metrics.heightPixels / metrics.ydpi;
    double diagonalInches = Math.sqrt(Math.pow(widthInches, 2) + Math.pow(heightInches, 2));
    return diagonalInches >= 7.0;
}

以下是检查设备是否为Android TV的方法:

/**
 * Checks if the device is Android TV.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private boolean checkIsTelevision() {
    int uiMode = mContext.getResources().getConfiguration().uiMode;
    return (uiMode & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_TELEVISION;
}

修改:正如下面的Redshirt用户所指出的,上面的代码段只会检测应用是否在MODE_TYPE_TELEVISION上运行。因此,要专门检测Android TV,您也可以使用此布尔检查: context.getPackageManager().hasSystemFeature("com.google.android.tv")

答案 1 :(得分:3)

TV

首先检查设备是否是电视。以下是documentation建议的方法:

>

更多阅读

注释

  • 由于documentation气馁,不要使用与手机和平板电脑完全相同的电视布局。

手机和平板电脑

将不同的资源文件与各种设备尺寸一起使用。

  • 电话 - 这可以是默认设置。

  • 平板电脑 - 使用public static final String TAG = "DeviceTypeRuntimeCheck"; UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { Log.d(TAG, "Running on a TV Device") } else { Log.d(TAG, "Running on a non-TV Device") } sw600dp来确定此信息。

有关详情,请参阅this answer