如何检测(java代码)“盒式”googleTV或具有内置显示器的googleTV(“电视类型”)

时间:2014-01-22 01:19:27

标签: android google-tv

有没有办法在我的Android应用程序代码中检测到这一点? 我想区分“Box type”(例如NSZGS7,没有附加显示器)和内置到电视类型(NSXGT1,带显示器)googleTV设备。是否有可用于区分的标准系统属性或功能标志?

3 个答案:

答案 0 :(得分:1)

我认为没有一种超级优雅的方法来检测设备是否有显示器或是否是盒子。但您可以使用android.os.Build来检测制造商/设备/模型等,并根据系统属性进行区分。 http://developer.android.com/reference/android/os/Build.html

以下是大多数当前可用的GTV设备的系统属性:

                    MANUFACTURER  DEVICE           MODEL           
Sony NSX-GT1(TV)    Sony          asura            Internet TV     
Sony NSZ-GT1(BD)    Sony          eagle            Internet TV Box 
Sony NSZ-GS7(Box)   Sony          NSZGS7           NSZ-GS7/GX70    
Sony NSZ-GU1(Stick) Sony          NSZGU1           NSZ-GU1    
Logitech Revue(Box) logitech      ka               Revue 
Netgear GTV100(Box) Netgear       NeoTV            GTV100          
Hisense Pulse(Box)  hisense       hisense_gx1200v  hisense_gx1200v 
Vizio Costar (Box)  VIZIO         VAP430           VAP430          
LG G2(TV)           lge           cosmo            LG Google TV

希望这有帮助! -Tonni来自索尼

答案 1 :(得分:1)

这是我现在使用的代码。这不是未来的证据,这意味着随着新的电视类型GoogleTV设备的发布,这些代码将需要更新。但是,此代码现在已完成工作。

boolean is_gtv_device_type_tv(){
    if (context.getPackageManager().hasSystemFeature("com.google.android.tv")) {
        if(android.os.Build.DEVICE != null) {
            if(android.os.Build.DEVICE.equalsIgnoreCase("asura"))
                return true;
            if(android.os.Build.DEVICE.equalsIgnoreCase("cosmo"))
                return true;
        }

        // All other google tv devices are buddy boxes!! :)
        return false;
    }
}

答案 2 :(得分:0)

在“设备属性”中查找 ro.hdmi.device_type(对于 HDMI 接收设备,例如平板电视,它是“0”,对于 HDMI 源设备,例如 Over the Top (OTT) 盒子,它是“4”)。

使用 ABD:

adb shell getprop ro.hdmi.device_type

以编程方式:

public static String getDeviceType() {
    switch (System.getProperty("ro.hdmi.device_type")){
        case "0":
            return "TV";
        case "4":
            return "BOX";
        default:
            return "UNKNOWN";
    }
}