Android区分电视和机顶盒

时间:2018-05-11 11:24:16

标签: android android-tv television

如何以编程方式区分AndroidTV上的电视和STB /游戏机?此方法(https://developer.android.com/training/tv/start/hardware)不起作用,因为运行AndroidTV的STB被视为电视。

1 个答案:

答案 0 :(得分:0)

你的目标是什么?

这样做的明显原因是确定设备是否适合玩游戏。如果出于任何其他原因,则需要详细说明目的,以便获得适用的帮助。

据说......

由于不可能直接查询设备类型 - 就个人而言,我会寻找只有游戏机可能具有的东西。
换句话说:游戏控制器/游戏手柄。

public ArrayList<Integer> getGameControllerIds() {
    ArrayList<Integer> gameControllerDeviceIds = new ArrayList<Integer>();
    int[] deviceIds = InputDevice.getDeviceIds();
    for (int deviceId : deviceIds) {
        InputDevice dev = InputDevice.getDevice(deviceId);
        int sources = dev.getSources();

        // Verify that the device has gamepad buttons, control sticks, or both.
        if (((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD)
                || ((sources & InputDevice.SOURCE_JOYSTICK)
                == InputDevice.SOURCE_JOYSTICK)) {
            // This device is a game controller. Store its device ID.
            if (!gameControllerDeviceIds.contains(deviceId)) {
                gameControllerDeviceIds.add(deviceId);
            }
        }
    }
    return gameControllerDeviceIds;
}

当然,这不是万无一失的。显然,如果当时拔下游戏手柄(不确定何时会发生),则不会返回任何内容。更不用说,一些电视支持游戏手柄(三星首先想到) - 但是,如果您打算确认应用程序有足够的输入可用,这将是理想的。

如果游戏手柄不存在,可能会显示一条消息,说明“请连接游戏手柄”。 - 连续检查后台,并在检测到一个后自动继续。