您可以通过注册ACTION_HDMI_AUDIO_PLUG来监听 HDMI 状态的变化(0 表示拔出,1 表示插入) 。当电视关闭、切换到任何其他显示媒体或 HDMI 被移除时,它会报告状态 0。要了解其技术性,您可以查看热插拔检测在 HDMI 中的工作原理。总体而言,您的应用程序可以随时监控显示器当前是否可以播放您的内容。我自己在一个解决方案中实现了这一点(在 X96 mini android box 和 amazon fire-stick 上),我需要确保内容实际上正在播放,因为它包含付费内容。另外,我附上了示例代码文件。
注意:此解决方案仅在 android 设备是 HDMI 源而不是接收器时有效!
这也是文档链接 - https://developer.android.com/reference/android/media/AudioManager#ACTION_HDMI_AUDIO_PLUG
private BroadcastReceiver eventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// pause video
String action = intent.getAction();
switch (action) {
case ACTION_HDMI_AUDIO_PLUG :
// EXTRA_AUDIO_PLUG_STATE: 0 - UNPLUG, 1 - PLUG
Toast.makeText(getApplicationContext(),"HDMI PLUGGED OR UNPLUGGED",Toast.LENGTH_LONG).show();
Log.d("MainActivity", "ACTION_HDMI_AUDIO_PLUG " + intent.getIntExtra(EXTRA_AUDIO_PLUG_STATE, -1));
((TextView)(findViewById(R.id.textView))).setText(((TextView)(findViewById(R.id.textView))).getText().toString().concat("At "+System.nanoTime()+": "+intent.getIntExtra(EXTRA_AUDIO_PLUG_STATE, -1) +"\n"));
break;
}
}
};
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(eventReceiver);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_HDMI_AUDIO_PLUG);
registerReceiver(eventReceiver, filter);
}