导入 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。
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user