如何以编程方式识别Android中的HDMI端口和电视开关?

问题描述 投票:0回答:1

我想知道如何处理 HDMI 切换到电视的家庭事件。我用 exoplayer 为 FireTV 开发了一个应用程序。问题是当我在 HDMI 端口和电视之间切换时,播放器仍在后台播放。我不想在后台播放内容。

我查看了亚马逊开发者文档。要求我对事件使用广播,对版本 5 使用 ACTION_HDMI_AUDIO_PLUG,以及 AudioDeviceCallbacks。 ACTION_HDMI_AUDIO_PLUG 仅适用于 HDMI 端口上的插件和插拔。

但我想知道在 HDMI 端口和电视之间切换的确切事件操作。这样我就可以处理玩家事件。

IntentFilter filter = new IntentFilter();
filter.addAction(AudioManager.ACTION_HDMI_AUDIO_PLUG);
registerReceiver(mReceiver, filter);

这是接收者代码:

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (AudioManager.ACTION_HDMI_AUDIO_PLUG.equals(action)) {
            int state = intent.getIntExtra("state", 0);
            Log.d(TAG, "ACTION_HDMI_AUDIO_PLUG: State"+state);
        }
    }
};
android exoplayer android-tv hdmi amazon-fire-tv
1个回答
0
投票

你找到解决办法了吗? 我也尝试过类似的东西,但就我而言,列表大小为 0

  val tvInputManager = getSystemService(TV_INPUT_SERVICE) as TvInputManager

        val tvInputInfoList = tvInputManager.tvInputList
        val stringBuilder = StringBuilder()



        for (tvInputInfo in tvInputInfoList) {
            val stringInputID = tvInputInfo.id
            if (stringInputID.contains("Hdmi") && tvInputInfo.isPassthroughInput) {
                if (tvInputManager.getInputState(stringInputID) === TvInputManager.INPUT_STATE_CONNECTED) {
                    stringBuilder.append("\nCONNECTED - $stringInputID")
                } else {
                    stringBuilder.append("\nNOT CONNECTED - $stringInputID")
                }
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.