CCAiManager.stopPlay()
}
else if event.event == "asr.completed"{
-
+ recordMamager.stop()
}
else if event.event == "llm.created"{
toolBar.recordBtn.state = .respose
else if event.event == "tts.started"{
CCAiManager.preparePlayBlueTooth()
}
+ else if event.event == "tts.completed"{
+ recordMamager.start()
+ toolBar.recordBtn.state = .active
+ }
}
RSManager.shared.chat.ttsCallBack = { data in
PcmSound.sharedInstance().feed(data)
}
extension RSChatVC:RSRecordBarDelegate{
- func recordBarCancel(_ toolBar: RSRecordBar) {
- recordMamager.stop()
- RSManager.shared.chat.cancelSpeedch()
- if let item = dataList.last,item.content.isEmpty{
- dataList.removeLast()
- refreshData()
- }
+ func recordBarIntterupt(_ toolBar: RSRecordBar) {
+ recordMamager.start()
+ CCAiManager.stopPlay()
+ toolBar.recordBtn.state = .active
}
func recordBarStart(_ toolBar: RSRecordBar) {
@objc protocol RSRecordBarDelegate {
func recordBarStart(_ toolBar:RSRecordBar)
- func recordBarCancel(_ toolBar:RSRecordBar)
+ func recordBarIntterupt(_ toolBar:RSRecordBar)
func recordBarStop(_ toolBar:RSRecordBar)
}
class RSRecordBar:BaseView{
let startBtn = CustomButton()
+ let interruptBtn = CustomButton()
let endBtn = CustomButton()
let recordBtn = RSRecordStateView()
v.yc.setCornerRadius(16)
v.backgroundColor = .color(.cellBg)
v.setTitleColor(.color(.first), for: .normal)
+ v.setTitleColor(.color(.secondary), for: .highlighted)
v.titleLabel?.font = .bold(16)
v.setTitle("结束对话".l10n, for: .normal)
v.addTarget(self, action: #selector(endBtnAction), for: .touchUpInside)
v.isHidden = true
}
+ interruptBtn.do { v in
+ v.yc.setCornerRadius(16)
+ v.backgroundColor = .color(.cellBg)
+ v.setTitleColor(.color(.first), for: .normal)
+ v.setTitleColor(.color(.secondary), for: .highlighted)
+ v.titleLabel?.font = .bold(16)
+ v.setTitle("打断".l10n, for: .normal)
+ v.addTarget(self, action: #selector(interruptBtnAction), for: .touchUpInside)
+ v.isHidden = true
+ }
recordBtn.do { v in
v.isHidden = true
}
- addSubviews([startBtn,endBtn,recordBtn])
+ addSubviews([startBtn,interruptBtn,endBtn,recordBtn])
startBtn.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(18)
make.width.equalTo(100)
make.top.height.equalToSuperview()
}
+ interruptBtn.snp.makeConstraints { make in
+ make.right.equalTo(endBtn.snp.left).offset(-10)
+ make.width.equalTo(100)
+ make.top.height.equalToSuperview()
+ }
recordBtn.snp.makeConstraints { make in
make.left.equalToSuperview().inset(18)
- make.right.equalTo(endBtn.snp.left).offset(-10)
+ make.right.equalTo(interruptBtn.snp.left).offset(-10)
make.top.height.equalToSuperview()
}
NotificationManager.add(self, selector: #selector(deviceChange(_:)), forName: .deviceValidChange)
}
startBtn.isHidden = true
endBtn.isHidden = false
+ interruptBtn.isHidden = false
recordBtn.isHidden = false
recordBtn.state = .active
delegate?.recordBarStart(self)
@objc func endBtnAction(){
startBtn.isHidden = false
endBtn.isHidden = true
+ interruptBtn.isHidden = true
recordBtn.isHidden = true
delegate?.recordBarStop(self)
}
+ @objc func interruptBtnAction(){
+ delegate?.recordBarIntterupt(self)
+ }
@objc func deviceChange(_ noti:Notification){
updateState()
}