如何在屏幕镜像期间锁定Android屏幕?
Posted
技术标签:
【中文标题】如何在屏幕镜像期间锁定Android屏幕?【英文标题】:How to lock android screen during screen mirroring? 【发布时间】:2020-03-10 02:53:32 【问题描述】:我正在开发一个 android 应用程序,用于将 android 屏幕镜像到车载显示器。我使用 MediaProjection 来获取屏幕;使用该 api 我能够镜像屏幕,现在我想在镜像期间锁定 android 屏幕以避免分散用户的注意力。
有没有办法在流式传输期间锁定仅 Android 设备屏幕?例如显示固定图片或冻结设备屏幕并流式传输其他布局?也许使用一些 API 等?
【问题讨论】:
欢迎来到 SO!一个问题应该有最少的内容:输入样本(如果需要)、预期输出样本(需要)、你尝试了什么、你研究了什么……你尝试了什么? 【参考方案1】:我个人通过设置/清除标志来为用户锁定/解锁 UI:
//The user cannot interact with the UI
private void disableUserInteraction()
(getActivity()).getWindow()
.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
//The user can interact with the UI
private void enableUserInteraction()
(getActivity()).getWindow()
.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
这将阻止用户与屏幕进行交互。 然后,您可以创建一个带有灰色的 RelativeLayout,以使用户明显需要等待,并在执行您的操作时使用它的可见性:
<LinearLayout
android:id="@+id/loading_mask"
android:layout_
android:layout_
android:orientation="vertical"
android:background="#B0000000"
android:visibility="gone"/>
您还可以同时添加一个 ProgressDialog,以显示/关闭:
//The UI message to show the user during the loading
private void showProgressDialog()
if (progressDialog == null)
progressDialog = new ProgressDialog(Objects.requireNonNull(getParentFragment())
.getActivity());
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.setMessage("Loading...");
progressDialog.show();
private void dismissProgressDialog()
if (progressDialog != null)
progressDialog.dismiss();
如果你把这三个结合起来,我认为它是一个很好的等待屏幕,那么你可以像这样把这些方法放在一起:
//The user can interact with the UI, end of progressdialog and waiting mask
private void unlockUI()
loadingMask.setVisibility(View.GONE);
dismissProgressDialog();
enableUserInteraction();
//The user cannot interact with the UI, start of progressdialog and waiting mask
private void lockUI()
showProgressDialog();
disableUserInteraction();
loadingMask.setVisibility(View.VISIBLE);
您只需要在启动时调用 lockUI() 并在用户可以再次与屏幕交互时调用 unlockUI()。
希望这会有所帮助,让我们知道进展如何!
【讨论】:
感谢您的回答。但是如果我这样做,屏幕将被锁定在两侧。汽车显示屏和手机。我只想锁定 Android 屏幕并仅在车载显示屏上显示屏幕。以上是关于如何在屏幕镜像期间锁定Android屏幕?的主要内容,如果未能解决你的问题,请参考以下文章