feat: 扫码配置——扫平台上生成的二维码,一次配好(v1.4)
场景:设备还没接进平台、或人站在机架前不想插线时,原来得在手机上手动输平台地址和
令牌(还可能漏指纹)。现在平台「设备池」里点某台设备的「二维码」,手机上点
「扫码配置」扫一下即完成。
- ScanActivity:Camera1 + **ZXing core**(刻意不用 ML Kit —— 那要 Google Play 服务,
国内机型普遍没有);QR 的定位图案让 ZXing 自带旋转不变性,不用手动转 YUV 帧
- 二维码内容(平台侧生成):{"v":1,"server":…,"token":…,"fingerprint":…,"name":…}
—— 指纹只能由平台给(应用读不到 ro.serialno,见 Prefs 说明),扫码正好是最省事的传递方式
- MainActivity 加「扫码配置」按钮(原「配置」改名「手动配置」)
实机踩到的坑(已修):
- **相机必须在拿到权限后再打开**:surfaceCreated 早于权限回调触发,先开相机会报
"Fail to connect to camera service" 并把流程直接断掉(第一次实测就是这么挂的)
→ 改成 surfaceCreated 只记下 holder,授权回调里再开
- `params.previewSize = size` 编译不过:setPreviewSize 收的是两个 int 不是 Size 对象
实测(A07 / USB 连接):扫码 → 相机启动 → 解码 → 保存 → 立刻拉清单,
平台认出「A07」,全程无需打字、无需 adb。
This commit is contained in:
+8
-5
@@ -11,8 +11,8 @@ android {
|
||||
applicationId "com.example.deviceagent"
|
||||
minSdk 29 // Android 10;剪贴板限制就是从这一版开始的
|
||||
targetSdk 34
|
||||
versionCode 4
|
||||
versionName "1.3"
|
||||
versionCode 5
|
||||
versionName "1.4"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
@@ -42,8 +42,11 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// 刻意只引一个 androidx.core:只为 FileProvider(把下载的 APK 授权给系统安装器读)。
|
||||
// HTTP 用 HttpURLConnection、JSON 用 org.json(都是系统内置),不引网络/序列化库——
|
||||
// 依赖越少,构建越快、出问题越好排查。
|
||||
// 刻意只引两个:
|
||||
// androidx.core —— 只为 FileProvider(把下载的 APK 授权给系统安装器读)
|
||||
// zxing core —— 扫码配置用。**刻意不用 ML Kit**:那要 Google Play 服务,
|
||||
// 国内机型上普遍没有,扫码会直接不可用。
|
||||
// HTTP 用 HttpURLConnection、JSON 用 org.json(系统内置),不引网络/序列化库。
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
implementation 'com.google.zxing:core:3.5.3'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user