|
@@ -310,8 +310,15 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
BFLog(1, message: "haveSpeak is:\(haveSpeak),noHaveSpeak is:\(noHaveSpeak)")
|
|
|
self?.haveSpeakVolume = haveSpeak / 100.0
|
|
|
self?.noSpeakVolume = noHaveSpeak / 100.0
|
|
|
-
|
|
|
-// self?.assetPlayer?.volume = self?.noSpeakVolume
|
|
|
+ if !(self?.isNormalPlaying ?? false) && !(self?.isRecording ?? false) {
|
|
|
+ if (self?.deleteRecordBtn.isHidden ?? false) {
|
|
|
+ self?.recordPlayer?.volume = 0
|
|
|
+ self?.assetPlayer?.volume = self?.noSpeakVolume ?? 1.0
|
|
|
+ } else {
|
|
|
+ self?.recordPlayer?.volume = 1.0
|
|
|
+ self?.assetPlayer?.volume = self?.haveSpeakVolume ?? 0.0
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return audioSettingView
|
|
@@ -514,7 +521,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
// MARK: - 录音结束
|
|
|
|
|
|
- recorderManager?.endRecordHandle = { [weak self] voideModel, _ in
|
|
|
+ recorderManager?.endRecordHandle = { [weak self, weak recorderManager] voideModel, _ in
|
|
|
if let sself = self, let model = voideModel, FileManager.default.fileExists(atPath: model.wavFilePath ?? "") {
|
|
|
// 加入到语音数组里
|
|
|
model.endCMTime = sself.currentAssetProgress
|
|
@@ -602,6 +609,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
}
|
|
|
sself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
|
|
|
BFLog(3, message: "重置播放index-\(#function) = \(sself.currentPlayRecordIndex)")
|
|
|
+ recorderManager?.voiceModel = nil
|
|
|
}
|
|
|
}
|
|
|
recorderManager?.cancelRecordHandle = { [weak self] voiceModel in
|
|
@@ -637,9 +645,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
bottomeView.addSubview(progreddL)
|
|
|
// view.addSubview(toolV)
|
|
|
bottomeView.addSubview(recordBtn)
|
|
|
- if itemModels[currItemModelIndex].mediaType == .IMAGE {
|
|
|
- recordBtn.isEnabled = true
|
|
|
- }
|
|
|
bottomeView.addSubview(deleteRecordBtn)
|
|
|
bottomeView.addSubview(withDrawBtn)
|
|
|
// bottomeView.addSubview(changeVoiceBtn)
|
|
@@ -847,13 +852,17 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
switch recognizer.state {
|
|
|
case .began:
|
|
|
touchStart = recognizer.location(in: bottomeView)
|
|
|
- beginOnStartBtn = recordBtn.frame.contains(touchStart)
|
|
|
+ beginOnStartBtn = (beginOnStartBtn || recordBtn.frame.contains(touchStart))
|
|
|
+ BFLog(1, message: "beginOnStartBtn:\(beginOnStartBtn)")
|
|
|
case .changed:
|
|
|
if beginOnStartBtn == true {
|
|
|
let nowPoint = recognizer.location(in: bottomeView)
|
|
|
BFLog(1, message: "nowPoint x: \(nowPoint.x) y:\(nowPoint.y)")
|
|
|
if recordBtn.frame.contains(nowPoint) {
|
|
|
- } else {}
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
case .ended:
|
|
@@ -973,12 +982,11 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
if isDragingProgressSlder {
|
|
|
return
|
|
|
}
|
|
|
- // 开始时间
|
|
|
- let model = PQVoiceModel()
|
|
|
- model.startCMTime = currentAssetProgress
|
|
|
- isRecording = true
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
// progressThumV.progressView.isUserInteractionEnabled = false
|
|
|
- collectionView.isScrollEnabled = false
|
|
|
+// collectionView.isScrollEnabled = false
|
|
|
// 开始录制时清除屏幕上的字幕
|
|
|
subtitleLabel.text = ""
|
|
|
subtitleLabel.backgroundColor = UIColor.clear
|
|
@@ -988,9 +996,16 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
BFLog(message: "录音机初始化错误!!!")
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ // 开始时间
|
|
|
+ beginOnStartBtn = true
|
|
|
+ isRecording = true
|
|
|
|
|
|
- view.isUserInteractionEnabled = false
|
|
|
+ UIApplication.shared.keyWindow?.isUserInteractionEnabled = false
|
|
|
|
|
|
+ let model = PQVoiceModel()
|
|
|
+ model.startCMTime = currentAssetProgress
|
|
|
model.volume = 100
|
|
|
recorderManager?.voiceModel = model
|
|
|
recorderManager?.startRecord()
|
|
@@ -1023,11 +1038,13 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
if !isRecording {
|
|
|
return
|
|
|
}
|
|
|
+ beginOnStartBtn = false
|
|
|
+
|
|
|
isRecording = false
|
|
|
// progressThumV.progressView.isUserInteractionEnabled = true
|
|
|
- collectionView.isScrollEnabled = true
|
|
|
+// collectionView.isScrollEnabled = true
|
|
|
|
|
|
- view.isUserInteractionEnabled = true
|
|
|
+ UIApplication.shared.keyWindow?.isUserInteractionEnabled = true
|
|
|
recorderManager?.stopRecord(isCancel: false)
|
|
|
|
|
|
if currentAssetProgress.seconds - (recorderManager?.voiceModel?.startCMTime.seconds ?? 0) >= 1.0 {
|
|
@@ -1053,8 +1070,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
@objc func cancleRecord() {
|
|
|
isRecording = false
|
|
|
recorderManager?.stopRecord(isCancel: true)
|
|
|
- progressThumV.progressView.isUserInteractionEnabled = true
|
|
|
- collectionView.isScrollEnabled = true
|
|
|
+// progressThumV.progressView.isUserInteractionEnabled = true
|
|
|
+// collectionView.isScrollEnabled = true
|
|
|
+ UIApplication.shared.keyWindow?.isUserInteractionEnabled = true
|
|
|
pause()
|
|
|
}
|
|
|
|
|
@@ -1579,8 +1597,11 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
DispatchQueue.main.async { [weak self, weak itemModel] in
|
|
|
self?.progressThumV.recordItem = itemModel
|
|
|
self?.progressThumV.isHidden = false
|
|
|
+ self?.recordBtn.isEnabled = true
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ recordBtn.isEnabled = true
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1631,7 +1652,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
} else {
|
|
|
assetPlayer = AVPlayer(playerItem: item)
|
|
|
assetPlayer?.volume = noSpeakVolume
|
|
|
- recordBtn.isEnabled = true
|
|
|
avplayerTimeObserver?.invalidate()
|
|
|
avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in
|
|
|
// 进度监控
|
|
@@ -1871,7 +1891,10 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
|
|
|
}
|
|
|
}
|
|
|
cell.btnClickHandle = { [weak self] sender, _ in
|
|
|
- self?.playVideo(btn: sender)
|
|
|
+ guard let sself = self else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sself.playVideo(btn: sself.playBtn)
|
|
|
}
|
|
|
cell.recordItem = recordItem
|
|
|
return cell
|
|
@@ -1894,6 +1917,8 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
|
|
|
BFLog(1, message: "滚动结束")
|
|
|
let page = Int((scrollView.contentOffset.x + scrollView.frame.width / 2) / scrollView.frame.width)
|
|
|
if page != currItemModelIndex {
|
|
|
+ // 切换素材时先把录制状态切为不可用,延迟可点,避免在缩略图未加载出来时即可录制
|
|
|
+ recordBtn.isEnabled = false
|
|
|
// 暂停
|
|
|
pause()
|
|
|
// 如果在录制中,停止录制
|
|
@@ -1913,9 +1938,11 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
|
|
|
playBtn.isSelected = (recordItem.mediaType == .IMAGE && recordItem.voiceStickers.count <= 0)
|
|
|
// 重绘录音区域
|
|
|
progressThumV.recordItem = recordItem
|
|
|
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in
|
|
|
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { [weak self] in
|
|
|
/// 重绘录音进度视图
|
|
|
self?.resetAllIndirectionView()
|
|
|
+ // 重绘录音进度
|
|
|
+ self?.recordBtn.isEnabled = true
|
|
|
}
|
|
|
// 更新缩略图
|
|
|
progressThumV.isHidden = false
|
|
@@ -1935,8 +1962,6 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
|
|
|
if recordItem.mediaType == .VIDEO {
|
|
|
reloadMaterial()
|
|
|
assetPlayer?.seek(to: .zero, toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000))
|
|
|
- } else {
|
|
|
- recordBtn.isEnabled = true
|
|
|
}
|
|
|
if changeItemHandle != nil {
|
|
|
changeItemHandle!(page)
|