From: liangzhenying <867174124@qq.com> Date: Wed, 7 Jan 2026 02:03:28 +0000 (+0800) Subject: 兼容Ota X-Git-Tag: 1.0.2~2 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=881edd63a984bba7682468c34cb71e221b2730b3;p=mirrors%2FShenYin.git 兼容Ota --- diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index 860ce97..d006ab1 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -77,20 +77,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Info.plist, - Sdk/JoySdk/JoyCallRecord.swift, - Sdk/JoySdk/JoyChat.swift, - Sdk/JoySdk/JoyChinse2English.swift, - Sdk/JoySdk/JoyDialog.swift, - Sdk/JoySdk/JoyRecord.swift, - Sdk/JoySdk/JoySdkManager.swift, - Sdk/JoySdk/JoyTcty.swift, - Sdk/JoySdk/VC/JoyCallingRecordVC.swift, - Sdk/JoySdk/VC/JoyChatVC.swift, - Sdk/JoySdk/VC/JoyChinese2EnglishVC.swift, - Sdk/JoySdk/VC/JoyDialogTranlateVC.swift, - Sdk/JoySdk/VC/JoyStereoCallVC.swift, - Sdk/JoySdk/VC/JoyTctyVC.swift, - Sdk/JoySdk/VC/JoyXclyVC.swift, ); target = 3F887B9B2E38D8DC00C98658 /* ShenYin */; }; @@ -117,6 +103,16 @@ StarburstSdk.framework, ); }; + 3FD1D6A12F0D1AE600A62733 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + Sdk/JoySdk/JoyGemAI.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3F469CAF2F0B539400121DBD /* Embed Frameworks */; + membershipExceptions = ( + Sdk/JoySdk/JoyGemAI.framework, + ); + }; /* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -134,6 +130,7 @@ isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( 3F887BAE2E38D8DD00C98658 /* Exceptions for "ShenYin" folder in "ShenYin" target */, + 3FD1D6A12F0D1AE600A62733 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */, ); path = ShenYin; sourceTree = ""; @@ -552,10 +549,12 @@ "$(PROJECT_DIR)/ShenYin/Ota", "$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus", "$(PROJECT_DIR)/DeepChordsSdk", + "$(PROJECT_DIR)/ShenYin/Sdk/Ota", + "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "骨传导"; + INFOPLIST_KEY_CFBundleDisplayName = DeepChords; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "扫描附近蓝牙设备需要获得权限"; INFOPLIST_KEY_NSCameraUsageDescription = "修改用户头像、提交意见反馈需要访问相册使用摄像头"; @@ -610,10 +609,12 @@ "$(PROJECT_DIR)/ShenYin/Ota", "$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus", "$(PROJECT_DIR)/DeepChordsSdk", + "$(PROJECT_DIR)/ShenYin/Sdk/Ota", + "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "骨传导"; + INFOPLIST_KEY_CFBundleDisplayName = DeepChords; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "扫描附近蓝牙设备需要获得权限"; INFOPLIST_KEY_NSCameraUsageDescription = "修改用户头像、提交意见反馈需要访问相册使用摄像头"; diff --git a/ShenYin/ShenYin/Sdk/CCBleManager.swift b/ShenYin/ShenYin/Sdk/CCBleManager.swift index dc631c2..19b703b 100644 --- a/ShenYin/ShenYin/Sdk/CCBleManager.swift +++ b/ShenYin/ShenYin/Sdk/CCBleManager.swift @@ -77,9 +77,9 @@ extension CCBleManager:CBCentralManagerDelegate{ discoverDeviceCallback?(devices) } else{ -// let mac = JoySdkManager.getMac(advertisementData) ?? "" -// devices.append(DCPeripheral(device: peripheral,mac: mac)) -// discoverDeviceCallback?(devices) + let mac = JoySdkManager.getMac(advertisementData) ?? "" + devices.append(DCPeripheral(device: peripheral,mac: mac)) + discoverDeviceCallback?(devices) } // if CCDevice.isJoy{ // let mac = JoySdkManager.getMac(advertisementData) ?? "" @@ -98,7 +98,7 @@ extension CCBleManager:CBCentralManagerDelegate{ Logger.debug("蓝牙已连接 \(peripheral)") peripheral.delegate = self if CCDevice.isJoy{ -// peripheral.discoverServices([CBUUID(string: JoySdkManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]); + peripheral.discoverServices([CBUUID(string: JoySdkManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]); } else{ DCBleManager.shared.centralManager(central, didConnect: peripheral) @@ -114,7 +114,7 @@ extension CCBleManager:CBCentralManagerDelegate{ YLprogressHUD.showAutoHiden("蓝牙已断开".l10n) self.isConnetd = false if CCDevice.isJoy{ -// DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil) + DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil) } NotificationManager.post(type: .deviceValidChange, objtect: nil) OtaMananger.shared.otaManager.centralManager(central, didDisconnectPeripheral: peripheral, error: error) @@ -133,12 +133,12 @@ extension CCBleManager: CBPeripheralDelegate { func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { if CCDevice.isJoy{ -// if (service.uuid.uuidString == JoySdkManager.serviceUUID) { -// JoySdkManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) -// } -// else if service.uuid.uuidString == OtaMananger.otaServiceUUId{ -// OtaMananger.shared.otaManager.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) -// } + if (service.uuid.uuidString == JoySdkManager.serviceUUID) { + JoySdkManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) + } + else if service.uuid.uuidString == OtaMananger.otaServiceUUId{ + OtaMananger.shared.otaManager.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) + } } else{ DCBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) @@ -147,31 +147,31 @@ extension CCBleManager: CBPeripheralDelegate { func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: (any Error)?) { if CCDevice.isJoy{ -// if (characteristic.isNotifying == true && characteristic.service?.uuid.uuidString == JoySdkManager.serviceUUID && characteristic.uuid.uuidString == JoySdkManager.notifyUUID) { -// Logger.debug("特征使能成功") -// JoySdkManager.shared.bleConnected() -// } -// if OtaMananger.isOtadata(characteristic){ -// OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateNotificationStateFor: characteristic, error: error) -// } + if (characteristic.isNotifying == true && characteristic.service?.uuid.uuidString == JoySdkManager.serviceUUID && characteristic.uuid.uuidString == JoySdkManager.notifyUUID) { + Logger.debug("特征使能成功") + JoySdkManager.shared.bleConnected() + } + if OtaMananger.isOtadata(characteristic){ + OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateNotificationStateFor: characteristic, error: error) + } } } func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { // Logger.debug("收到数据 ===uUId ",characteristic.uuid) if CCDevice.isJoy{ -// if OtaMananger.isOtadata(characteristic){ -// if let _ = characteristic.value,error == nil { -// OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateValueFor: characteristic) -// } -// else{ -// Logger.debug("ota 收到数据 ===\(characteristic.uuid)","无数据") -// } -// } -// else { -// //MARK: 需要配置传入数据 -// JoySdkManager.shared.receiveValue(characteristic) -// } + if OtaMananger.isOtadata(characteristic){ + if let _ = characteristic.value,error == nil { + OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateValueFor: characteristic) + } + else{ + Logger.debug("ota 收到数据 ===\(characteristic.uuid)","无数据") + } + } + else { + //MARK: 需要配置传入数据 + JoySdkManager.shared.receiveValue(characteristic) + } } else{ DCBleManager.shared.peripheral(peripheral, didUpdateValueFor: characteristic, error: error) @@ -201,7 +201,7 @@ extension CCBleManager{ // } // } if CCDevice.isJoy{ -// centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) + centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) } else{ centralManager.scanForPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) @@ -287,10 +287,10 @@ extension CCBleManager{ func checkSettingsConnected()->[CBPeripheral]{ if CCDevice.isJoy { -// let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)]) -// Logger.debug("已连接设备",list) -// return list - return [] + let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)]) + Logger.debug("已连接设备",list) + return list +// return [] } else{ let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)]) diff --git a/ShenYin/ShenYin/Sdk/CCDevice.swift b/ShenYin/ShenYin/Sdk/CCDevice.swift index b11aa9c..16cefe8 100644 --- a/ShenYin/ShenYin/Sdk/CCDevice.swift +++ b/ShenYin/ShenYin/Sdk/CCDevice.swift @@ -4,13 +4,13 @@ // // Created by liangshi on 2025/12/25. // -//import JoyGemAI +import JoyGemAI import DeepChordsSdk class CCDevice{ - static var isJoy = false + static var isJoy = true static func initSdk(){ if CCDevice.isJoy { -// JoySdkManager.shared.setupSdk() + JoySdkManager.shared.setupSdk() } else{ DcSdkManager.shared.initSdk() @@ -18,12 +18,12 @@ class CCDevice{ } static func translate(text:String,from:String,to:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ if isJoy { -// JoyGemAIManager.shared().cancelTranslateRequest() -// JoyGemAIManager.shared().translate(text, from: from, to: to) { result, finish in -// finished((result,finish)) -// } error: { error in -// finished(nil) -// } + JoyGemAIManager.shared().cancelTranslateRequest() + JoyGemAIManager.shared().translate(text, from: from, to: to) { result, finish in + finished((result,finish)) + } error: { error in + finished(nil) + } } else{ DeepChordsAiSdk.shared.cancelTranslateByTextWithSplit() @@ -34,12 +34,12 @@ class CCDevice{ } static func summary(text:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ if isJoy { -// JoyGemAIManager.shared().cancelSummaryRequest() -// JoyGemAIManager.shared().summary(text) { text, finish in -// finished((text,finish)) -// } error: { error in -// finished(nil) -// } + JoyGemAIManager.shared().cancelSummaryRequest() + JoyGemAIManager.shared().summary(text) { text, finish in + finished((text,finish)) + } error: { error in + finished(nil) + } } else{ DeepChordsAiSdk.shared.cancelSummaryByTextWithSplit() @@ -52,20 +52,20 @@ class CCDevice{ extension CCDevice{ static func findHeadphone(_ mode:FindType){ if CCDevice.isJoy { -// var value:JoyGemFindHeadphoneMode = .all -// switch mode { -// case .left: -// value = .left -// case .right: -// value = .right -// case .cancel: -// value = .cancel -// case .all: -// value = .all -// } -// JoyGemAIManager.shared().device.findHeadphone(value) { err in -// Logger.debug("findHeadphone:\(err)"); -// } + var value:JoyGemFindHeadphoneMode = .all + switch mode { + case .left: + value = .left + case .right: + value = .right + case .cancel: + value = .cancel + case .all: + value = .all + } + JoyGemAIManager.shared().device.findHeadphone(value) { err in + Logger.debug("findHeadphone:\(err)"); + } } else{ let value:UInt8 = mode == .cancel ? 0:1 @@ -75,27 +75,27 @@ extension CCDevice{ } static func getEQMode(finished:@escaping (ModeEffectsType?)->Void){ if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getEQMode { mode in -// var value:ModeEffectsType = .normal -// switch mode { -// case .normal: -// value = .normal -// case .pop: -// value = .pop -// case .classic: -// value = .classic -// case .rock: -// value = .rock -// case .jazz: -// value = .jazz -// case .custom: -// value = .custom -// } -// finished(value) -// } error: { err in -// Logger.debug("getEQMode:\(err)"); -// finished(nil) -// } + JoyGemAIManager.shared().device.getEQMode { mode in + var value:ModeEffectsType = .normal + switch mode { + case .normal: + value = .normal + case .pop: + value = .pop + case .classic: + value = .classic + case .rock: + value = .rock + case .jazz: + value = .jazz + case .custom: + value = .custom + } + finished(value) + } error: { err in + Logger.debug("getEQMode:\(err)"); + finished(nil) + } } else{ /// type, 0x00(正常模式) @@ -130,25 +130,25 @@ extension CCDevice{ } static func setEQMode(_ type:ModeEffectsType){ if CCDevice.isJoy { -// var value:JoyGemEQMode = .normal -// switch type { -// case .normal: -// value = .normal -// case .pop: -// value = .pop -// case .classic: -// value = .classic -// case .rock: -// value = .rock -// case .jazz: -// value = .jazz -// case .custom: -// value = .custom -// } -// -// JoyGemAIManager.shared().device.setEQMode(value) { err in -// Logger.debug("setEQMode:\(err)"); -// } + var value:JoyGemEQMode = .normal + switch type { + case .normal: + value = .normal + case .pop: + value = .pop + case .classic: + value = .classic + case .rock: + value = .rock + case .jazz: + value = .jazz + case .custom: + value = .custom + } + + JoyGemAIManager.shared().device.setEQMode(value) { err in + Logger.debug("setEQMode:\(err)"); + } }else{ let value:UInt8 = UInt8(type.rawValue) DCDevice.shared.setEQ(type: value) { success in @@ -160,13 +160,13 @@ extension CCDevice{ static func getCustomEQ(finished:@escaping ([NSNumber]?)->Void){ if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getCustomEQ { eq in -// Logger.debug("getCustomEQ:\(eq)"); -// finished(eq.bands) -// } error: { err in -// Logger.debug("getCustomEQ:\(err)"); -// finished(nil) -// } + JoyGemAIManager.shared().device.getCustomEQ { eq in + Logger.debug("getCustomEQ:\(eq)"); + finished(eq.bands) + } error: { err in + Logger.debug("getCustomEQ:\(err)"); + finished(nil) + } } else{ DCDevice.shared.getEQ { (arg0,result) in @@ -186,9 +186,9 @@ extension CCDevice{ } static func resetCustomEQ(){ if CCDevice.isJoy { -// JoyGemAIManager.shared().device.resetCustomEQ { err in -// Logger.debug("resetCustomEQ:\(err)"); -// } + JoyGemAIManager.shared().device.resetCustomEQ { err in + Logger.debug("resetCustomEQ:\(err)"); + } } else{ let list = [ @@ -209,9 +209,9 @@ extension CCDevice{ } static func setCustomEQ(index:Int,value:Int){ if CCDevice.isJoy { -// JoyGemAIManager.shared().device.setCustomEQ(UInt(index), withGain: value) { err in -// Logger.debug("setCustomEQ:\(err)"); -// } + JoyGemAIManager.shared().device.setCustomEQ(UInt(index), withGain: value) { err in + Logger.debug("setCustomEQ:\(err)"); + } } else{ DCDevice.shared.setCustomEQ(index: UInt8(index), value: value) {result in @@ -238,12 +238,12 @@ extension CCDevice{ // } static func getDN(finished:@escaping ((_ mac:String?)->Void)) { if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getDN { deviceName in -// finished(deviceName) -// } error: { error in -// Logger.debug("获取dn失败","\(error!.localizedDescription)") -// finished(nil) -// } + JoyGemAIManager.shared().device.getDN { deviceName in + finished(deviceName) + } error: { error in + Logger.debug("获取dn失败","\(error!.localizedDescription)") + finished(nil) + } } else{ let dn = DeepChordsAiSdk.shared.getDeviceName() @@ -252,12 +252,12 @@ extension CCDevice{ } static func getVersion(finished:@escaping ((_ version:String?)->Void)) { if CCDevice.isJoy { -// JoyGemAIManager.shared().device.software { version in -// finished(version) -// } error: { error in -// Logger.debug("\(error!.localizedDescription)"); -// finished(nil) -// } + JoyGemAIManager.shared().device.software { version in + finished(version) + } error: { error in + Logger.debug("\(error!.localizedDescription)"); + finished(nil) + } } else{ DCDevice.shared.getSoftVersion {result in diff --git a/ShenYin/ShenYin/Sdk/CCPage.swift b/ShenYin/ShenYin/Sdk/CCPage.swift index 3272eab..a53d0ef 100644 --- a/ShenYin/ShenYin/Sdk/CCPage.swift +++ b/ShenYin/ShenYin/Sdk/CCPage.swift @@ -8,7 +8,7 @@ class CCPage{ static func gotoChat(){ if CCDevice.isJoy { -// App.shared.goToPage(JoyChatVC()) + App.shared.goToPage(JoyChatVC()) } else{ App.shared.goToPage(DcChatVC()) @@ -16,7 +16,7 @@ class CCPage{ } static func gotoFieldRecord(){ if CCDevice.isJoy { -// App.shared.goToPage(JoyXclyVC()) + App.shared.goToPage(JoyXclyVC()) } else{ App.shared.goToPage(DcXclyVC()) @@ -24,12 +24,12 @@ class CCPage{ } static func gotoCallRecord(){ if CCDevice.isJoy { -// if JoySdkManager.shared.callRecord.supportStereo{ -// App.shared.goToPage(JoyStereoCallVC()) -// } -// else{ -// App.shared.goToPage(JoyCallingRecordVC()) -// } + if JoySdkManager.shared.callRecord.supportStereo{ + App.shared.goToPage(JoyStereoCallVC()) + } + else{ + App.shared.goToPage(JoyCallingRecordVC()) + } } else{ // if JoySdkManager.shared.callRecord.supportStereo{ @@ -42,7 +42,7 @@ class CCPage{ } static func gotoChinese2Enlgish(){ if CCDevice.isJoy { -// App.shared.goToPage(JoyChinese2EnglishVC()) + App.shared.goToPage(JoyChinese2EnglishVC()) } else{ App.shared.goToPage(DcChinese2EnglishVC()) @@ -50,7 +50,7 @@ class CCPage{ } static func gotoTcty(){ if CCDevice.isJoy { -// App.shared.goToPage(JoyTctyVC()) + App.shared.goToPage(JoyTctyVC()) } else{ App.shared.goToPage(DcTctyVC()) @@ -58,7 +58,7 @@ class CCPage{ } static func gotoDialogTranslate(){ if CCDevice.isJoy { -// App.shared.goToPage(JoyDialogTranslateVC()) + App.shared.goToPage(JoyDialogTranslateVC()) } else{ App.shared.goToPage(DcDialogTranslateVC()) diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI-Swift.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI-Swift.h new file mode 100644 index 0000000..344f048 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI-Swift.h @@ -0,0 +1,315 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) +#ifndef JOYGEMAI_SWIFT_H +#define JOYGEMAI_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="JoyGemAI",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI.h new file mode 100644 index 0000000..f16e0fe --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI.h @@ -0,0 +1,28 @@ +// +// JoyGemAI.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/10. +// + +#import + +//! Project version number for JoyGemAI. +FOUNDATION_EXPORT double JoyGemAIVersionNumber; + +//! Project version string for JoyGemAI. +FOUNDATION_EXPORT const unsigned char JoyGemAIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAIManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAIManager.h new file mode 100644 index 0000000..f60ed8d --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAIManager.h @@ -0,0 +1,140 @@ +// +// JoyGemAIManager.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/10. +// + +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol JoyGemAIManagerDelegate + +/// 鉴权成功时回调 +-(void)joyGemAuthSuccessCallback; + +/// 鉴权失败时回调 +-(void)joyGemAuthFailedCallback; + +/// AI耳机动作回调 +/// - NOTE: 对话相关动作是通知,即消息来时已经发生,录音相关动作是请求,即耳机没有实际操作 +@optional +-(void)joyGemAction:(JoyGemActionMode)action; + +@end + +@protocol JoyGemAIManagerDataSource + +///实现该方法,将数据转发给蓝牙 +@required +-(void)joyGemSendData:(NSData*)data withCharacteristic:(CBCharacteristic*)characteristic; + +@end + +@class JoyGemDeviceManager; + +@interface JoyGemAIManager : NSObject + +@property(nonatomic, weak) id delegate; +@property(nonatomic, weak) id dataSource; + +@property(nonatomic, strong) JoyGemDeviceManager *device; + +// 实例对象 ++ (instancetype)shared; + +/// 初始化sdk +- (void)initSdk; + +/// 初始化sdk +/// - Parameter projectID: 可选方法 +- (void)initSdk:(nullable NSString*)projectID; + +/// 日志打印级别 +/// - Parameter level: 日志等级 分为关闭,简略,完全 +- (void)setLogMode:(JoyGemLogMode)mode; + +/// 日志存储路径 +/// - Parameter path: 日志存储文件路径 +/// - Description: 为空时不进行日志存储, 不支持多次配置 +- (void)setLogPath:(nullable NSString*)path; + +/// 传入蓝牙服务对象 +/// - Parameters: +/// - service: 服务对象 +/// - characteristics: 需要notify的特征 +/// - Returns: 是否正确的配置了相关服务特征 +/// - Description: Block为同步操作 +- (BOOL)configService:(CBService*)service needNotify:(void (^)(NSArray*))characteristics; + +/// 收到蓝牙设备传过来的数据,调用此方法交给sdk处理 +/// - Parameter characteristic:更新的特征 +- (void)receiveValue:(CBCharacteristic *)characteristic; + +/// 蓝牙设备已连接 +- (void)bleConnected; + +/// 蓝牙断开连接 +- (void)bleDisConnected; + +/// SDK文件存储文件夹 +/// - Parameter path: SDK文件存储路径(SDK需要用到文件存储时所指向的路径) +- (void)setCacheDirectory:(nullable NSString*)path; + +/// 清除临时文件 +/// - Description: 只会清除当前配置路径下的文件 +- (void)clearCacheDirectory; + +/// TWS耳机主从切换时是否尝试当前AI功能自动延续 +/// - Parameters: +/// - enable: 默认为false +-(void)setTWSAutoSync:(BOOL)enable; + +-(void)setTextAutoSync:(BOOL)enable; + +-(void)setEmotionAutoSync:(BOOL)enable; + +/// 文本翻译 +/// - Parameters: +/// - text: 翻译的文字 +/// - fromLanguage: 原始语言 +/// - toLanguage: 翻译语言 +/// - stream: 结果回调 +/// - error: 错误回调 +/// - Description: 最大文本支持30K +- (void)translate:(NSString *)text from:(NSString*)fromLanguage to:(NSString*)toLanguage stream:(void (^)(NSString* llmResponse,BOOL finish))stream error:(void (^)( NSError * _Nullable err))error; + +/// 取消文本翻译 +-(void)cancelTranslateRequest; + +/// 文本摘要 +/// - Parameters: +/// - text: 摘要的文字 +/// - stream: 结果回调 +/// - error: 错误回调 +/// - Description: 最大文本支持30K +- (void)summary:(NSString *)text stream:(void (^)(NSString* llmResponse,BOOL finish))stream error:(void (^)( NSError * _Nullable err))error; + +/// 取消文本摘要 +-(void)cancelSummaryRequest; + + +/// 设置同传的tts回应速度 +/// - Parameters: +/// - speed: 默认1.0,范围[0.8,2] +-(void)setTtsSpeed:(float)speed; + +/// 配置测试环境 +/// - Parameters: +/// - info: 测试环境字典 +-(void)setDebugEnvironment:(NSDictionary*)info; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemCallManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemCallManager.h new file mode 100644 index 0000000..5a4dd0f --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemCallManager.h @@ -0,0 +1,132 @@ +// +// JoyGemCallController.h +// JoyGemAI +// +// Created by jjjs on 2025/7/12. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JoyGemCallManager; +@class JoyGemAsrModel; + +//通话录音的委托类 +@protocol JoyGemCallManagerDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@optional +-(void)callManager:(JoyGemCallManager*)manager didUpdateAsr:(JoyGemAsrModel*)model DEPRECATED_MSG_ATTRIBUTE("Use callManager:didUpdateMonoAsr instead if supportStereo is false");; + +///文件生成后的回调 +/// - Parameters: +/// - path: 文件存储路径 wav格式 +-(void)callManager:(JoyGemCallManager*)manager saveFile:(NSString*)path; + +///录音状态回调 +/// - Parameters: +/// - code: 状态变化 +-(void)callManager:(JoyGemCallManager*)manager stateChange:(JoyGemStateCode)code; + +/// 录音错误回调 +/// - Parameters: +/// - mode:错误代码 +-(void)callManager:(JoyGemCallManager*)manager onError:(JoyGemErrorCode)code; + +/// 通话录音开启时,不处于通话状态 +/// - Description: 需要确认耳机是否支持该判断,如果耳机不支持将不会收到回调 +@optional +-(void)callManagerNotonCall:(JoyGemCallManager*)manager; + +///结束时的回调 +/// - Parameters: +/// - code: 录音结束的原因 +-(void)callManagerStopped:(JoyGemCallManager*)manager reason:(JoyGemRecordStopCode)code; + +/// 录音完成时的回调 +/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 +/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 +@optional +-(void)callManagerCompleted:(JoyGemCallManager*)manager; + +@end + +@protocol JoyGemCallMonoDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)callManager:(JoyGemCallManager*)manager didUpdateMonoAsr:(JoyGemAsrModel*)model; + +/// 录音时的声波强度回调 +/// - Parameters: +/// - list: 强度数组 +/// - timestamp: 时间戳(ms) +@optional +-(void)callManager:(JoyGemCallManager*)manager monoIntensity:(NSArray*)list timestamp:(NSTimeInterval)timestamp; + +@end + +@protocol JoyGemCallStereoDelegate + +///录音文字识别 +/// - Parameters: +/// - model: asr识别的对象 +/// - index: 声道序号 1,2 +@required +-(void)callManager:(JoyGemCallManager*)manager didUpdateStereoAsr:(JoyGemAsrModel*)model channel:(NSUInteger)index; + +/// 录音时的声波强度回调 +/// - Parameters: +/// - lists: 强度数组(二维数组,0为左声道,1为右声道) +/// - timestamp: 时间戳(ms) +@optional +-(void)callManager:(JoyGemCallManager*)manager stereoIntensity:(NSArray*>*)lists timestamp:(NSTimeInterval)timestamp; + + +@end + + +/// 通话录音的管理类 +@interface JoyGemCallManager : NSObject + +/// 委托类 +/// - Description: 通话录音状态委托 +@property(nonatomic, weak) id delegate; + +/// 耳机识别语言 +@property(nonatomic, strong) NSString* originalLanguage; + +/// 是否正在录音 +@property(nonatomic, assign) BOOL isRecording; + +/// 是否支持立体声录音 +/// - NOTE:鉴权后再使用该字段 +@property(nonatomic, assign ,readonly) BOOL supportStereo; + +/// 单声道委托 +/// - Description: 固件支持单声道通话录音时会通过此委托进行回调 +@property(nonatomic, weak) id monoDelegate; + +/// 立体声委托 +/// - Description: 固件支持双声道通话录音时会通过此委托进行回调 +@property(nonatomic, weak) id stereoDelegate; + +/// 实例对象 ++ (instancetype)shared; + +/// 开始通话录音 +- (void)start; + +/// 结束通话录音 +- (void)stop; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemChatManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemChatManager.h new file mode 100644 index 0000000..32c1303 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemChatManager.h @@ -0,0 +1,122 @@ +// +// JoyGemChatManager.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/21. +// + +#import +#import + +@class JoyGemChatManager; +@class JoyGemSpeaker; + + +NS_ASSUME_NONNULL_BEGIN + +@protocol JoyGemChatManagerDelegate + +///AI语音接收 +/// - Parameters: +/// - data: 音频数据 pcm格式 +/// - index: 语句ID +/// - sampleRate: 采样率 +/// - finish: 该句是否结束 +-(void)chatManager:(JoyGemChatManager*)manager audioData:(nullable NSData*)data index:(NSUInteger)index sampleRate:(NSUInteger)sampleRate finish:(BOOL)isFinish; + +///用户语音识别 +/// - Parameters: +/// - text: 文字数据 +/// - index: 语句ID +-(void)chatManager:(JoyGemChatManager*)manager requestText:(nullable NSString*)text index:(NSUInteger)index; + +///AI语音识别 +/// - Parameters: +/// - text: 文字数据 +/// - index: 语句ID +/// - isFinish:单次对话结束 +-(void)chatManager:(JoyGemChatManager*)manager responseText:(nullable NSString*)text index:(NSUInteger)index finish:(BOOL)isFinish; + +///对话状态回调 +/// - Parameters: +/// - code: 状态变化 +@optional +-(void)chatManager:(JoyGemChatManager*)manager stateChange:(JoyGemStateCode)code DEPRECATED_MSG_ATTRIBUTE("Use chatManager:eventUpdate instead"); + +///对话事件回调 +/// - Parameters: +/// - event: 对话相关事件回调 +/// - NOTE: 需要相关固件支持 +@optional +-(void)chatManager:(JoyGemChatManager*)manager eventUpdate:(JoyGemChatEvent)event; + +/// 错误回调 +/// - Parameters: +/// - mode:错误代码 +-(void)chatManager:(JoyGemChatManager*)manager onError:(JoyGemErrorCode)code; + +@optional +-(void)chatManagerStopped:(JoyGemChatManager*)manager DEPRECATED_MSG_ATTRIBUTE("Use isActive instead"); + +@end + +//AI对话的管理类 +@interface JoyGemChatManager : NSObject + +@property(nonatomic, weak) id delegate; + +//是否正在对话录音中 +@property(nonatomic, assign) BOOL isRecording; + +///是否正在活跃中 +/// - NOTE:可以采用KVO的方式监听该对象, 单次对话不会造成该状态改变 +@property(atomic, assign) BOOL isActive DEPRECATED_MSG_ATTRIBUTE("Use chatManager:eventUpdate instead if supportEvent is true"); + +///是否支持事件上报模式 +/// - NOTE:鉴权后再使用该字段 +@property(nonatomic,assign,readonly) BOOL supportEvent; + +// 实例对象 ++ (instancetype)shared; + +/// 开启单次对话 +/// - Note: 如正在播报,需要提前关闭tts后再调用,否则开启无效 +- (void)startSingleChat; + +/// 结束单次对话 +/// - Note:请勿在开启单次对话后立刻调用该方法,否则耳机可能不会处理该次请求 +- (void)stopSingleChat; + +/// 开启连续对话 +- (void)startChat; + +/// 结束连续对话 +- (void)stopChat; + +/// 播放音频开始前需要调用此方法告诉耳机 +- (void)playAudioStart; + +/// 播放音频结束时需要调用此方法告诉耳机 +/// - Description: 如果处于连续对话状态,则在调用该方法后会直接开启下一轮对话 +- (void)playAudioEnd; + +///获取支持角色列表 +/// - Parameters: +/// - list: 角色列表 +-(void)getSpeakerList:(void (^)(NSArray*))list; + +/// 配置当前角色 +-(void)setSpeaker:(JoyGemSpeaker*)speaker; + +/// 重置为默认角色 +-(void)resetSpearker; + +/// 进入英语口语陪练模式 +-(void)startSpoken; + +/// 退出英语口语陪练模式 +-(void)stopSpoken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemDeviceManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemDeviceManager.h new file mode 100644 index 0000000..39217c0 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemDeviceManager.h @@ -0,0 +1,101 @@ +// +// JoyGemDeviceManager.h +// JoyGemAI +// +// Created by jjjs on 2025/9/1. +// + +#import +#import "JoyGemEnum.h" +#import "JoyGemModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JoyGemDeviceManager : NSObject + +@property(nonatomic,assign) BOOL twsStatus; + +/// 获取mac地址 +/// - Returns: +/// - edrAddress: 经典蓝牙地址 +/// - bleAddress: ble蓝牙地址 +-(void)macAddress:(void (^)(NSString* edrAddress,NSString* bleAddress))address error:(void (^)( NSError * _Nullable err))error; + +/// 获取软件版本 +/// - Returns: +/// - version: 软件版本 +-(void)software:(void (^)(NSString* version))infomation error:(void (^)( NSError * _Nullable err))error; + + +/// 设置电量监听 +/// - Parameters: +/// - left: 左耳电量 +/// - right: 右耳电量 +/// - Description: 电量范围为0~100,当未获取到电量时,电量为-1,配置回调时,如果有历史数据,会返回最后的历史数据,耳机会在电量变更时主动上报数据 +-(void)setBatteryListener:(void (^)(NSInteger left, NSInteger right))batteryListener; + +/// 主动获取电量 +-(void)updateBattery; + +/// 设置耳机状态监听 +/// - Parameters: +/// - btConnected: 经典蓝牙连接状态 +/// - twsConnected : 双耳模式连接状态 +/// - Description: 部分设置需要在双耳模式下才能生效 +-(void)setStatusListener:(void (^)(BOOL btConnected,BOOL twsConnected))statusListener; + +/// 主动获取耳机状态 +-(void)updateStatus; + +/// 设置VAD打断状态 +/// - Parameters: +/// - isOpen: VAD打断是否开启 +/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 +-(void)setVADInterruptedStatus:(BOOL)isOpen callback:(void (^)( NSError * _Nullable err))error; + +/// 获取VAD打断状态 +/// - Returns: +/// - status: VAD打断是否开启 +-(void)getVADInterruptedStatus:(void (^)(BOOL isOpen))status error:(void (^)( NSError * _Nullable err))error; + + +/// 设置EQ模式 +/// - Parameters: +/// - mode: EQ模式 +/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 +-(void)setEQMode:(JoyGemEQMode)mode callback:(void (^)( NSError * _Nullable err))error; + +/// 获取EQ模式 +/// - Returns: +/// - mode: VAD打断是否开启 +-(void)getEQMode:(void (^)(JoyGemEQMode mode))mode error:(void (^)( NSError * _Nullable err))error; + +/// 设置自定义EQ +/// - Parameters: +/// - index: 频段 范围为0~9 +/// - gain: 增益 范围为 -12~12 +/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 +-(void)setCustomEQ:(NSUInteger)index withGain:(NSInteger)gain callback:(void (^)( NSError * _Nullable err))error; + +/// 重置自定义EQ +/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 +-(void)resetCustomEQ:(void (^)( NSError * _Nullable err))error; + +/// 获取自定义EQ +/// - Returns: +/// - custom: 自定义EQ类型 +-(void)getCustomEQ:(void (^)(JoyGemCustomEQ*))custom error:(void (^)( NSError * _Nullable err))error; + +/// 查找耳机 +/// - Parameters: +/// - mode: 查找耳机命令类型 +-(void)findHeadphone:(JoyGemFindHeadphoneMode)mode callback:(void (^)( NSError * _Nullable err))error; + +/// 获取设备DN码 +/// - Parameters: +/// - dn: 设备DN,取不到则返回空值 +-(void)getDN:(void (^)(NSString*))dn error:(void (^)( NSError * _Nullable err))error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemEnum.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemEnum.h new file mode 100644 index 0000000..b95de14 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemEnum.h @@ -0,0 +1,86 @@ +// +// JoyGemAIEnum.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/21. +// + +#ifndef JoyGemAIEnum_h +#define JoyGemAIEnum_h + +/// 状态变化 +typedef NS_OPTIONS(NSInteger,JoyGemStateCode) { + JoyGemStateCodeStartRecord = 1001,///开始录音 + JoyGemStateCodeStopRecord = 1002,///停止录音 + JoyGemStateCodeWebsocketConnected = 3001,///socket连上 + JoyGemStateCodeWebsocketDisconnected = 3002,///socket断开连接 +}; + +/// 错误 +typedef NS_OPTIONS(NSInteger,JoyGemErrorCode) { + JoyGemErrorCodeRecordError = 1003,///录音出错 + JoyGemErrorCodeNetError = 3003,///网络错误 + JoyGemErrorCodeUnAuth = 9999,///未鉴权 +}; + +/// 录音类型 +typedef NS_ENUM(NSUInteger, JoyGemRecordMode) { + JoyGemRecordModeLive = 1, ///现场录音 + JoyGemRecordModeCall = 2, ///通话录音 +}; + +/// 日志类型 +typedef NS_ENUM(NSUInteger, JoyGemLogMode) { + JoyGemLogModeClose, ///关闭日志 + JoyGemLogModeSimple, ///简略日志 + JoyGemLogModeAll, ///完整日志 +}; + +/// 动作类型 +typedef NS_ENUM(NSUInteger, JoyGemActionMode) { + JoyGemActionModeCancel = 0, ///关闭当前AI功能 + JoyGemActionModeRecordLive = 1, ///现场录音 + JoyGemActionModeRecordCall = 2, ///通话录音 + JoyGemActionModeSi = 3, ///同声传译 + JoyGemActionModeChat = 4, ///AI对话 +}; + +/// 录音结束类型 +typedef NS_ENUM(NSUInteger, JoyGemRecordStopCode) { + JoyGemRecordStopCodeActively = 0, ///用户主动关闭录音 + JoyGemRecordStopCodePassively = 1, ///用户被动关闭录音 +}; + + +/// 对话事件类型 +typedef NS_ENUM(NSUInteger, JoyGemChatEvent) { + JoyGemChatEventIdle = 0, /// 空闲中 + JoyGemChatEventBegin, /// 开始对话(单轮对话不会产生该事件) + JoyGemChatEventEnd, /// 结束对话(单轮对话不会产生该事件) + JoyGemChatEventNewRound, /// 开始新一轮对话 + JoyGemChatEventRecording, /// 录音中 + JoyGemChatEventRspWaiting, /// 等待中 + JoyGemChatEventPlaying, /// 正在播放声音 + JoyGemChatEventPlayEnd, /// 结束播放声音 +}; + +/// EQ类型 +typedef NS_ENUM(NSUInteger, JoyGemEQMode) { + JoyGemEQModeNormal, ///普通 + JoyGemEQModeRock, ///摇滚 + JoyGemEQModePop, ///流行 + JoyGemEQModeClassic, ///经典 + JoyGemEQModeJazz, ///爵士 + JoyGemEQModeCustom, ///自定义 +}; + + +/// EQ类型 +typedef NS_ENUM(NSUInteger, JoyGemFindHeadphoneMode) { + JoyGemFindHeadphoneModeCancel, ///关闭查找耳机 + JoyGemFindHeadphoneModeLeft, ///查找左耳 + JoyGemFindHeadphoneModeRight, ///查找右耳 + JoyGemFindHeadphoneModeAll, ///查找双耳 +}; + +#endif /* JoyGemAIEnum_h */ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemModel.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemModel.h new file mode 100644 index 0000000..3a7cf57 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemModel.h @@ -0,0 +1,55 @@ +// +// JoyGemAIModel.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +///AI对话角色 +@interface JoyGemSpeaker : NSObject + +@property (nonatomic, strong) NSString *sid;/// 音色id +@property (nonatomic, strong) NSString *name;/// 名称 +@property (nonatomic, strong) NSString *type;/// 类型 +@property (nonatomic, strong) NSString *role;/// 角色 + +///默认角色 ++(JoyGemSpeaker*)defaultRole; + +///默认的口语陪练角色 ++(JoyGemSpeaker*)defaultSpoken; + +@end + +///ASR对象 +@interface JoyGemAsrModel : NSObject + +@property (nonatomic, strong) NSString *text; /// 文本 +@property (nonatomic, assign) NSUInteger index; /// 序号 +@property (nonatomic, assign) BOOL definite; /// 片段化确定(不建议作为断句标识) + +@end + +///自定义EQ设置对象 +@interface JoyGemCustomEQ : NSObject + +@property (nonatomic, strong) NSArray *bands; + +@end + +///录音声纹识别 +@interface JoyGemRecordSpeaker : NSObject + +@property (nonatomic, copy, nullable) NSString *speakerId; /// 说话人ID(字符串,如 "1") +@property (nonatomic, assign) NSInteger startTime; /// 起始时间(ms) +@property (nonatomic, assign) NSInteger endTime; /// 结束时间(ms) +@property (nonatomic, copy, nullable) NSString *text; /// 该段文本 +@property (nonatomic, assign) NSInteger index; /// 该段确定序号 + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemParam.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemParam.h new file mode 100644 index 0000000..b1f5ab6 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemParam.h @@ -0,0 +1,75 @@ +// +// JoyGemAIParam.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +///MARK: 语音语言 + +//自动识别中英 +extern NSString* const kJoyGemAILocalizationAuto; + +//简体中文 zh-CN +extern NSString* const kJoyGemAILocalizationZH; + +//英文 en-US +extern NSString* const kJoyGemAILocalizationEN; + +//日语 ja-JP +extern NSString* const kJoyGemAILocalizationJA; + +//韩语 ko-KR +extern NSString* const kJoyGemAILocalizationKO; + +//法语 fr-FR +extern NSString* const kJoyGemAILocalizationFR; + +//西班牙语 es-MX +extern NSString* const kJoyGemAILocalizationES; + +//葡萄牙语 pt-BR +extern NSString* const kJoyGemAILocalizationPT; + +//印尼语 id-ID +extern NSString* const kJoyGemAILocalizationID; + +//俄语(输入) ru-RU +extern NSString* const kJoyGemAILocalizationRU_Original; + +//俄语(输出) ru +extern NSString* const kJoyGemAILocalizationRU_Target; + +//马来语 ms-MY +extern NSString* const kJoyGemAILocalizationMS; + +//德语 de-DE +extern NSString* const kJoyGemAILocalizationDE; + +//菲律宾语 fil-PH +extern NSString* const kJoyGemAILocalizationFIL; + +//泰语 th-TH +extern NSString* const kJoyGemAILocalizationTH; + +//阿拉伯语 ar-SA +extern NSString* const kJoyGemAILocalizationAR; + +//越南语 vi +extern NSString* const kJoyGemAILocalizationVI; + + + +///MARK: 蓝牙相关 +/// +///AI功能使用的蓝牙服务 +extern NSString* const kJoyGemAIServiceUUID; + +extern NSString* const kJoyGemAICharacteristicNotifyUUID; + + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemRecordManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemRecordManager.h new file mode 100644 index 0000000..e95de63 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemRecordManager.h @@ -0,0 +1,102 @@ +// +// JoyGemRecordManager.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/21. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JoyGemRecordManager; +@class JoyGemAsrModel; +@class JoyGemRecordSpeaker; + +//现场录音的委托类 +@protocol JoyGemRecordManagerDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)recordManager:(JoyGemRecordManager*)manager didUpdateAsr:(JoyGemAsrModel*)model; + +///文件生成后的回调 +/// - Parameters: +/// - path: 文件存储路径 wav格式 +-(void)recordManager:(JoyGemRecordManager*)manager saveFile:(NSString*)path; + +///录音状态回调 +/// - Parameters: +/// - code: 状态变化 +-(void)recordManager:(JoyGemRecordManager*)manager stateChange:(JoyGemStateCode)code; + +/// 录音错误回调 +/// - Parameters: +/// - mode:错误代码 +-(void)recordManager:(JoyGemRecordManager*)manager onError:(JoyGemErrorCode)code; + +///结束时的回调 +/// - Parameters: +/// - code: 录音结束的原因 +-(void)recordManagerStopped:(JoyGemRecordManager*)manager reason:(JoyGemRecordStopCode)code; + +/// 录音完成时的回调 +/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 +/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应, +@optional +-(void)recordManagerCompleted:(JoyGemRecordManager*)manager; + +/// 录音时的声波强度回调 +/// - Parameters: +/// - list: 强度数组 +/// - timestamp: 时间戳(ms) +@optional +-(void)recordManager:(JoyGemRecordManager*)manager intensity:(NSArray*)list timestamp:(NSTimeInterval)timestamp; + +/// 录音时的说话人区分 +/// - Parameters: +/// - list: 强度数组 +/// - timestamp: 时间戳(ms) +@optional +-(void)recordManager:(JoyGemRecordManager*)manager speakers:(NSArray*)list; + +@end + +/// 现场录音的管理类 +@interface JoyGemRecordManager : NSObject + +/// 委托类 +@property(nonatomic, weak) id delegate; + +/// 耳机识别语言 +@property(nonatomic, strong) NSString* originalLanguage; + +/// 是否正在暂停中 +@property(nonatomic,assign) BOOL isPause; + +/// 是否开启声纹识别 +@property(nonatomic,assign) BOOL useVpr; + +/// 实例对象 ++ (instancetype)shared; + +/// 开启现场录音 +- (void)start; + +/// 结束现场录音 +- (void)stop; + +/// 暂停录音 +- (void)pause; + +/// 恢复录音 +- (void)resume; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h new file mode 100644 index 0000000..826b9c6 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h @@ -0,0 +1,91 @@ +// +// JoyGemSIDeviceManager.h +// JoyGemAI +// +// Created by jjjs on 2025/5/21. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JoyGemSIDeviceManager; +@class JoyGemAsrModel; + +/// 同声传译(设备)的管理类 +@protocol JoyGemSIDeviceManagerDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; + +///录音文字翻译时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; + +///音频数据更新时 +/// - Parameters: +/// - data: 流数据 pcm格式 +@required +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateAudioData:(NSData*)data sampleRate:(NSUInteger)sampleRate; + +///结束时的回调 +/// - Parameters: +/// - code: 录音结束的原因 +-(void)siDeviceManagerStopped:(JoyGemSIDeviceManager*)manager reason:(JoyGemRecordStopCode)code; + +/// 录音完成时的回调 +/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 +/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 +@optional +-(void)siDeviceManagerCompleted:(JoyGemSIDeviceManager*)manager; + +///文件生成后的回调 +/// - Parameters: +/// - path: 文件存储路径 wav格式 +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager saveFile:(NSString*)path; + +///录音状态回调 +/// - Parameters: +/// - code: 状态变化 +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager stateChange:(JoyGemStateCode)code; + +/// 录音错误回调 +/// - Parameters: +/// - mode:错误代码 +-(void)siDeviceManager:(JoyGemSIDeviceManager*)manager onError:(JoyGemErrorCode)code; + +@end + +/// 同声传译(设备)的管理类 +@interface JoyGemSIDeviceManager : NSObject + +/// 委托类 +@property(nonatomic, weak) id delegate; + +/// 耳机识别语言 +@property(nonatomic, strong) NSString* originalLanguage; + +/// 耳机输出语言 +@property(nonatomic, strong) NSString* targetLanguage; + +/// 是否正在录音 +@property(nonatomic,assign) BOOL isRecording; + +/// 实例对象 ++ (instancetype)shared; + +/// 开始同声传译(设备) +- (void)start; + +/// 结束同声传译(设备) +- (void)stop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIManager.h new file mode 100644 index 0000000..bf64e1c --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIManager.h @@ -0,0 +1,91 @@ +// +// JoyGemSIManager.h +// JoyGemAI +// +// Created by JoyGem on 2025/2/21. +// + +#import +#import + +@class JoyGemSIManager; +@class JoyGemAsrModel; + +NS_ASSUME_NONNULL_BEGIN + +//同声传译的委托类 +@protocol JoyGemSIManagerDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)siManager:(JoyGemSIManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; + +///录音文字翻译时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)siManager:(JoyGemSIManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; + +///音频数据更新时 +/// - Parameters: +/// - data: 流数据 pcm格式 +@required +-(void)siManager:(JoyGemSIManager*)manager didUpdateAudioData:(NSData*)data sampleRate:(NSUInteger)sampleRate; + +///录音状态切换时 +-(void)siManager:(JoyGemSIManager*)manager stateChange:(JoyGemStateCode)code; + +///结束时的回调 +/// - Parameters: +/// - code: 录音结束的原因 +-(void)siManagerStopped:(JoyGemSIManager*)manager reason:(JoyGemRecordStopCode)code; + +/// 录音完成时的回调 +/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 +/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 +@optional +-(void)siManagerCompleted:(JoyGemSIManager*)manager; + +///文件生成后的回调 +/// - Parameters: +/// - path: 文件存储路径 wav格式 +-(void)siManager:(JoyGemSIManager*)manager saveFile:(NSString*)path; + +/// 错误回调 +-(void)siManager:(JoyGemSIManager*)manager onError:(JoyGemErrorCode)code; + +@end + +/// 同声传译的管理类 +@interface JoyGemSIManager : NSObject + +@property(nonatomic, weak) id delegate; + +///原始语言 +///目前原始语言设置无效,默认为kJoyGemAILocalizationAuto +@property(nonatomic, strong) NSString* originalLanguage; + +///目标语言 +///默认为kJoyGemAILocalizationAuto,可以设置为中文或者英文 +@property(nonatomic, strong) NSString* targetLanguage; + +/// 是否正在录音 +@property(nonatomic,assign) BOOL isRecording; + + +/// 实例对象 ++ (instancetype)shared; + +/// 开启同声传译 +- (void)start; + +/// 结束同声传译 +- (void)stop; + + +@end + +NS_ASSUME_NONNULL_END + diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h new file mode 100644 index 0000000..18f6bc5 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h @@ -0,0 +1,79 @@ +// +// JoyGemSubtitleManager.h +// JoyGemAI +// +// Created by jjjs on 2025/10/17. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JoyGemSubtitleManager; +@class JoyGemAsrModel; + +/// 字幕翻译的委托 +@protocol JoyGemSubtitleManagerDelegate + +///录音文字识别时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)subtitleManager:(JoyGemSubtitleManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; + +///录音文字翻译时 +/// - Parameters: +/// - model: asr识别的对象 +@required +-(void)subtitleManager:(JoyGemSubtitleManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; + +///结束时的回调 +/// - Parameters: +/// - code: 录音结束的原因 +-(void)subtitleManagerStopped:(JoyGemSubtitleManager*)manager; + +///录音状态回调 +/// - Parameters: +/// - code: 状态变化 +-(void)subtitleManager:(JoyGemSubtitleManager*)manager stateChange:(JoyGemStateCode)code; + +/// 录音错误回调 +/// - Parameters: +/// - mode:错误代码 +-(void)subtitleManager:(JoyGemSubtitleManager*)manager onError:(JoyGemErrorCode)code; + +@end + +//字幕翻译的管理类 +@interface JoyGemSubtitleManager : NSObject + +/// 委托类 +/// - Description: 字幕翻译状态委托 +@property(nonatomic, weak) id delegate; + +/// 耳机识别语言 +@property(nonatomic, strong) NSString* originalLanguage; + +/// 耳机输出语言 +@property(nonatomic, strong) NSString* targetLanguage; + +/// 是否正在录音 +@property(nonatomic, assign) BOOL isRecording; + +/// 是否支持字幕翻译功能 +@property(nonatomic, assign) BOOL support; + + +/// 实例对象 ++ (instancetype)shared; + +/// 开始字幕翻译 +- (void)start; + +/// 结束字幕翻译 +- (void)stop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Info.plist b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Info.plist new file mode 100644 index 0000000..3374824 Binary files /dev/null and b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Info.plist differ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/JoyGemAI b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/JoyGemAI new file mode 100755 index 0000000..b8dcb56 Binary files /dev/null and b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/JoyGemAI differ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 0000000..8ef7c46 Binary files /dev/null and b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 0000000..993acce --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,21 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "JoyGemAI", + "printedName": "JoyGemAI", + "children": [ + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "JoyGemAI", + "declAttributes": [ + "RawDocComment" + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface new file mode 100644 index 0000000..428908e --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface @@ -0,0 +1,10 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) +// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-bare-slash-regex -module-name JoyGemAI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface +import Foundation +@_exported import JoyGemAI +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 0000000..8d660ce Binary files /dev/null and b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface new file mode 100644 index 0000000..428908e --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface @@ -0,0 +1,10 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) +// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-bare-slash-regex -module-name JoyGemAI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface +import Foundation +@_exported import JoyGemAI +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 0000000..1001f97 Binary files /dev/null and b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/module.modulemap new file mode 100644 index 0000000..f9d9ea3 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module JoyGemAI { + umbrella header "JoyGemAI.h" + export * + + module * { export * } +} + +module JoyGemAI.Swift { + header "JoyGemAI-Swift.h" + requires objc +} diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/PrivacyInfo.xcprivacy b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..c8b6829 --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,27 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAudioData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + + diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/_CodeSignature/CodeResources b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..39407de --- /dev/null +++ b/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/_CodeSignature/CodeResources @@ -0,0 +1,333 @@ + + + + + files + + Headers/JoyGemAI-Swift.h + + okSjIYqQdjYFuhBqjGvwfYh8+aU= + + Headers/JoyGemAI.h + + 7HO7XUA3NdXWlvtUWyiYdTaaZ4M= + + Headers/JoyGemAIManager.h + + D/pnfOpF7qKhUfhoTsKEfdEQQRQ= + + Headers/JoyGemCallManager.h + + j3rnAsYkKzhbISebVqN00PCSeTk= + + Headers/JoyGemChatManager.h + + RmM4HQA4Ay7VLvTFWPw7s69sqBk= + + Headers/JoyGemDeviceManager.h + + GnuSbYAD+3F7R21VuV35n97Bubk= + + Headers/JoyGemEnum.h + + M1/juV+sL7ggbp4Y9srW0rq/Dqo= + + Headers/JoyGemModel.h + + WP0CE48Wvoq3FJX4ldz90bcNpTw= + + Headers/JoyGemParam.h + + fq/eezzfuJFDMFtH+PXLOMYQQCs= + + Headers/JoyGemRecordManager.h + + GzBtgXRPoBuyG0YwvFmoGA8Yg20= + + Headers/JoyGemSIDeviceManager.h + + aH1rBy/dU7IVJkpw/BVW3BvfNtk= + + Headers/JoyGemSIManager.h + + 363bn6W4/w8F3xEYQrU0LEVD/XM= + + Headers/JoyGemSubtitleManager.h + + fDUdqGo5wSc78huSI4OUK8Qr8AU= + + Info.plist + + yyyfSn0pDOYFx2gtlmBDVpKhVxw= + + Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + CPeqh4HaaR/F9LP2LFiPwE3Qxzo= + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json + + iVs2bUNJJDbD/ENi/Q0lo4aP3uk= + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface + + sOTjmG3OZu9FvWVYyTuqSix+tzU= + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc + + s/YEyU+lH4pYoG62jihLM2SJPTU= + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface + + sOTjmG3OZu9FvWVYyTuqSix+tzU= + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule + + OKLv2mrRkW9EiT9AdyIjFh6WmI8= + + Modules/module.modulemap + + qguEoXSNM0mFX+7WmMXUO3TTSLk= + + PrivacyInfo.xcprivacy + + SRctDO3cqibONLEG7CPcNZVBnXw= + + + files2 + + Headers/JoyGemAI-Swift.h + + hash2 + + Jktn0pvS86rbDKXpgT8xSUtpGRzWvf2yzqxwqMqFKS4= + + + Headers/JoyGemAI.h + + hash2 + + AWVDZqJirRMWfVQc7FdxP1cjTTx2LWTSTwHDN0/ySRA= + + + Headers/JoyGemAIManager.h + + hash2 + + hAXAZoFB6Ja0kc5Gm3Bo952k9fZUiSUPYM2f9gyTkQw= + + + Headers/JoyGemCallManager.h + + hash2 + + eKpRq8GaSD9YaI7Tfafc4BVLc/Vz2rS7cEcx8W6S+EI= + + + Headers/JoyGemChatManager.h + + hash2 + + TrJNORF2yq5ZRf++PfcoxEwE0ic9W2VxQ+Nz7M7WKPM= + + + Headers/JoyGemDeviceManager.h + + hash2 + + b8SW0vyfvdZ5JjAexckdczSXWjl11+WIJDM6wuHhBEo= + + + Headers/JoyGemEnum.h + + hash2 + + 6xL0kb6k/tdSxOKLIazlAA2o8gm1ZE3njRHg40EOYMw= + + + Headers/JoyGemModel.h + + hash2 + + 0kLzuK/HuYBvk9JPhWYbR2z7t1XSX83X5Am9ZD+vLXw= + + + Headers/JoyGemParam.h + + hash2 + + QKmLGG6IwVxT2QonEGJzea6rMbUX0PBNGoWpzqSNRbY= + + + Headers/JoyGemRecordManager.h + + hash2 + + ep9EdHop9Qn0M9nCT7YwmHXxJh/XXCjBqtYjErKFd+8= + + + Headers/JoyGemSIDeviceManager.h + + hash2 + + x40L/ElpDJCMjpEBZZancy57toshn0DM6MOhkwnIMYQ= + + + Headers/JoyGemSIManager.h + + hash2 + + NTKnVzoipmhtgLLzocc8J5kT4Q2qmUmVhZ3MgZUrbkA= + + + Headers/JoyGemSubtitleManager.h + + hash2 + + jGDopDnKVm0z/p6dEPEs54wWT6iwbetpqbTXTk8zoAQ= + + + Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + hash2 + + dSyxVyC1vMbliDqKuW0d31f2wCYxeWsx2/NHJQYPrRc= + + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json + + hash2 + + li11LC5FIVL81dorkSyLKnyNa2JtjEuBDo/IzoAeVCU= + + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface + + hash2 + + Xu9oOK+bUwZsz7YKaBS7sdDWZvQJwX6GCeM7UKDOIew= + + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc + + hash2 + + 4ZSTOVNx5VInV3CLCGXGsOKMICdleteG1O8aHABZCzw= + + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface + + hash2 + + Xu9oOK+bUwZsz7YKaBS7sdDWZvQJwX6GCeM7UKDOIew= + + + Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule + + hash2 + + nRKcutC82zySWegf6JkCelatcDI5wxHUuHo6O2D+Osc= + + + Modules/module.modulemap + + hash2 + + EYrXhwPscfz6NC5xiiSHpFYdSR7Z5+JCyV2sAnxwmPc= + + + PrivacyInfo.xcprivacy + + hash2 + + cuaVRkQIQRl8fLAPRH2XlUdsPxO0W90uL0WcSHvmSnY= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ShenYin/ShenYin/Ota/JLBleAssistManager.h b/ShenYin/ShenYin/Sdk/Ota/JLBleAssistManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JLBleAssistManager.h rename to ShenYin/ShenYin/Sdk/Ota/JLBleAssistManager.h diff --git a/ShenYin/ShenYin/Ota/JLBleAssistManager.m b/ShenYin/ShenYin/Sdk/Ota/JLBleAssistManager.m similarity index 100% rename from ShenYin/ShenYin/Ota/JLBleAssistManager.m rename to ShenYin/ShenYin/Sdk/Ota/JLBleAssistManager.m diff --git a/ShenYin/ShenYin/Ota/JLLogHelper.framework/Headers/JLLogHelper.h b/ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Headers/JLLogHelper.h similarity index 100% rename from ShenYin/ShenYin/Ota/JLLogHelper.framework/Headers/JLLogHelper.h rename to ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Headers/JLLogHelper.h diff --git a/ShenYin/ShenYin/Ota/JLLogHelper.framework/Headers/JLLogManager.h b/ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Headers/JLLogManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JLLogHelper.framework/Headers/JLLogManager.h rename to ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Headers/JLLogManager.h diff --git a/ShenYin/ShenYin/Ota/JLLogHelper.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JLLogHelper.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JLLogHelper.framework/JLLogHelper b/ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/JLLogHelper similarity index 100% rename from ShenYin/ShenYin/Ota/JLLogHelper.framework/JLLogHelper rename to ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/JLLogHelper diff --git a/ShenYin/ShenYin/Ota/JLLogHelper.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Ota/JLLogHelper.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/Ota/JLLogHelper.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/JLLogHelper b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/JLLogHelper similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/JLLogHelper rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Frameworks/JLLogHelper.framework/JLLogHelper diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLAdvParse.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLAdvParse.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLAdvParse.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLAdvParse.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLDevicesAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLDevicesAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLDevicesAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLDevicesAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLEarphoneAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLEarphoneAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLEarphoneAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLEarphoneAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLOtaAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLOtaAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLOtaAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLOtaAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLSoundCardAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLSoundCardAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLSoundCardAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLSoundCardAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLTwsAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLTwsAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLTwsAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLTwsAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLWatchAdv.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLWatchAdv.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JLWatchAdv.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JLWatchAdv.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JL_AdvParse.h b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JL_AdvParse.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Headers/JL_AdvParse.h rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Headers/JL_AdvParse.h diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/JL_AdvParse b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/JL_AdvParse similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/JL_AdvParse rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/JL_AdvParse diff --git a/ShenYin/ShenYin/Ota/JL_AdvParse.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Ota/JL_AdvParse.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/Ota/JL_AdvParse.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/JLLogHelper b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/JLLogHelper similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/JLLogHelper rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Frameworks/JLLogHelper.framework/JLLogHelper diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECBDTManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECBDTManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECBDTManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECBDTManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECBDTObjc.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECBDTObjc.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECBDTObjc.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECBDTObjc.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECOneToMorePtl.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECOneToMorePtl.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECOneToMorePtl.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECOneToMorePtl.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECThreadHelper.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECThreadHelper.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/ECThreadHelper.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/ECThreadHelper.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAIDialManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAIDialManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAIDialManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAIDialManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAiManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAiManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAiManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAiManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAutoPressureModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAutoPressureModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLAutoPressureModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLAutoPressureModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLCmdBasic.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLCmdBasic.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLCmdBasic.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLCmdBasic.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfig.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfig.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfig.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfig.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDhaFitting.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDhaFitting.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDhaFitting.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDhaFitting.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLFallDetectionModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLFallDetectionModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLFallDetectionModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLFallDetectionModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLHttpHelper.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLHttpHelper.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLHttpHelper.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLHttpHelper.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelCardInfo.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelCardInfo.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelCardInfo.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelCardInfo.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelDevFunc.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelDevFunc.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelDevFunc.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelDevFunc.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelVocalBoost.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelVocalBoost.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModelVocalBoost.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModelVocalBoost.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_ANC.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_ANC.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_ANC.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_ANC.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_BT.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_BT.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_BT.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_BT.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Device.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Device.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Device.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Device.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_EQ.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_EQ.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_EQ.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_EQ.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_FM.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_FM.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_FM.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_FM.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_File.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_File.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_File.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_File.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Flash.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Flash.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Flash.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Flash.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Headset.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Headset.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Headset.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Headset.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_RTC.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_RTC.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_RTC.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_RTC.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Ring.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Ring.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_Ring.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_Ring.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_SPEEX.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_SPEEX.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_SPEEX.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_SPEEX.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_SmallFile.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_SmallFile.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLModel_SmallFile.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLModel_SmallFile.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPersonInfoModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPersonInfoModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPersonInfoModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPersonInfoModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPublicSetting.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPublicSetting.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPublicSetting.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPublicSetting.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSensorFuncModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSensorFuncModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSensorFuncModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSensorFuncModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSportDataModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSportDataModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLSportDataModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLSportDataModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWatchEnum.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWatchEnum.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWatchEnum.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWatchEnum.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSync.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSync.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSync.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSync.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncCustom.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncCustom.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncCustom.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncCustom.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearable.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearable.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWearable.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWearable.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Assist.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Assist.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Assist.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Assist.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEAction.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEAction.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEAction.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEAction.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEKit.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEKit.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEKit.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEKit.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEMultiple.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEMultiple.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BLEMultiple.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BLEMultiple.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BatchManger.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BatchManger.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BatchManger.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BatchManger.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BigDataManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BigDataManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BigDataManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BigDataManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BinChargeManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BinChargeManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_BinChargeManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_BinChargeManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_CallManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_CallManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_CallManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_CallManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_CustomManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_CustomManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_CustomManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_CustomManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_DeviceLogs.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_DeviceLogs.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_DeviceLogs.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_DeviceLogs.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_EntityM.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_EntityM.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_EntityM.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_EntityM.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FileManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FileManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FileManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FileManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FmManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FmManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FmManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FmManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Handle.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Handle.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Handle.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Handle.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_LRCManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_LRCManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_LRCManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_LRCManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_LightManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_LightManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_LightManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_LightManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MSG_Func.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MSG_Func.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MSG_Func.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MSG_Func.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MSG_Weather.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MSG_Weather.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MSG_Weather.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MSG_Weather.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_ManagerM.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_ManagerM.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_ManagerM.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_ManagerM.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MusicControlManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MusicControlManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_MusicControlManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_MusicControlManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_NFC.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_NFC.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_NFC.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_NFC.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_OpCode.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_OpCode.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_OpCode.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_OpCode.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_RCSP.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_RCSP.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_RCSP.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_RCSP.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Header.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Header.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Header.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Header.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Stress.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Stress.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_Stress.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_Stress.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SmallFileManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SmallFileManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SmallFileManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SmallFileManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SoundCardManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SoundCardManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SoundCardManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SoundCardManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SpeexManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SpeexManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SpeexManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SpeexManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemEQ.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemEQ.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemEQ.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemEQ.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemTime.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemTime.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemTime.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemTime.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemVolume.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemVolume.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_SystemVolume.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_SystemVolume.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Tools.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Tools.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_Tools.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_Tools.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_TwsManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_TwsManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_TwsManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_TwsManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_TypeEnum.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_TypeEnum.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_TypeEnum.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_TypeEnum.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_WatchProtocol.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_WatchProtocol.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_WatchProtocol.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_WatchProtocol.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_vad.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_vad.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JL_vad.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JL_vad.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLeSimManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLeSimManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLeSimManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLeSimManager.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLwSettingModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLwSettingModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/JLwSettingModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/JLwSettingModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NSData+ToUnit.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NSData+ToUnit.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NSData+ToUnit.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NSData+ToUnit.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NSObject+JLTools.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NSObject+JLTools.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NSObject+JLTools.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NSObject+JLTools.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NfcModel.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NfcModel.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/NfcModel.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/NfcModel.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/RTC_RingInfo.h b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/RTC_RingInfo.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Headers/RTC_RingInfo.h rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Headers/RTC_RingInfo.h diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/JL_BLEKit b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/JL_BLEKit similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/JL_BLEKit rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/JL_BLEKit diff --git a/ShenYin/ShenYin/Ota/JL_BLEKit.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Ota/JL_BLEKit.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/Ota/JL_BLEKit.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/JLLogHelper b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/JLLogHelper similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/JLLogHelper rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Frameworks/JLLogHelper.framework/JLLogHelper diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/BtHash.h b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/BtHash.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/BtHash.h rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/BtHash.h diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JLHashHandler.h b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JLHashHandler.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JLHashHandler.h rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JLHashHandler.h diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JL_HashPair.h b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JL_HashPair.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JL_HashPair.h rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JL_HashPair.h diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JL_ble_pair.h b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JL_ble_pair.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Headers/JL_ble_pair.h rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Headers/JL_ble_pair.h diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/JL_HashPair b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/JL_HashPair similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/JL_HashPair rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/JL_HashPair diff --git a/ShenYin/ShenYin/Ota/JL_HashPair.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Ota/JL_HashPair.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/Ota/JL_HashPair.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/JLLogHelper b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/JLLogHelper similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/JLLogHelper rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Frameworks/JLLogHelper.framework/JLLogHelper diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JLOTAFile.h b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JLOTAFile.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JLOTAFile.h rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JLOTAFile.h diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JL_OTALib.h b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JL_OTALib.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JL_OTALib.h rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JL_OTALib.h diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JL_OTAManager.h b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JL_OTAManager.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/JL_OTAManager.h rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/JL_OTAManager.h diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/jl_ufw.h b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/jl_ufw.h similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Headers/jl_ufw.h rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Headers/jl_ufw.h diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Info.plist b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Info.plist rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Info.plist diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/JL_OTALib b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/JL_OTALib similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/JL_OTALib rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/JL_OTALib diff --git a/ShenYin/ShenYin/Ota/JL_OTALib.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Ota/JL_OTALib.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/Ota/JL_OTALib.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Ota/OtaManager.swift b/ShenYin/ShenYin/Sdk/Ota/OtaManager.swift similarity index 98% rename from ShenYin/ShenYin/Ota/OtaManager.swift rename to ShenYin/ShenYin/Sdk/Ota/OtaManager.swift index b66efae..1e03de4 100644 --- a/ShenYin/ShenYin/Ota/OtaManager.swift +++ b/ShenYin/ShenYin/Sdk/Ota/OtaManager.swift @@ -38,7 +38,6 @@ extension OtaMananger:JLBleAssistManagerOtaDelegate{ YLprogressHUD.showAutoHiden("升级失败".l10n) } else if result == .upgrading{ - Logger.debug("当前进度",result,progress) ProgressHUDHelper.shared.showProgress(progress) } } diff --git a/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift b/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift index 0df5ea2..f464e20 100644 --- a/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Update/UpdateVC.swift @@ -74,5 +74,13 @@ class UpdateVC:BaseVC{ return } BleUpdateVM.shared.checkedUpdate() + +// guard let path = Bundle.main.path(forResource: "update", ofType: "ufw") else { +// return +// } +// OtaMananger.shared.otaManager.getDeviceInfo { result in +// YLprogressHUD.hidden() +// OtaMananger.shared.otaManager.otaFunc(withFilePath:path ) +// } } }