当使用团队演示共享我的手机屏幕时,如何检测 Android 中的屏幕镜像?

Pra*_*311 5 android screenshot kotlin android-security android-displaymanager

为了增强我的Android应用程序的安全性,我需要检测屏幕镜像。我已经实现了下面的源代码:

var display : DisplayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager

var presentationdisplay= display.getDisplays(DISPLAY_CATEGORY_PRESENTATION).size

Toast.makeText(this, "disp size "+presentationdisplay, Toast.LENGTH_SHORT).show()

if(presentationdisplay>0) {
    Toast.makeText(this, "your Mobile screen is shared by other app", Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)

该代码能够检测 Screen Casting 以及 GoogleMeet、TeamViewer 的屏幕共享。但它没有检测到 MicrosoftTeams 和 Zoom 屏幕共享。我发现 MicrosoftTeams 和 Zoom 正在使用FLAG_PRIVATE,而FLAG_PRESENTATIONGoogleMeet、TeamViewer 仅使用FLAG_PRESENTATION. 我假设他们将其虚拟显示器保护为私有使用FLAG_PRIVATE。有什么方法可以检测屏幕镜像吗FLAG_PRIVATE

Mah*_* Gv 0

使用这个库 flutter_windowmanager: ^0.2.0

避免和检测屏幕共享FLAG_TURN_SCREEN_ON

更多细节