Android 从 13 开始新增了一个快捷设置图块,可以打开系统自带的二维码扫描器。在 Pixel 设备上,这个图块默认打开的是 Google Play 服务中的二维码扫描器组件,识别速度很快,还是挺好用的。
因为 Google 已经停止对 Pixel 5 的更新支持,我在 Pixel 5 上刷了 LineageOS。LineageOS 的二维码扫描器图块打开的是它自带的相机 Aperture 中的二维码扫描界面。这个扫描器经常会对着二维码半天不触发识别,而且有时候识别到二维码内容后底部弹出的操作栏点按会没有反应,非常影响使用。而 GrapheneOS 的相机 Secure Camera 内置的二维码扫描功能就很好用,反应速度很快,并且在 GrapheneOS 上它也是作为系统默认的二维码扫描器的,所以可以直接启动它二维码扫描的界面。
因为 Android 系统并不能直接修改默认的二维码扫描器,一开始我想的是自己写一个快捷设置图块 App 专门打开 GrapheneOS 相机的二维码扫描界面。动手之前我突然想到可以去看看能不能直接修改配置,因为 Android 系统的很多配置项是没有对应的 UI 但可以通过 adb shell 然后输入命令修改的。之前了解到默认二维码扫描器是通过 config_defaultQrCodeComponent 这个字符串配置的,于是在 Android Code Search 搜索了一下,发现会优先使用 Device Config 中 SystemUI 的 DEFAULT_QR_CODE_SCANNER,如果没有配置才会使用默认(相关代码),那就可以试试用 device_config 命令修改。
于是解决方案就很简单了,连接 USB 调试,进入 adb shell,执行命令(或者直接在命令前加上 adb shell 也可以)
device_config put systemui default_qr_code_scanner app.grapheneos.camera.play/app.grapheneos.camera.ui.activities.QrTile执行后再点击系统的二维码扫描器图块,就可以打开 GrapheneOS 相机的二维码扫描界面了。要还原系统默认只要把上面命令中的 put 改成 delete 就行了。需要注意的是,如果这里的 App 包名或对应的 Activity 不存在,二维码扫描图块就会变成灰色无法使用。另外如果是从 GitHub Releases 下载的 GrapheneOS 相机,包名为 app.grapheneos.camera,我使用的是它的 Play 商店版本,包名不同。
暂无评论