From: liangzhenying <867174124@qq.com> Date: Fri, 26 Dec 2025 03:39:24 +0000 (+0800) Subject: 骨传导移植 X-Git-Tag: 1.0.2~16 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=0668639d206d596b33cfc9b2d903d5f604dced6b;p=mirrors%2FShenYin.git 骨传导移植 --- diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift index 38635fd..15b9722 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift @@ -40,7 +40,7 @@ public class DCBleManager{ full.append(data) full.addCrc() if let connectPeripheral = connectPeripheral, let writeCha = writeCha { - DCLogger.debug("发",writeCha.uuid.uuidString,full.joined()) +// DCLogger.debug("发",writeCha.uuid.uuidString,full.joined()) connectPeripheral.writeValue(full, for: writeCha, type:.withoutResponse) } } @@ -85,7 +85,7 @@ public extension DCBleManager{ } func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { - DCLogger.debug("收 ",characteristic.uuid,characteristic.value?.joined() ?? "") +// DCLogger.debug("收 ",characteristic.uuid,characteristic.value?.joined() ?? "") guard let data = characteristic.value else { return } if data.count > 4 && data[0] == 0xBA { if let sender = BleSender.answer(data) { diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift index 6c9509c..e843021 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift @@ -18,7 +18,7 @@ public class DeepChordsAiSdk{ StarburstConfig.shared().switch(to: .ble) StarburstConfig.shared().appId = "prjzVnOEpKL1N" - StarburstConfig.shared().isDebug = true + StarburstConfig.shared().isDebug = false //MARK: 配置缓存路径 StarburstConfig.shared().sdkFolder = NSTemporaryDirectory() // StarburstConfig.shared().sdkFolder = NSHomeDirectory() + "/Documents/DeepChordsSdk" diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/BleManager.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/BleManager.swift index 16fa09a..433442e 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/BleManager.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/BleManager.swift @@ -5,13 +5,6 @@ // Created by liangshi on 2025/11/24. // -// -// Untitled.swift -// ShenYin -// -// Created by liangshi on 2025/8/28. -// - import UIKit import CoreBluetooth import DeepChordsSdk @@ -117,7 +110,11 @@ extension BleManager:CBCentralManagerDelegate{ extension BleManager: CBPeripheralDelegate { func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { - DCBleManager.shared.peripheral(peripheral, didDiscoverServices: error) +// DCBleManager.shared.peripheral(peripheral, didDiscoverServices: error) + for service in peripheral.services! { + DCLogger.debug("peripheral service: %@", service) + peripheral.discoverCharacteristics(nil, for: service) + } } func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { diff --git a/ShenYin/ShenYin/Cache/AiLanguageCache.swift b/ShenYin/ShenYin/Cache/AiLanguageCache.swift index 1072be0..02b0ae2 100644 --- a/ShenYin/ShenYin/Cache/AiLanguageCache.swift +++ b/ShenYin/ShenYin/Cache/AiLanguageCache.swift @@ -17,13 +17,13 @@ enum AiLanguageCacheType:String{ } class AiLanguageCache{ - static func save(type:AiLanguageCacheType, lan:AiSupportLanguage){ + static func save(type:AiLanguageCacheType, lan:CCAiLanguage){ UserDefaults.standard.set(lan.rawValue, forKey: type.rawValue) UserDefaults.standard.synchronize() } - static func get(type:AiLanguageCacheType)->AiSupportLanguage?{ + static func get(type:AiLanguageCacheType)->CCAiLanguage?{ if let value = UserDefaults.standard.value(forKey: type.rawValue),let text = value as? String { - return AiSupportLanguage(rawValue: text) + return CCAiLanguage(rawValue: text) } return nil } diff --git a/ShenYin/ShenYin/Cache/RecordDetailModel.swift b/ShenYin/ShenYin/Cache/RecordDetailModel.swift index b1cdcd7..5c1e182 100644 --- a/ShenYin/ShenYin/Cache/RecordDetailModel.swift +++ b/ShenYin/ShenYin/Cache/RecordDetailModel.swift @@ -68,8 +68,8 @@ class RecordDetailModel:NSObject, NSCoding{ } required init?(coder: NSCoder) { - from = AiSupportLanguage(rawValue: coder.decodeObject(forKey: "from") as! String) ?? .chinse - to = AiSupportLanguage(rawValue: coder.decodeObject(forKey: "to") as! String) ?? .english + from = CCAiLanguage(rawValue: coder.decodeObject(forKey: "from") as! String) ?? .chinse + to = CCAiLanguage(rawValue: coder.decodeObject(forKey: "to") as! String) ?? .english type = RecordType(rawValue: coder.decodeObject(forKey: "type") as! String) ?? .present origin = coder.decodeObject(forKey: "origin") as? String ?? "" translate = coder.decodeObject(forKey: "translate") as? String ?? "" @@ -81,8 +81,8 @@ class RecordDetailModel:NSObject, NSCoding{ favorite = coder.decodeObject(forKey: "favorite") as? String ?? "" } var type:RecordType = .present - var from:AiSupportLanguage = .chinse - var to:AiSupportLanguage = .english + var from:CCAiLanguage = .chinse + var to:CCAiLanguage = .english var path = "" var name = "" var duration = 0 diff --git a/ShenYin/ShenYin/Cache/UserModel.swift b/ShenYin/ShenYin/Cache/UserModel.swift index 34a5ac3..72b217c 100644 --- a/ShenYin/ShenYin/Cache/UserModel.swift +++ b/ShenYin/ShenYin/Cache/UserModel.swift @@ -41,7 +41,7 @@ extension UserModel{ self.token = nil self.info = UserInfo() UserCache.shared.remove() - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() NotificationManager.post(type: .logout, objtect: nil) App.shared.goToLogin() } diff --git a/ShenYin/ShenYin/JoySdk/AiSupportLanguage.swift b/ShenYin/ShenYin/Sdk/CCAiSupportLanguage.swift similarity index 95% rename from ShenYin/ShenYin/JoySdk/AiSupportLanguage.swift rename to ShenYin/ShenYin/Sdk/CCAiSupportLanguage.swift index 9a55953..b9520c9 100644 --- a/ShenYin/ShenYin/JoySdk/AiSupportLanguage.swift +++ b/ShenYin/ShenYin/Sdk/CCAiSupportLanguage.swift @@ -8,7 +8,7 @@ import Foundation import JoyGemAI -enum AiSupportLanguage:String{ +enum CCAiLanguage:String{ case chinse = "chinse" case english = "english" case japanese = "japanese" @@ -25,10 +25,10 @@ enum AiSupportLanguage:String{ case Arabic = "Arabic" case Vietnam = "Vietnam" - static var chinse2english:[AiSupportLanguage]{ + static var chinse2english:[CCAiLanguage]{ return [.chinse,.english] } - static var translate:[AiSupportLanguage]{ + static var translate:[CCAiLanguage]{ return [.chinse,.english,.japanese,.korean,.french,.spanish,.portuguese,.indonesian,.russian,.malay,German,Filipino,thai,Arabic,Vietnam] } var title:String{ diff --git a/ShenYin/ShenYin/JoySdk/JoyBleManager.swift b/ShenYin/ShenYin/Sdk/CCBleManager.swift similarity index 87% rename from ShenYin/ShenYin/JoySdk/JoyBleManager.swift rename to ShenYin/ShenYin/Sdk/CCBleManager.swift index c9b1317..4e13a15 100644 --- a/ShenYin/ShenYin/JoySdk/JoyBleManager.swift +++ b/ShenYin/ShenYin/Sdk/CCBleManager.swift @@ -1,8 +1,8 @@ // -// Untitled.swift +// CCBleManager.swift // ShenYin // -// Created by liangshi on 2025/8/28. +// Created by liangshi on 2025/12/25. // import UIKit @@ -23,7 +23,7 @@ class DCPeripheral{ } } -class JoyBleManager: NSObject { +class CCBleManager: NSObject { var discoverDeviceCallback: (([DCPeripheral]) -> Void)? var didConnectDeviceCallback: ((DCPeripheral) -> Void)? var conetedFailureCallback: ((DCPeripheral) -> Void)? @@ -31,7 +31,7 @@ class JoyBleManager: NSObject { private var centralManager: CBCentralManager! var devices: [DCPeripheral] = [] var connectPeripheral: DCPeripheral? - static let shared = JoyBleManager() + static let shared = CCBleManager() var isConnetd:Bool = false private override init() { @@ -39,7 +39,7 @@ class JoyBleManager: NSObject { centralManager = CBCentralManager(delegate: self, queue: nil) } } -extension JoyBleManager:CBCentralManagerDelegate{ +extension CCBleManager:CBCentralManagerDelegate{ func centralManagerDidUpdateState(_ central: CBCentralManager) { Logger.debug("蓝牙状态",central.state.rawValue) switch central.state { @@ -56,7 +56,7 @@ extension JoyBleManager:CBCentralManagerDelegate{ NotificationManager.post(type: .deviceValidChange, objtect: nil) break case.poweredOn: -// startScanDevice() + // startScanDevice() checkConectState() break @unknown default: @@ -111,14 +111,13 @@ extension JoyBleManager:CBCentralManagerDelegate{ } } -extension JoyBleManager: CBPeripheralDelegate { +extension CCBleManager: CBPeripheralDelegate { func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { Logger.debug("发现服务成功") for service in peripheral.services! { Logger.debug("peripheral service: %@", service) peripheral.discoverCharacteristics(nil, for: service) } - } func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { @@ -148,7 +147,7 @@ extension JoyBleManager: CBPeripheralDelegate { } func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { -// Logger.debug("收到数据 ===uUId ",characteristic.uuid) + // Logger.debug("收到数据 ===uUId ",characteristic.uuid) if App.shared.isJoy { if OtaMananger.isOtadata(characteristic){ if let _ = characteristic.value,error == nil { @@ -177,19 +176,19 @@ extension JoyBleManager: CBPeripheralDelegate { } } -extension JoyBleManager{ +extension CCBleManager{ func startScanDevice() { -// centralManager.stopScan() + // centralManager.stopScan() Logger.debug("扫描中...") Logger.debug("蓝牙状态",centralManager.state.rawValue) devices = [] -// let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: kJoyGemAIServiceUUID)]) -// Logger.debug("已连接设备",list) -// for item in list { -// if let mac = DeviceCache.shared.getMac(item.identifier.uuidString){ -// devices.append(DCPeripheral(device: item,mac: mac)) -// } -// } + // let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: kJoyGemAIServiceUUID)]) + // Logger.debug("已连接设备",list) + // for item in list { + // if let mac = DeviceCache.shared.getMac(item.identifier.uuidString){ + // devices.append(DCPeripheral(device: item,mac: mac)) + // } + // } if App.shared.isJoy { centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) } @@ -226,7 +225,7 @@ extension JoyBleManager{ } } -extension JoyBleManager{ +extension CCBleManager{ func joySdkSend(_ data: Data, with characteristic: CBCharacteristic) { if let connectPeripheral = connectPeripheral{ connectPeripheral.device.writeValue(data, for: characteristic, type:.withoutResponse) @@ -234,7 +233,7 @@ extension JoyBleManager{ } } -extension JoyBleManager{ +extension CCBleManager{ func isConected(mac:String)->Bool{ guard let device = connectPeripheral else { return false } if device.mac == mac { @@ -245,29 +244,29 @@ extension JoyBleManager{ } } -// #连接有问题,应当获取设置里面已连接的设备 + // #连接有问题,应当获取设置里面已连接的设备 func connect(mac:String, finished:@escaping ((Bool) -> Void)){ - JoyBleManager.shared.cancel() - JoyBleManager.shared.discoverDeviceCallback = { list in + CCBleManager.shared.cancel() + CCBleManager.shared.discoverDeviceCallback = { list in if list.count <= 0 { return } for item in list { if item.mac == mac { - JoyBleManager.shared.connectPeripheral(item) + CCBleManager.shared.connectPeripheral(item) break } } } - JoyBleManager.shared.didConnectDeviceCallback = { device in + CCBleManager.shared.didConnectDeviceCallback = { device in finished(true) } - JoyBleManager.shared.conetedFailureCallback = { device in + CCBleManager.shared.conetedFailureCallback = { device in finished(false) } - JoyBleManager.shared.startScanDevice() + CCBleManager.shared.startScanDevice() } - + func checkSettingsConnected()->[CBPeripheral]{ let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)]) Logger.debug("已连接设备",list) @@ -275,7 +274,7 @@ extension JoyBleManager{ } } -extension JoyBleManager{ +extension CCBleManager{ func checkConectState(){ guard let mac = connectPeripheral?.mac else { return diff --git a/ShenYin/ShenYin/JoySdk/JoyDevice.swift b/ShenYin/ShenYin/Sdk/CCDevice.swift similarity index 94% rename from ShenYin/ShenYin/JoySdk/JoyDevice.swift rename to ShenYin/ShenYin/Sdk/CCDevice.swift index 6e18539..39d1d46 100644 --- a/ShenYin/ShenYin/JoySdk/JoyDevice.swift +++ b/ShenYin/ShenYin/Sdk/CCDevice.swift @@ -1,8 +1,8 @@ // -// JoyDevice.swift +// Device.swift // ShenYin // -// Created by liangshi on 2025/12/5. +// Created by liangshi on 2025/12/25. // import JoyGemAI @@ -87,7 +87,7 @@ enum FindType:Int{ } } -class JoyDevice{ +class CCDevice{ static func findHeadphone(_ mode:FindType){ JoyGemAIManager.shared().device.findHeadphone(mode.value) { err in Logger.debug("findHeadphone:\(err)"); @@ -129,7 +129,7 @@ class JoyDevice{ } } } -extension JoyDevice{ +extension CCDevice{ static func getMac(finished:@escaping ((_ mac:String?)->Void)) { JoyGemAIManager.shared().device.macAddress { edr, ble in Logger.debug("edr:\(edr),ble:\(ble)"); @@ -140,10 +140,6 @@ extension JoyDevice{ } } static func getDN(finished:@escaping ((_ mac:String?)->Void)) { - // DispatchQueue.main.asyncAfter(deadline:.now() + 2) { - // print("延迟2秒后执行") - // - // } JoyGemAIManager.shared().device.getDN { deviceName in finished(deviceName) } error: { error in diff --git a/ShenYin/ShenYin/Sdk/CCRole.swift b/ShenYin/ShenYin/Sdk/CCRole.swift new file mode 100644 index 0000000..953f1b9 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/CCRole.swift @@ -0,0 +1,17 @@ +// +// CCRole.swift +// ShenYin +// +// Created by liangshi on 2025/12/26. +// + +public class CCRole{ + /// 音色id + public var sid:String = "" + /// 名称 + public var name:String = "" + /// 类型 + public var type:String = "" + /// 角色 + public var role:String = "" +} diff --git a/ShenYin/ShenYin/Sdk/CCSdkManager.swift b/ShenYin/ShenYin/Sdk/CCSdkManager.swift new file mode 100644 index 0000000..fe99743 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/CCSdkManager.swift @@ -0,0 +1,12 @@ +// +// CCSdkManager.swift +// ShenYin +// +// Created by liangshi on 2025/12/25. +// + +class CCSdkManager { + + + +} diff --git a/ShenYin/ShenYin/DcSdk/BleManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/BleManager.swift similarity index 100% rename from ShenYin/ShenYin/DcSdk/BleManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/BleManager.swift diff --git a/ShenYin/ShenYin/DcSdk/DCChatManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/DCChatManager.swift similarity index 100% rename from ShenYin/ShenYin/DcSdk/DCChatManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/DCChatManager.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DCChatVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/DCChatVC.swift new file mode 100644 index 0000000..51d58a7 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/DcSdk/DCChatVC.swift @@ -0,0 +1,218 @@ +//// +//// DCChatVC.swift +//// ShenYin +//// +//// Created by liangshi on 2025/12/26. +//// +// +//import UIKit +//import AVFAudio +//import DeepChordsSdk +//class DCChatVC:BaseVC{ +// let rightItem = ChatNavigationBarItem(frame: CGRect(x: 0, y: 0, width: 80, height: 44)) +// let roleItem = ChatRoleItem(frame: CGRect(x: 0, y: 0, width: 100, height: 44)) +// +// let toolBar = ChatRecordBar() +// let tableView = UITableView(frame: CGRectZero, style: .plain) +// let headerView = ChatHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 260)) +// let tipsLabel = UILabel() +// +// var roleList:[DCRole] = [] +// +// deinit { +// PcmSound.sharedInstance().stopAudioUnit() +// PcmSound.sharedInstance().cleanup() +// } +// +// override func viewDidLoad() { +// super.viewDidLoad() +// } +// override func setupViews() { +// +// navBar.rightView.isHidden = true +// navBar.addSubviews([roleItem,rightItem]) +// roleItem.yc.addTap(target: self, action: #selector(roleBtnAction)) +// rightItem.yc.addTap(target: self, action: #selector(rightBtnAction)) +// +// tableView.backgroundColor = .clear +// tableView.delegate = self +// tableView.dataSource = self +// tableView.estimatedRowHeight = 60 +// tableView.separatorStyle = .none +// tableView.register(ChatCell.self, forCellReuseIdentifier: ChatCell.reuseID) +// tableView.tableHeaderView = headerView +// +// view.addSubviews([tableView,toolBar,tipsLabel]) +// toolBar.delegate = self +// +// tipsLabel.do { v in +// v.text = "内容由AI生成,请仔细甄别".l10n +// v.font = .regular(10) +// v.textColor = .hexString("#919191") +// } +// } +// override func setupLayout() { +// rightItem.snp.makeConstraints { (m) in +// m.top.equalTo(kNavTop) +// m.bottom.equalToSuperview() +// m.width.greaterThanOrEqualTo(80) +// m.right.equalToSuperview() +// } +// roleItem.snp.makeConstraints { (m) in +// m.top.equalTo(kNavTop) +// m.bottom.equalToSuperview() +// m.width.greaterThanOrEqualTo(80) +// m.left.equalToSuperview().inset(48) +// } +// toolBar.snp.makeConstraints { make in +// make.width.centerX.equalToSuperview() +// make.height.equalTo(52) +// make.bottom.equalToSuperview().inset(35) +// } +// tipsLabel.snp.makeConstraints { make in +// make.top.equalTo(toolBar.snp.bottom).offset(4) +// make.centerX.equalToSuperview() +// } +// tableView.snp.makeConstraints { make in +// make.top.equalToSuperview().inset(kNavBtm) +// make.left.right.equalToSuperview() +// make.bottom.equalTo(toolBar.snp.top) +// } +// } +// override func setupData() { +// DCChatManager.shared.chatNeedReloadData = {[weak self] in +// guard let self = self else{return} +// tableView.reloadData() +// if DCChatManager.shared.dataList.count > 0 { +// tableView.scrollToRow(at: IndexPath(row: DCChatManager.shared.dataList.count - 1, section: 0), at: .none, animated: true) +// } +// } +// DCChatManager.shared.codeCallback = { [weak self] code in +// guard let self = self else{return} +// if code == 20001 { +// toolBar.recordBtn.state = .start +// } +// else if code == 20002 || code == 20003{ +// toolBar.recordBtn.state = .finish +// } +// +// } +// DCChatManager.shared.finishCallback = { [weak self] path in +// guard let self = self else{return} +// // self.recordBtn.isSelected = false +// } +// +// +// refreshData() +// loadRoleList() +// } +// override func viewWillDisappear(_ animated: Bool) { +// super.viewWillDisappear(animated) +// +// ///结束对话,但并不会终止正在播放的录音 +// DCChatManager.shared.stopChat() +// +// } +// override func viewDidAppear(_ animated: Bool) { +// super.viewDidAppear(animated) +// refreshData() +// } +// override func viewDidDisappear(_ animated: Bool) { +// super.viewDidDisappear(animated) +// ChatCache.shared.saveList(JoySdkManager.shared.chat.dataList) +// } +// +// @objc func rightBtnAction() { +// App.shared.goToPage(IntelligentVC()) +// } +// @objc func roleBtnAction(){ +// if roleList.count == 0 { +// loadRoleList() +// return +// } +// let vc = RoleListVC(list: roleList, selectedModel: roleItem.role) {[weak self] model in +// guard let self = self else{return} +// roleItem.role = model +// headerView.update(name: model.name, role: model.role) +// JoyGemChatManager.shared().setSpeaker(model) +// } +// App.shared.goToPage(vc) +// } +// func refreshData(){ +// tableView.reloadData() +// if JoySdkManager.shared.chat.dataList.count > 0 { +// tableView.scrollToRow(at: IndexPath(row: JoySdkManager.shared.chat.dataList.count - 1, section: 0), at: .none, animated: true) +// } +// } +// func loadRoleList(){ +// DCChatManager.shared.getVcSpeekerList {[weak self] speakers in +// guard let self = self,speakers.count > 0 else{return} +// self.roleList = speakers +// self.roleList.insert(xiaoYinRole(), at: 0) +// +// var currentRole = roleList.first +// if let cacheRole = RoleCache.get(){ +// for item in roleList{ +// if item.role == cacheRole { +// currentRole = item +// break +// } +// } +// } +// self.roleItem.role = currentRole +// self.headerView.update(name: self.roleItem.role.name, role: self.roleItem.role.role) +// JoyGemChatManager.shared().setSpeaker(self.roleItem.role) +// } +// } +// func xiaoYinRole()->JoyGemSpeaker{ +// let model = JoyGemSpeaker() +// model.sid = "zh_female_tianmeitaozi_mars_bigtts" +// model.name = "小音" +// model.type = "default" +// model.role = "test_xiaoyin" +// return model +// } +//} +// +//extension DCChatVC:ChatRecordBarDelegate{ +// func recordBarCancel(_ toolBar: ChatRecordBar) { +// // JoyGemChatManager.shared().stopChat() +// JoyGemChatManager.shared().stopSingleChat() +// if let item = JoySdkManager.shared.chat.dataList.last,item.content.isEmpty{ +// JoySdkManager.shared.chat.dataList.removeLast() +// refreshData() +// } +// } +// +// func recordBarStart(_ toolBar: ChatRecordBar) { +// // let model = ChatCellModel() +// // model.type = 1 +// // model.content = "" +// // model.id = -1 +// // JoySdkManager.shared.dataList.append(model) +// // refreshData() +// +// // JoyGemChatManager.shared().stopChat() +// JoyGemChatManager.shared().startSingleChat() +// DCChatManager.shared.startChat() +// } +// +// func recordBarStop(_ toolBar: ChatRecordBar) { +// JoyGemChatManager.shared().stopSingleChat() +// } +//} +// +//extension DCChatVC:UITableViewDelegate,UITableViewDataSource { +// func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { +// return JoySdkManager.shared.chat.dataList.count +// } +// +// func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { +// let cell = ChatCell.cell(withTableView: tableView, indexPath: indexPath) +// cell.data = JoySdkManager.shared.chat.dataList[indexPath.row] +// return cell +// } +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// +// } +//} diff --git a/ShenYin/ShenYin/DcSdk/DCSdkManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/DCSdkManager.swift similarity index 60% rename from ShenYin/ShenYin/DcSdk/DCSdkManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/DCSdkManager.swift index 71d1d0f..0ca4e8a 100644 --- a/ShenYin/ShenYin/DcSdk/DCSdkManager.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/DCSdkManager.swift @@ -8,21 +8,32 @@ import DeepChordsSdk class DCSdkManager{ static let shared = DCSdkManager() + public var authCallback:((_ success:Bool)->Void)? func initSdk(){ DeepChordsAiSdk.shared.initSDK() + DeepChordsAiSdk.shared.authCallback = {[weak self] (code,msg)in + DCLogger.debug(code,msg) + guard let self = self else{return} + if code == 200{ + joyGemAuthSuccessCallback() + } + else{ + joyGemAuthFailedCallback() + } + } // DCRecordManager.shared.setupRecord() DCChatManager.shared.setupChat() DCDevice.shared.eventCallback = { event in switch event { case 0x01: -// if let vc = App.shared.topVC() as? ChatVC { -// // vc.startRecord() -// }else{ -// App.shared.goToPage(ChatVC()) -// } + if let vc = App.shared.topVC() as? ChatVC { + // vc.startRecord() + }else{ + App.shared.goToPage(ChatVC()) + } break case 0x02: // if let vc = App.shared.topVC() as? ChatVC { @@ -50,6 +61,21 @@ class DCSdkManager{ } } } + func joyGemAuthFailedCallback() { + Logger.debug("鉴权失败") + YLprogressHUD.showAutoHiden("鉴权失败") + } + func joyGemAuthSuccessCallback() { + Logger.debug("鉴权成功") + App.shared.preparePlay() + + DeviceCache.saveLastConnected(mac: CCBleManager.shared.connectPeripheral!.mac) + DeviceCache.shared.add(CCBleManager.shared.connectPeripheral!.device.identifier.uuidString, mac: CCBleManager.shared.connectPeripheral!.mac) + CCBleManager.shared.isConnetd = true + CCBleManager.shared.didConnectDeviceCallback?(CCBleManager.shared.connectPeripheral!) + NotificationManager.post(type: .deviceValidChange, objtect: nil) + DeviceVM.updateOtaVersion() + } } extension DCSdkManager{ static func getMac(_ dict:[String:Any])->String?{ diff --git a/ShenYin/ShenYin/JoySdk/JoyCallRecord.swift b/ShenYin/ShenYin/Sdk/JoySdk/JoyCallRecord.swift similarity index 98% rename from ShenYin/ShenYin/JoySdk/JoyCallRecord.swift rename to ShenYin/ShenYin/Sdk/JoySdk/JoyCallRecord.swift index ed725e5..0838801 100644 --- a/ShenYin/ShenYin/JoySdk/JoyCallRecord.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyCallRecord.swift @@ -41,7 +41,7 @@ class JoyCallRecord:NSObject{ } - func setCallRecoordLanage(_ language:AiSupportLanguage){ + func setCallRecoordLanage(_ language:CCAiLanguage){ JoyGemCallManager.shared().originalLanguage = language.value } func callRecordStart(){ diff --git a/ShenYin/ShenYin/JoySdk/JoyChat.swift b/ShenYin/ShenYin/Sdk/JoySdk/JoyChat.swift similarity index 100% rename from ShenYin/ShenYin/JoySdk/JoyChat.swift rename to ShenYin/ShenYin/Sdk/JoySdk/JoyChat.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyDevice.swift b/ShenYin/ShenYin/Sdk/JoySdk/JoyDevice.swift new file mode 100644 index 0000000..316c6be --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyDevice.swift @@ -0,0 +1,162 @@ +//// +//// CCDevice.swift +//// ShenYin +//// +//// Created by liangshi on 2025/12/5. +//// +//import JoyGemAI +// +//enum ModeEffectsType:Int{ +// case normal +// case fashion +// case classic +// case rock +// case jazz +// case custom +// +// var title:String{ +// switch self { +// case .normal: +// return "正常".l10n +// case .fashion: +// return "流行".l10n +// case .classic: +// return "经典".l10n +// case .rock: +// return "摇滚".l10n +// case .jazz: +// return "爵士".l10n +// case .custom: +// return "自定义".l10n +// } +// } +// var img:String{ +// switch self { +// case .normal: +// return "mode_normal" +// case .fashion: +// return "mode_fashion" +// case .classic: +// return "mode_classic" +// case .rock: +// return "mode_rock" +// case .jazz: +// return "mode_jazz" +// case .custom: +// return "mode_custom" +// } +// } +// var value:JoyGemEQMode{ +// switch self { +// case .normal: +// return .normal +// case .fashion: +// return .pop +// case .classic: +// return .classic +// case .rock: +// return .rock +// case .jazz: +// return .jazz +// case .custom: +// return .custom +// } +// } +// +// static var all:[ModeEffectsType]{ +// return [.normal,.fashion,.classic,.rock,.jazz,.custom] +// } +//} +// +//enum FindType:Int{ +// case left +// case right +// case all +// case cancel +// var value:JoyGemFindHeadphoneMode{ +// switch self { +// case .left: +// return .left +// case .right: +// return .right +// case .cancel: +// return .cancel +// case .all: +// return .all +// } +// } +//} +// +//class CCDevice{ +// static func findHeadphone(_ mode:FindType){ +// JoyGemAIManager.shared().device.findHeadphone(mode.value) { err in +// Logger.debug("findHeadphone:\(err)"); +// } +// } +// static func getEQMode(finished:@escaping (ModeEffectsType?)->Void){ +// JoyGemAIManager.shared().device.getEQMode { mode in +// let type = ModeEffectsType.all.first(where: {$0.value == mode}) ?? .normal +// finished(type) +// } error: { err in +// Logger.debug("getEQMode:\(err)"); +// finished(nil) +// } +// } +// static func setEQMode(_ type:ModeEffectsType){ +// JoyGemAIManager.shared().device.setEQMode(type.value) { err in +// Logger.debug("setEQMode:\(err)"); +// } +// } +// +// +// static func getCustomEQ(finished:@escaping ([NSNumber]?)->Void){ +// JoyGemAIManager.shared().device.getCustomEQ { eq in +// Logger.debug("getCustomEQ:\(eq)"); +// finished(eq.bands) +// } error: { err in +// Logger.debug("getCustomEQ:\(err)"); +// finished(nil) +// } +// } +// static func resetCustomEQ(){ +// JoyGemAIManager.shared().device.resetCustomEQ { err in +// Logger.debug("resetCustomEQ:\(err)"); +// } +// } +// static func setCustomEQ(index:Int,value:Int){ +// JoyGemAIManager.shared().device.setCustomEQ(UInt(index), withGain: value) { err in +// Logger.debug("setCustomEQ:\(err)"); +// } +// } +//} +//extension CCDevice{ +// static func getMac(finished:@escaping ((_ mac:String?)->Void)) { +// JoyGemAIManager.shared().device.macAddress { edr, ble in +// Logger.debug("edr:\(edr),ble:\(ble)"); +// finished(edr.uppercased()) +// } error: { error in +// Logger.debug("\(error!.localizedDescription)") +// finished(nil) +// } +// } +// static func getDN(finished:@escaping ((_ mac:String?)->Void)) { +// // DispatchQueue.main.asyncAfter(deadline:.now() + 2) { +// // print("延迟2秒后执行") +// // +// // } +// JoyGemAIManager.shared().device.getDN { deviceName in +// finished(deviceName) +// } error: { error in +// Logger.debug("获取dn失败","\(error!.localizedDescription)") +// finished(nil) +// } +// } +// static func getVersion(finished:@escaping ((_ version:String?)->Void)) { +// JoyGemAIManager.shared().device.software { version in +// finished(version) +// } error: { error in +// Logger.debug("\(error!.localizedDescription)"); +// finished(nil) +// } +// } +//} diff --git a/ShenYin/ShenYin/JoySdk/JoyRecord.swift b/ShenYin/ShenYin/Sdk/JoySdk/JoyRecord.swift similarity index 98% rename from ShenYin/ShenYin/JoySdk/JoyRecord.swift rename to ShenYin/ShenYin/Sdk/JoySdk/JoyRecord.swift index a1f218e..e5e0caa 100644 --- a/ShenYin/ShenYin/JoySdk/JoyRecord.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyRecord.swift @@ -19,7 +19,7 @@ class JoyRecord:NSObject{ JoyGemRecordManager.shared().delegate = self } - func setRecoordLanage(_ language:AiSupportLanguage){ + func setRecoordLanage(_ language:CCAiLanguage){ JoyGemRecordManager.shared().originalLanguage = language.value } func recordStart(){ diff --git a/ShenYin/ShenYin/JoySdk/JoySdkManager.swift b/ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift similarity index 94% rename from ShenYin/ShenYin/JoySdk/JoySdkManager.swift rename to ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift index edbfc54..4149aa3 100644 --- a/ShenYin/ShenYin/JoySdk/JoySdkManager.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift @@ -118,10 +118,10 @@ extension JoySdkManager : JoyGemAIManagerDelegate { Logger.debug("鉴权成功") App.shared.preparePlay() - DeviceCache.saveLastConnected(mac: JoyBleManager.shared.connectPeripheral!.mac) - DeviceCache.shared.add(JoyBleManager.shared.connectPeripheral!.device.identifier.uuidString, mac: JoyBleManager.shared.connectPeripheral!.mac) - JoyBleManager.shared.isConnetd = true - JoyBleManager.shared.didConnectDeviceCallback?(JoyBleManager.shared.connectPeripheral!) + DeviceCache.saveLastConnected(mac: CCBleManager.shared.connectPeripheral!.mac) + DeviceCache.shared.add(CCBleManager.shared.connectPeripheral!.device.identifier.uuidString, mac: CCBleManager.shared.connectPeripheral!.mac) + CCBleManager.shared.isConnetd = true + CCBleManager.shared.didConnectDeviceCallback?(CCBleManager.shared.connectPeripheral!) NotificationManager.post(type: .deviceValidChange, objtect: nil) DeviceVM.updateOtaVersion() } @@ -187,7 +187,7 @@ extension JoySdkManager : JoyGemAIManagerDelegate { extension JoySdkManager : JoyGemAIManagerDataSource { func joyGemSend(_ data: Data, with characteristic: CBCharacteristic) { // print("发送",data.map { String($0) }.joined(separator: "")) - JoyBleManager.shared.joySdkSend(data, with: characteristic) + CCBleManager.shared.joySdkSend(data, with: characteristic) } } diff --git a/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift b/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift index 2c4c69a..9f92411 100644 --- a/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift +++ b/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift @@ -152,7 +152,7 @@ class CallingRecordVC:BaseVC{ } extension CallingRecordVC:FieldRecordBarDelegate{ - func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: AiSupportLanguage) { + func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: CCAiLanguage) { JoySdkManager.shared.callRecord.setCallRecoordLanage(language) AiLanguageCache.save(type: .thly, lan: language) } diff --git a/ShenYin/ShenYin/UI/Home/Device/HomeDeviceCell.swift b/ShenYin/ShenYin/UI/Home/Device/HomeDeviceCell.swift index aec110b..72b72d5 100644 --- a/ShenYin/ShenYin/UI/Home/Device/HomeDeviceCell.swift +++ b/ShenYin/ShenYin/UI/Home/Device/HomeDeviceCell.swift @@ -20,7 +20,7 @@ class HomeDeviceCell: BaseCollectionViewCell { icon.kf.setImage(with: model.image.yc.asUrl) - if JoyBleManager.shared.isConected(mac: model.mac) { + if CCBleManager.shared.isConected(mac: model.mac) { valueLabel.text = "已连接".l10n bgView.alpha = 1 } diff --git a/ShenYin/ShenYin/UI/Home/Device/HomeDeviceVC.swift b/ShenYin/ShenYin/UI/Home/Device/HomeDeviceVC.swift index 5e1166f..9e9fd95 100644 --- a/ShenYin/ShenYin/UI/Home/Device/HomeDeviceVC.swift +++ b/ShenYin/ShenYin/UI/Home/Device/HomeDeviceVC.swift @@ -87,7 +87,7 @@ class HomeDeviceVC:BaseVC{ func reloadData() { DeviceVM.shared.refresh {[weak self] result in self?.collectionView.reloadData() - if JoyBleManager.shared.isConnetd{ + if CCBleManager.shared.isConnetd{ return } var autoConnetced = false @@ -110,7 +110,7 @@ class HomeDeviceVC:BaseVC{ override func navRightViewTapped() { App.shared.goToPage(BleScanVC()) // App.shared.goToPage(CalendarPickerVC()) -// JoyBleManager.shared.checkSettingsConnected() +// CCBleManager.shared.checkSettingsConnected() // ChatCache.shared.LargeDateDemoSave() } @objc func editAction(){ @@ -134,12 +134,12 @@ class HomeDeviceVC:BaseVC{ guard let self = self else {return} if model.isSuccess{ YLprogressHUD.hidden() - if let mac0 = JoyBleManager.shared.connectPeripheral?.mac,let mac1 = DeviceCache.getLastConnected(),mac0 == mac1{ + if let mac0 = CCBleManager.shared.connectPeripheral?.mac,let mac1 = DeviceCache.getLastConnected(),mac0 == mac1{ DeviceCache.remove() } DeviceVM.shared.dataList.removeAll(where: {$0.deviceId == deviceModel.deviceId}) collectionView.reloadData() - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() reloadData() } else{ @@ -148,7 +148,7 @@ class HomeDeviceVC:BaseVC{ } } func startConectBle(_ model:HomeDeviceModel){ - JoyBleManager.shared.connect(mac: model.mac) { result in + CCBleManager.shared.connect(mac: model.mac) { result in } } @objc func deviceChange(_ noti:Notification){ diff --git a/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift b/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift index a91be95..e88f28c 100644 --- a/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift @@ -154,7 +154,7 @@ class DialogRecordBar: BaseView { if recordView.isBusy { return } - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: true,left: languageView.leftItem.language,right: languageView.rightItem.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: true,left: languageView.leftItem.language,right: languageView.rightItem.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == languageView.leftItem.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -173,7 +173,7 @@ class DialogRecordBar: BaseView { if recordView.isBusy{ return } - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: false,left: languageView.leftItem.language,right: languageView.rightItem.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: false,left: languageView.leftItem.language,right: languageView.rightItem.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == languageView.rightItem.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -268,13 +268,13 @@ class DialogRecordBar: BaseView { addSubviews([leftItem,rightItem]) leftItem.do { (v) in - v.language = AiSupportLanguage.chinse + v.language = CCAiLanguage.chinse v.yc.addTap(target: self, action: #selector(leftLanguageAction)) v.language = .chinse v.valueLabel.text = "耳机".l10n } rightItem.do { (v) in - v.language = AiSupportLanguage.english + v.language = CCAiLanguage.english v.yc.addTap(target: self, action: #selector(rightLanguageAction)) v.language = .english v.valueLabel.text = "手机".l10n @@ -299,7 +299,7 @@ class DialogRecordBar: BaseView { let titleLabel = UILabel() let valueLabel = UILabel() - var language:AiSupportLanguage = AiSupportLanguage.chinse{ + var language:CCAiLanguage = CCAiLanguage.chinse{ didSet{ titleLabel.text = language.title } diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift index 9869983..9dbae62 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift @@ -13,7 +13,7 @@ enum RecordSate:Int{ } protocol FieldRecordBarDelegate:NSObject { - func fieldRecordBar(_ bar:FieldRecordBar,languageChange language:AiSupportLanguage) + func fieldRecordBar(_ bar:FieldRecordBar,languageChange language:CCAiLanguage) func fieldRecordBar(_ bar:FieldRecordBar,stateChange state:RecordSate) } @@ -73,14 +73,14 @@ class FieldRecordBar: BaseView { if recordBtn.isSelected || recordBtn.activeView.animating { return } - let list = AiSupportLanguage.translate.map{$0.title} + let list = CCAiLanguage.translate.map{$0.title} let v = CustomPicker(title: "请选择语言".l10n, list:list ) v.selectedIndex = list.firstIndex(where: {leftItem.language.title == $0})! v.show() v.didSelected = {[weak self] (index,value) in guard let self = self else { return } - leftItem.language = AiSupportLanguage.translate.first(where: {$0.title == value})! + leftItem.language = CCAiLanguage.translate.first(where: {$0.title == value})! delegate?.fieldRecordBar(self, languageChange:leftItem.language) } return @@ -126,7 +126,7 @@ class FieldRecordBar: BaseView { class RecordBarItem: BaseView { private let icon = UIImageView() private let titleLabel = UILabel() - var language:AiSupportLanguage = .chinse{ + var language:CCAiLanguage = .chinse{ didSet{ titleLabel.text = language.title } diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift index 2c8d63b..2a41fb7 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift @@ -134,7 +134,7 @@ class FieldRecordingVC:BaseVC{ } extension FieldRecordingVC:FieldRecordBarDelegate{ - func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: AiSupportLanguage) { + func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: CCAiLanguage) { JoySdkManager.shared.record.setRecoordLanage(language) AiLanguageCache.save(type: .xcly, lan: language) } diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift index 36c832d..799ec62 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift @@ -43,12 +43,12 @@ class RecordBar: BaseView { v.addTarget(self, action: #selector(recordBtnAction), for: .touchUpInside) } leftItem.do { (v) in - v.language = AiSupportLanguage.chinse + v.language = CCAiLanguage.chinse v.yc.addTap(target: self, action: #selector(leftAction)) } rightItem.do { (v) in - v.language = AiSupportLanguage.english + v.language = CCAiLanguage.english v.yc.addTap(target: self, action: #selector(rightAction)) } } @@ -111,7 +111,7 @@ class RecordBar: BaseView { if recordBtn.isSelected { return } - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: true,left: leftItem.language,right: rightItem.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: true,left: leftItem.language,right: rightItem.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == leftItem.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -135,7 +135,7 @@ class RecordBar: BaseView { if recordBtn.isSelected { return } - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: false,left: leftItem.language,right: rightItem.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: false,left: leftItem.language,right: rightItem.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == rightItem.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -155,7 +155,7 @@ class RecordBar: BaseView { let titleLabel = UILabel() let valueLabel = UILabel() - var language:AiSupportLanguage = AiSupportLanguage.chinse{ + var language:CCAiLanguage = CCAiLanguage.chinse{ didSet{ titleLabel.text = language.title } diff --git a/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/RecordShareVC.swift b/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/RecordShareVC.swift index cd43b28..c950855 100644 --- a/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/RecordShareVC.swift +++ b/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/RecordShareVC.swift @@ -169,8 +169,8 @@ extension RecordShareVC{ if result.isSuccess,let model = result.data.list.first{ localModel.origin = model.text localModel.translate = model.translateText - localModel.from = AiSupportLanguage(rawValue: model.sourceLanguage) ?? .chinse - localModel.to = AiSupportLanguage(rawValue: model.targetLanguage) ?? .english + localModel.from = CCAiLanguage(rawValue: model.sourceLanguage) ?? .chinse + localModel.to = CCAiLanguage(rawValue: model.targetLanguage) ?? .english self?.getRecordPath(filedId: remoteModel.fileId) { result in if let path = result{ diff --git a/ShenYin/ShenYin/UI/Home/RecordDetail/RecordDetailVC.swift b/ShenYin/ShenYin/UI/Home/RecordDetail/RecordDetailVC.swift index 86c1d1b..bcbafaa 100644 --- a/ShenYin/ShenYin/UI/Home/RecordDetail/RecordDetailVC.swift +++ b/ShenYin/ShenYin/UI/Home/RecordDetail/RecordDetailVC.swift @@ -272,8 +272,8 @@ class RecordDetailVC:BaseVC{ localModel.origin = model.text localModel.translate = model.translateText - localModel.from = AiSupportLanguage(rawValue: model.sourceLanguage) ?? .chinse - localModel.to = AiSupportLanguage(rawValue: model.targetLanguage) ?? .english + localModel.from = CCAiLanguage(rawValue: model.sourceLanguage) ?? .chinse + localModel.to = CCAiLanguage(rawValue: model.targetLanguage) ?? .english setupViews(data: localModel) } else{ @@ -304,7 +304,7 @@ extension RecordDetailVC:RecordDetailTopBarDelegate{ } extension RecordDetailVC:RecordDetailBarDelegate{ func recordDetailBarTranstlateAction(_ bar: RecordDetailBar) { - var list = AiSupportLanguage.translate.map{$0.title} + var list = CCAiLanguage.translate.map{$0.title} // list = list.filter { $0 != data!.from.title } let v = CustomPicker(title: "请选择语言".l10n, list:list ) @@ -313,7 +313,7 @@ extension RecordDetailVC:RecordDetailBarDelegate{ v.show() v.didSelected = {[weak self] (index,value) in guard let self = self else { return } - data!.to = AiSupportLanguage.translate.first(where: {$0.title == value})! + data!.to = CCAiLanguage.translate.first(where: {$0.title == value})! translateAction() if !topBar.tranlateItem.isSelected { topBar.tralateAction() diff --git a/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift b/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift index 2ff25d8..2251ded 100644 --- a/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift @@ -36,7 +36,7 @@ class CurrentDeviceView: BaseView { if let device = DeviceVM.shared.currentDevice{ imageView.kf.setImage(with: device.image.yc.asUrl) - if JoyBleManager.shared.isConnetd { + if CCBleManager.shared.isConnetd { alpha = 1 } else{ diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift index 77165c2..6a0367d 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift @@ -78,7 +78,7 @@ class HomeFunctionView: BaseView { var y = 0.0 for (index, value) in list.enumerated() { let view = HomeCell() - view.enable = JoyBleManager.shared.isConnetd + view.enable = CCBleManager.shared.isConnetd addSubview(view) view.type = value @@ -99,7 +99,7 @@ class HomeFunctionView: BaseView { @objc func deviceChange(_ noti:Notification){ for item in self.subviews{ if let view = item as? HomeCell { - view.enable = JoyBleManager.shared.isConnetd + view.enable = CCBleManager.shared.isConnetd } } } @@ -180,7 +180,7 @@ class HomeCell: BaseView { } } @objc func tapAction(){ - if !JoyBleManager.shared.isConnetd { + if !CCBleManager.shared.isConnetd { return } switch type { diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift b/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift index 4af2def..fcc0708 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift @@ -51,7 +51,7 @@ class HomeHeadView: BaseView { v.text = "AI" + "伙伴,随叫随到".l10n } arrowIcon.image = UIImage(named: "arrow_2") - self.enable = JoyBleManager.shared.isConnetd + self.enable = CCBleManager.shared.isConnetd NotificationManager.add(self, selector: #selector(deviceChange(_:)), forName: .deviceValidChange) } @@ -87,12 +87,12 @@ class HomeHeadView: BaseView { } @objc func chatAction(){ - if JoyBleManager.shared.isConnetd { + if CCBleManager.shared.isConnetd { App.shared.goToPage(ChatVC()) } } @objc func deviceChange(_ noti:Notification){ - self.enable = JoyBleManager.shared.isConnetd + self.enable = CCBleManager.shared.isConnetd } } diff --git a/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift b/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift index 40334fa..82d035b 100644 --- a/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift +++ b/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift @@ -46,7 +46,7 @@ class BleScanVC: BaseVC{ } } override func setupData() { - JoyBleManager.shared.discoverDeviceCallback = {[weak self] devices in + CCBleManager.shared.discoverDeviceCallback = {[weak self] devices in self?.list = devices self?.tableView.reloadData() if devices.count > 0 { diff --git a/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift b/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift index 647193b..e1e5a99 100644 --- a/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift +++ b/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift @@ -11,7 +11,7 @@ class DeviceVM:BaseVM{ var currentDevice:HomeDeviceModel?{ for item in dataList { - if let device = JoyBleManager.shared.connectPeripheral,device.mac == item.mac { + if let device = CCBleManager.shared.connectPeripheral,device.mac == item.mac { return item } } @@ -32,17 +32,17 @@ class DeviceVM:BaseVM{ extension DeviceVM{ static func startScan(){ - JoyBleManager.shared.startScanDevice() + CCBleManager.shared.startScanDevice() - JoyBleManager.shared.didConnectDeviceCallback = { device in + CCBleManager.shared.didConnectDeviceCallback = { device in self.getDeviceInfo(device) } - JoyBleManager.shared.conetedFailureCallback = { device in + CCBleManager.shared.conetedFailureCallback = { device in self.showError() } } static func stopScan(){ - JoyBleManager.shared.stopScanDevice() + CCBleManager.shared.stopScanDevice() } static func startConnecte(_ data:DCPeripheral){ guard let name = data.device.name else { @@ -58,7 +58,7 @@ extension DeviceVM{ ConnectPopView.shared.titleLabel.text = name ConnectPopView.shared.stateDidChange(.connecting) } - JoyBleManager.shared.connectPeripheral(data) + CCBleManager.shared.connectPeripheral(data) } } @@ -66,12 +66,12 @@ extension DeviceVM{ static func getDeviceInfo(_ device:DCPeripheral){ guard let prodName = device.device.name,prodName.count > 0 else{ showError() - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() return } - JoyDevice.getDN { dn in + CCDevice.getDN { dn in guard let deviceName = dn else{ - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() self.showError() return } @@ -94,7 +94,7 @@ extension DeviceVM{ } else{ self.showError() - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() } } } @@ -143,11 +143,11 @@ extension DeviceVM{ extension DeviceVM{ static func updateOtaVersion(){ - JoyDevice.getVersion { version in + CCDevice.getVersion { version in guard let v = version else{ return } - JoyDevice.getDN { dn in + CCDevice.getDN { dn in guard let deviceName = dn else{ return } @@ -163,7 +163,7 @@ extension DeviceVM{ } static func settingsConnected(){ - let list = JoyBleManager.shared.checkSettingsConnected() + let list = CCBleManager.shared.checkSettingsConnected() if list.count == 0{ CustomAlert.showWith(title: "提示", messgage: "请前往系统设置连接蓝牙") { diff --git a/ShenYin/ShenYin/UI/Home/StereoCallVC.swift b/ShenYin/ShenYin/UI/Home/StereoCallVC.swift index efea135..146ff75 100644 --- a/ShenYin/ShenYin/UI/Home/StereoCallVC.swift +++ b/ShenYin/ShenYin/UI/Home/StereoCallVC.swift @@ -197,7 +197,7 @@ class StereoCallVC:BaseVC{ } extension StereoCallVC:FieldRecordBarDelegate{ - func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: AiSupportLanguage) { + func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: CCAiLanguage) { JoySdkManager.shared.callRecord.setCallRecoordLanage(language) AiLanguageCache.save(type: .thly, lan: language) } @@ -220,7 +220,7 @@ extension StereoCallVC:FieldRecordBarDelegate{ JoySdkManager.shared.callRecord.callRecordStop() toolBar.startAnimating() } - func gotoDetail( fileName:String,wavPath:String,language:AiSupportLanguage){ + func gotoDetail( fileName:String,wavPath:String,language:CCAiLanguage){ let model = RecordDetailModel() model.type = .phone model.from = language diff --git a/ShenYin/ShenYin/UI/Mine/Device/DeviceInfoVC.swift b/ShenYin/ShenYin/UI/Mine/Device/DeviceInfoVC.swift index ab1367d..42b2f25 100644 --- a/ShenYin/ShenYin/UI/Mine/Device/DeviceInfoVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Device/DeviceInfoVC.swift @@ -179,7 +179,7 @@ fileprivate class FooterView: BaseView { if model.isSuccess{ YLprogressHUD.hidden() DeviceVM.shared.dataList.removeAll(where: {$0.deviceId == self.deviceModel.deviceId}) - JoyBleManager.shared.cancel() + CCBleManager.shared.cancel() App.shared.popPage() } else{ diff --git a/ShenYin/ShenYin/UI/Mine/Feedback/FeedbackBottomView.swift b/ShenYin/ShenYin/UI/Mine/Feedback/FeedbackBottomView.swift index a8447e2..c87a509 100644 --- a/ShenYin/ShenYin/UI/Mine/Feedback/FeedbackBottomView.swift +++ b/ShenYin/ShenYin/UI/Mine/Feedback/FeedbackBottomView.swift @@ -56,7 +56,7 @@ class FeedbackBottomView: BaseView { let icon = UIImageView() let titleLabel = UILabel() - var language:AiSupportLanguage = AiSupportLanguage.chinse{ + var language:CCAiLanguage = CCAiLanguage.chinse{ didSet{ titleLabel.text = language.title } diff --git a/ShenYin/ShenYin/UI/Mine/Update/BleUpdateVM.swift b/ShenYin/ShenYin/UI/Mine/Update/BleUpdateVM.swift index 36b2197..3492798 100644 --- a/ShenYin/ShenYin/UI/Mine/Update/BleUpdateVM.swift +++ b/ShenYin/ShenYin/UI/Mine/Update/BleUpdateVM.swift @@ -8,12 +8,12 @@ class BleUpdateVM:BaseVM{ static let shared = BleUpdateVM() func checkedUpdate(){ - JoyDevice.getDN {[weak self] dn in + CCDevice.getDN {[weak self] dn in guard let self = self else{return} guard let deviceName = dn else{ return } - JoyDevice.getVersion {[weak self] version in + CCDevice.getVersion {[weak self] version in guard let self = self else{return} guard let version = version else{ return diff --git a/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift b/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift index cdce644..0df5ea2 100644 --- a/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift @@ -54,7 +54,7 @@ class UpdateVC:BaseVC{ } } override func setupData() { - JoyDevice.getVersion {[weak self] version in + CCDevice.getVersion {[weak self] version in guard let self = self else{return} let version = version ?? " --" let allText = "当前版本".l10n + "\nV\(version)" @@ -69,7 +69,7 @@ class UpdateVC:BaseVC{ } } @objc func tapAction(){ - if !JoyBleManager.shared.isConnetd{ + if !CCBleManager.shared.isConnetd{ YLprogressHUD.showAutoHiden("请先连接设备".l10n) return } diff --git a/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift b/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift index fd66b08..c11d0e2 100644 --- a/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift +++ b/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift @@ -134,7 +134,7 @@ class CustomEqVC:BaseVC{ } override func setupData() { - JoyDevice.getCustomEQ {[weak self] list in + CCDevice.getCustomEQ {[weak self] list in guard let list = list else{return} self?.resetSlider(list) } @@ -143,10 +143,10 @@ class CustomEqVC:BaseVC{ for item in list { item.slider.setValue(0, animated: false) } - JoyDevice.resetCustomEQ() + CCDevice.resetCustomEQ() } @objc func sliderValueChange(index:Int,value:Int){ - JoyDevice.setCustomEQ(index: index, value: value) + CCDevice.setCustomEQ(index: index, value: value) } func resetSlider(_ eqs:[NSNumber]){ for i in 0..Void)? - var currentLanguage:AiSupportLanguage{ + var currentLanguage:CCAiLanguage{ if isRight { return rightLabel.language } @@ -109,7 +109,7 @@ class LanguagePickerTitle: BaseView { class LanguageItem: BaseView { private let label = UILabel() - var language:AiSupportLanguage = .chinse{ + var language:CCAiLanguage = .chinse{ didSet{ label.text = language.title } diff --git a/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguagePickerView.swift b/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguagePickerView.swift index 36024dd..536eae0 100644 --- a/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguagePickerView.swift +++ b/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguagePickerView.swift @@ -10,7 +10,7 @@ class LanguagePickerView: BasePresentView { private let segView = LanguagePickerTitle() private let btn = UIButton(type: .custom) private let tableView = UITableView(frame: .zero, style: .plain) - var list:[AiSupportLanguage] = [] + var list:[CCAiLanguage] = [] var selectedIndex = 0{ didSet{ tableView.reloadData() @@ -18,10 +18,10 @@ class LanguagePickerView: BasePresentView { } - var didSelected: ((Int,AiSupportLanguage)->Void)? + var didSelected: ((Int,CCAiLanguage)->Void)? private var title:String = "请选择语言".l10n - init(languages:[AiSupportLanguage],isLeft:Bool,left:AiSupportLanguage,right:AiSupportLanguage) { + init(languages:[CCAiLanguage],isLeft:Bool,left:CCAiLanguage,right:CCAiLanguage) { list = languages segView.leftLabel.language = left segView.rightLabel.language = right diff --git a/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguageSelectItem.swift b/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguageSelectItem.swift index e5b26a9..b00f1b1 100644 --- a/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguageSelectItem.swift +++ b/ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguageSelectItem.swift @@ -63,7 +63,7 @@ class LanguageSelectItem: BaseView { rightLabel.language = text1 } @objc func leftAction(){ - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: true,left: leftLabel.language,right: rightLabel.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: true,left: leftLabel.language,right: rightLabel.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == leftLabel.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -79,7 +79,7 @@ class LanguageSelectItem: BaseView { } } @objc func rightAction(){ - let v = LanguagePickerView(languages: AiSupportLanguage.translate,isLeft: false,left: leftLabel.language,right: rightLabel.language) + let v = LanguagePickerView(languages: CCAiLanguage.translate,isLeft: false,left: leftLabel.language,right: rightLabel.language) v.selectedIndex = v.list.firstIndex(where: {$0.title == rightLabel.language.title}) ?? 0 v.show() v.didSelected = {[weak self] (index,value) in @@ -97,7 +97,7 @@ class LanguageSelectItem: BaseView { class LanguageItem: BaseView { private let label = UILabel() - var language:AiSupportLanguage = AiSupportLanguage.chinse{ + var language:CCAiLanguage = CCAiLanguage.chinse{ didSet{ label.text = language.title } diff --git a/document/20251226-095425.jpg b/document/20251226-095425.jpg new file mode 100644 index 0000000..f7bc4bd Binary files /dev/null and b/document/20251226-095425.jpg differ