ITmob-Ly
发布于 2024-08-07 / 382 阅读
0

Android 15 新功能和 API 详解:录屏检测,addScreenRecordingCallback

Android 15 新增加了多项隐私保护功能。本文我们将讨论其中之一:屏幕录制检测

介绍

Android 15 增加了应用检测它是否被屏幕录制的支持。每当应用在屏幕录制中处于可见或不可见状态之间转换时,系统都会调用 WindowManager 的回调。如果应用正在执行敏感操作,可以通知用户他们正在被录屏。

录屏检测

  1. AndroidManifest.xml 文件中添加权限
<uses-permission android:name="android.permission.DETECT_SCREEN_RECORDING" />
  1. 屏幕录制检测代码示例
class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeSampleTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background,
                ) {
                    Greeting("Hello https://itmob.cn")
                }
            }
        }
    }

    // 定义录屏检测的回调
    private val screenRecordingCallback = Consumer<Int> { state ->
        if (state == SCREEN_RECORDING_STATE_VISIBLE) {
            // 正在被录屏
            Toast.makeText(this, "Being recorded", Toast.LENGTH_LONG).show()
        } else {
            // 没有被录屏
            Toast.makeText(this, "Not being recorded", Toast.LENGTH_LONG).show()
        }
    }

    override fun onStart() {
        super.onStart()
        
        // 通过 WindowManager 添加屏幕检测的回调
        if (Build.VERSION.SDK_INT >= 35) {
            windowManager.addScreenRecordingCallback(mainExecutor, screenRecordingCallback)
        }

    }

    override fun onStop() {
        super.onStop()
        
        // 应用不可见时,移除屏幕检测的回调
        if (Build.VERSION.SDK_INT >= 35) {
            windowManager.removeScreenRecordingCallback(screenRecordingCallback)
        }
    }
}

Detect screen recording

其他:

Android 15 (API 级别 35) 起 WindowManager 的新增方法:addScreenRecordingCallback


Android 15 功能和变更列表

翻译:2024 年 9 月 3 日 Android 15 已发布至 AOSP

Android 15 新功能和 API 详解:Private Space/私密空间功能简介

Android 15 新功能和 API 详解:应用程序启动信息,ApplicationStartInfo

Android 15 新功能和 API 详解:支持 16 KB 页面大小

Android 15 新功能和 API 详解:更精确的 Intent 解析,UriRelativeFilterGroup 和 UriRelativeFilter