Files
ios/Xuxucheck/XuXuCheck/Camera/CameraViewModel.swift
T
admin d6aeede2bc 导入 XuXuCheck 工程(iOS 干化学尿液试纸分析 App)
从桌面工程复制而来,作为本仓库的 Xuxucheck/ 子目录。

为控制仓库体积做了两处删减:
- 移除 Frameworks/opencv2.xcframework 下的两个 visionOS 切片
  (xros-arm64、xros-arm64-simulator,合计约 106 MB),并同步删掉该
  xcframework 内 Info.plist 里对应的两条 AvailableLibraries 记录,
  只保留 ios-arm64 与 ios-arm64_x86_64-simulator。
- 移除全部 .DS_Store 与 xcuserdata/。

已用 xcodebuild 从本目录完整编译验证:BUILD SUCCEEDED,
ProcessXCFramework 以 --platform ios 成功选中框架,产物含 3699 个 cv:: 符号
(OpenCV 确实链入),嵌入 framework 3 个,与移除无用 pod 之后的状态一致。

仓库约 206 MB,其中 OpenCV 203 MB、其余源码与依赖约 3 MB。
2026-09-23 14:17:31 +08:00

93 lines
2.0 KiB
Swift

//
// CameraViewModel.swift
// XuXuCheck
//
// Created by henseycai on 2025/6/25.
//
import Foundation
import CoreImage
@Observable
class CameraViewModel {
var currentFrame: CGImage?
var array3D: [[[Double]]] = []
var arrayPaperDesc: [Int] = [0,0,0,0]
var isSuccess: Bool = false
var isDataSent: Bool = false
var recordId: Int = 0
var recordResultModel: RecordResultModel? = nil
var xuxuError:XuXuRespError? = nil
var isNeedPopErr = false
private let cameraManager = CameraManager()
init() {
Task {
await handleCameraPreviews()
}
}
private func resetData(){
recordId = 0
isSuccess = false
isDataSent = false
isNeedPopErr = false
array3D = []
}
func startSession(){
//init data
resetData()
cameraManager.StartCapture()
}
func stopSession(){
cameraManager.StopCapture()
}
func handleCameraPreviews() async {
for await image in cameraManager.previewStream {
Task { @MainActor in
currentFrame = image
}
}
}
func recordDetailUrl() -> String{
let res = API.webrecordDetailUrl + GetGeneralRequestParams() + "&record_type=0&record_id=\(recordId)"
return res
}
func addRecord(desc: [Int]){
self.isDataSent = true
APIService.instance.addNewRecord(with: desc, with: array3D, completion: {(model,error) in
// debugPrint(desc[0])
// debugPrint(desc[1])
// debugPrint(desc[2])
if let error = error{
debugPrint(error)
self.xuxuError = error
self.isNeedPopErr = true
return
}
self.recordResultModel = model
self.recordId = model?.data?.record_id ?? 0
self.isSuccess = true
})
}
}