e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//
// XSMessageMehtodChannel.swift
// Runner
//
// Created by MacBook Pro on 2023/6/28.
//
import UIKit
class XSMessageMehtodChannel: NSObject,SSOralEvaluatingManagerDelegate {
var resultData:Dictionary<String, Any>?
var messageChannel:FlutterMethodChannel?
init(message:FlutterBinaryMessenger) {
super.init()
resultData = Dictionary()
|
53e9e6db
吴启风
feat:绘本语音评测逻辑
|
16
|
messageChannel = FlutterMethodChannel.init(name: "wow_english/sing_sound_method_channel", binaryMessenger: message)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
17
18
19
20
21
22
23
|
messageChannel!.setMethodCallHandler { call, result in
self.handle(call, result)
}
}
//配置评测信息
func setEvaluateConfig(dict:Dictionary<String, Any>) {
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
24
25
26
27
28
|
let appKey = dict["appKey"] as? String ?? ""
let secretKey = dict["secretKey"] as? String ?? ""
let userId = dict["userId"] as? String ?? "guest"
let frontTime = dict["frontTime"] as? String ?? "3"
let backTime = dict["frontTime"] as? String ?? "3"
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
29
|
let config = SSOralEvaluatingManagerConfig.init()
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
30
31
|
config.vad = true
config.isOutputLog = false
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
32
33
|
config.appKey = appKey //"a418"
config.secretKey = secretKey //"1a16f31f2611bf32fb7b3fc38f5b2c81"'
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
34
35
|
config.frontTime = Double(frontTime)!
config.backTime = Double(backTime)!
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
36
37
38
39
40
41
|
SSOralEvaluatingManager.register(config)
SSOralEvaluatingManager.share().register(.line, userId: userId)
SSOralEvaluatingManager.share().delegate = self
}
//开始评测
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
42
|
func evaluateVoice(dict:Dictionary<String, Any>) {
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
43
44
45
|
let text = dict["word"] as? String ?? ""
let type = dict["type"] as? String ?? "0"
let userId = dict["userId"] as? String ?? "guest"
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
46
47
|
let config = SSOralEvaluatingConfig()
config.oralContent = text
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
48
|
if (type == "0") {
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
49
50
51
52
|
config.oralType = .word
} else {
config.oralType = .sentence
}
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
53
|
config.oralType = .kidSent
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
54
55
56
57
58
59
60
61
62
|
config.userId = userId
SSOralEvaluatingManager.share().startEvaluateOral(with: config)
}
func handle(_ call: FlutterMethodCall,_ result: @escaping FlutterResult) {
if (call.method == "initVoiceSdk") {
self.setEvaluateConfig(dict:call.arguments as! Dictionary<String, Any>)
return
}
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
63
64
|
if (call.method == "startVoice") {
self.evaluateVoice(dict: call.arguments as! Dictionary<String, Any>)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
return
}
if (call.method == "stopVoice") {
SSOralEvaluatingManager.share().stopEvaluate();
return
}
}
//评测结果回调
func evaluateResult() {
messageChannel!.invokeMethod("voiceResult", arguments: resultData)
}
//SSOralEvaluatingManagerDelegate
/**
评测开始
*/
func oralEvaluatingDidStart() {
print("评测开始")
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
85
|
// messageChannel!.invokeMethod("voiceStart", arguments: nil)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
86
87
88
89
90
91
92
|
}
/**
评测停止
*/
func oralEvaluatingDidStop() {
print("评测结束")
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
93
|
// messageChannel!.invokeMethod("voiceEnd",arguments: nil)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
}
/**
评测完成后的结果
*/
func oralEvaluatingDidEnd(withResult result: [AnyHashable : Any]?, requestId request_id: String?) {
print("评测完成结果")
let resultDict:Dictionary<String, Any> = result?["result"] as! Dictionary
resultData!["result"] = "1"
//分数
resultData!["overall"] = resultDict["overall"]
self.evaluateResult()
}
/**
评测失败回调
*/
func oralEvaluatingDidEndError(_ error: Error?, requestId request_id: String?) {
print("评测失败")
messageChannel!.invokeMethod("voiceFail", arguments: error?.localizedDescription)
}
/**
VAD(前置时间)超时回调
*/
func oralEvaluatingDidVADFrontTimeOut() {
print("前置超时--->取消")
SSOralEvaluatingManager.share().cancelEvaluate()
if(resultData?.keys.count == 0) {
resultData!["result"] = "0"
self.evaluateResult();
}
}
/**
VAD(后置时间)超时回调
*/
func oralEvaluatingDidVADBackTimeOut() {
print("后置超时--->结束")
///结束回调
SSOralEvaluatingManager.share().stopEvaluate();
}
}
|