Android 12:检测用户是否禁用/启用相机和麦克风

Sco*_*ggs 5 camera android microphone android-12

借助新的 Android 12 操作系统,用户现在可以完全禁用所有应用程序中的麦克风和摄像头使用。这其实是一件好事,让用户轻松掌控隐私。

如果应用程序启动并有权使用麦克风和摄像头,并且用户已禁用对这些硬件的所有访问权限,Android 12 会自动弹出警报,要求用户重新启用麦克风或摄像头,或者继续该应用程序的硬件已禁用。

此外,在创建时,应用程序可以简单地检查何时开始查看所需的硬件是否已启用,并且还可以进一步提示用户或根据应用程序认为合适的情况处理条件。

但是,如果用户在应用程序运行禁用麦克风或摄像头怎么办?我似乎找不到类似事件的任何接口onMicrophoneEnabled(),甚至找不到此类事件的广播。

可以在每次onResume()调用时进行检查,但我希望有一个更优雅的解决方案。

如果有人知道当用户以任何方式进行更改时我的应用程序可以使用某些东西来捕获此信息,请告诉我。

Sco*_*ggs 6

仔细阅读谷歌文档(https://developer.android.com/training/permissions/explaining-access#toggles)关于用户启用/禁用相机和麦克风的实现后,我发现了一些非常有趣的东西:

明确禁止应用程序了解用户是否执行了任何这些操作。因此,当然没有办法获得这些更改的通知:这是设计使然。

如果用户以这种方式关闭相机,应用程序仍然会获得相机反馈,但它会是黑色的。同样,麦克风仍然可以工作,但我们只会得到沉默。这是一项功能——确保隐私的一种方式。

操作系统会提醒用户他们已禁用麦克风或摄像头,并提供重新启用硬件的机会,这很好。但该应用程序完全处于黑暗之中(呵呵)。

另一种思考方式:就像在相机上贴一块胶带或在麦克风上贴上拇指一样。只是这一次是由操作系统完成的。这样,间谍程序或其他一些恶意软件仍会认为它正在工作,而不会尝试绕过或放弃。

onResume()这也解释了为什么期间或期间的测试也onWindowFocusChanged()不起作用。我得到的结果与设置不符(它们与当前权限一致)。

所以回答我的问题:没有办法得到通知。这就是我想说的。