From: liangzhenying <867174124@qq.com> Date: Mon, 22 Dec 2025 09:27:44 +0000 (+0800) Subject: 改了音频文件路径。动态获取当前的沙盒路径 X-Git-Tag: 1.0.2~25 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=8abd72bd6bfbb362447db1904b0896cced7a1301;p=mirrors%2FShenYin.git 改了音频文件路径。动态获取当前的沙盒路径 --- diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift index 99b43d7..48bd20b 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift @@ -17,7 +17,17 @@ public class DCBleManager{ func send(_ sender:BleSender){ if let connectPeripheral = connectPeripheral, let writeCha = writeCha { DCLogger.debug("发",writeCha.uuid.uuidString,sender.data.joined()) - connectPeripheral.writeValue(sender.data, for: writeCha, type:.withoutResponse) + + +// if sender.data[1] == 0x10,sender.data[2] == 0x01 { +// let text1 = "ba100101025b7b226964223a302c226e616d65223a22e69da8e5ae97e7baac2de4b880e6aca1e5b0b1e5a5bd20284c697665292e6d7033222c2273697a65223a343233323632342c22647572223a307d2c7b226964223a312c226e616d65223a22e5bca0e7b4abe8b1aa2de58fafe4b88de58fafe4bba52e6d7033222c2273697a65223a393635383835322c22647572223a307d2c7b226964223a322c226e616d65223a224245594f4e442de79c9fe79a84e788b1e4bda02e6d7033222c2273697a65223a31313031363533372c22647572223a307d2c7b226964223a332c226e616d65223a22472e452e4d2e20e98293e7b4abe6a38b2de69c89e5bf83e4baba2e6d7033222c2273697a65223a393630333832392c22647572223a307d2c7b226964223a342c226e616d65223a2248414e41e88f8ae6a293e4b9942de68891e4b88de698afe5a5b92e6d7033222c2273697a65223a373932343138312c22647572223a307d2c7b226964223a352c226e616d65223a2248414e412de5bf98e8aeb0e68891e887aae5b7b12e6d7033222c2273697a65223a393330343938342c22647572223a307d5da701d9" +// sender.completion?(.response.code(.success).value(Data.dataWithHexString(text1))) +// let text2 = "ba100102025b7b226964223a362c226e616d65223a224d722e3136e7bd97e99abde6b0b82de5a484e5a484e590bb2e6d7033222c2273697a65223a383533333836302c22647572223a307d2c7b226964223a372c226e616d65223a22536f6c65722de9a2a8e79a84e5ada3e7af802e6d7033222c2273697a65223a31303031333432352c22647572223a307d2c7b226964223a382c226e616d65223a225477696e732de6818be788b1e5a4a7e8bf87e5a4a92e6d7033222c2273697a65223a393039383039362c22647572223a307d2c7b226964223a392c226e616d65223a225477696e732de6a3aee5b7b4e79a87e5908e2e6d7033222c2273697a65223a373436323832322c22647572223a307d5d0e012c" +// sender.completion?(.response.code(.success).value(Data.dataWithHexString(text2))) +// } +// else{ + connectPeripheral.writeValue(sender.data, for: writeCha, type:.withoutResponse) +// } } } func sendToStarburst(_ data:Data){ @@ -25,7 +35,7 @@ public class DCBleManager{ full.append(data) full.addCrc() if let connectPeripheral = connectPeripheral, let writeCha = writeCha { - DCLogger.debug("发",writeCha.uuid.uuidString,full.joined()) +// DCLogger.debug("发",writeCha.uuid.uuidString,full.joined()) connectPeripheral.writeValue(full, for: writeCha, type:.withoutResponse) } } @@ -67,7 +77,7 @@ public extension DCBleManager{ } func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { - DCLogger.debug("收 ",characteristic.uuid,characteristic.value?.joined() ?? "") +// DCLogger.debug("收 ",characteristic.uuid,characteristic.value?.joined() ?? "") guard let data = characteristic.value else { return } if data.count > 4 && data[0] == 0xBA { if let sender = BleSender.answer(data) { diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCChat.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCChat.swift index 06f9ec1..34b409e 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCChat.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCChat.swift @@ -27,7 +27,7 @@ public class DCChat{ /// 回复回调 public var responseCallback:((String,Int)->Void)? /// 对话语音回调 - public var dataCallback:((Int,Data?,Bool)->Void)? + public var dataCallback:((Int,Data?,Bool,Int)->Void)? /// 状态码回调 public var codeCallback:((Int)->Void)? /// 结束对话回调 @@ -38,7 +38,7 @@ public class DCChat{ /// 是否进⾏Tts,默认false public var tts:Bool = true /// 默认pcm。⽀持pcm / ogg_opus / mp3 - public var ttsAudioFormat:String = "mp3" + public var ttsAudioFormat:String = "pcm" /// 语⾔编码,默认为普通话(zh-CN) public var language:String = "zh-CN" @@ -101,7 +101,7 @@ extension DCChat{ } responseVoice: { [weak self] (dialogId,data, finish,sampleRate) in guard let self = self else { return } self.dialogId = dialogId - dataCallback?(dialogId,data,finish) + dataCallback?(dialogId,data,finish,sampleRate) } stateChange: {[weak self] code in DCLogger.debug("状态改变 \(code)") self?.codeCallback?(code.rawValue) diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCDevice.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCDevice.swift index 943f2f8..5e72154 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCDevice.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCDevice.swift @@ -9,23 +9,30 @@ import Foundation public class DCDevice{ public static let shared = DCDevice() + /// ai事件回调 /// 0x01(打开AI对话) // 0x02(关闭AI对话) // 0x03(打开耳机录音) // 0x04(关闭耳机录音) public var eventCallback:((UInt8)->Void)? + + public var muiscPlayCallback:((UInt16,UInt16,UInt16)->Void)? + /// func receiveNotice(_ data:Data){ if data[1] == 0x10,data[2] == 0x06{ let index = UInt16(data[3...4].int) let pro = UInt16(data[5...6].int) let total = UInt16(data[7...8].int) DCLogger.debug("播放进度index = \(index),total = \(total),pro = \(pro)") + muiscPlayCallback?(index,total,pro) } } } extension DCDevice{ + /// + /// public func getBatery(finished:@escaping ((Int,Int)?)->Void){ var head: UInt8 = 0xBA var cmd: UInt8 = 0x09 diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCMusic.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCMusic.swift index 554052f..afc82d2 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCMusic.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCMusic.swift @@ -8,13 +8,13 @@ import Foundation public class DCMusic:Codable{ /// id - public var id = "" + public var id:UInt16 = 0 /// 名字 - public var name = "" + public var name:String = "" /// 大小 - public var size = "" + public var size:Int = 0 /// 时长 - public var dur = 0 + public var dur:Int = 0 } extension DCDevice{ @@ -71,10 +71,10 @@ extension DCDevice{ return } - let index = result.data[4].int - let total = result.data[5].int + let index = result.data[3].int + let total = result.data[4].int DCLogger.debug(total,index) - let data = result.data.subdata(in: 6..Void){ + public func musicPause(finished:@escaping (Bool)->Void){ var head: UInt8 = 0xBA var cmd: UInt8 = 0x10 var data:UInt8 = 0x04 @@ -230,12 +230,10 @@ extension DCDevice{ sender.completion = { result in DCLogger.debug("\(result.description)") if result.isSuccess{ - let value = UInt16(result.data[3...4].int) - DCLogger.debug(value) - finished(value,true) + finished(true) } else{ - finished(nil,false) + finished(false) } } DCBleManager.shared.send(sender) diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/BaseVC.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/BaseVC.swift index 3b4e8c0..0143ef5 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/BaseVC.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/BaseVC.swift @@ -12,6 +12,13 @@ class BaseVC: UIViewController { deinit { print("\(Self.self) 销毁") } + public init() { + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = .white diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/HomeVC.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/HomeVC.swift index 80de6b8..a8891e0 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/HomeVC.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/HomeVC.swift @@ -22,6 +22,7 @@ class HomeVC: BaseVC{ ("现场录音","recordAction"), ("耳机录音","bleAsrAction"), ("对话","chatAction"), + ("tts","ttsAction"), ] override func viewDidLoad() { @@ -113,6 +114,10 @@ extension HomeVC{ @objc func chatAction(){ navigationController?.pushViewController(ChatVC(), animated: true) } + @objc func ttsAction(){ + navigationController?.pushViewController(TtsVC(), animated: true) + } + } extension HomeVC{ diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/MusicVC.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/MusicVC.swift index ad60cf4..4699635 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/MusicVC.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/MusicVC.swift @@ -10,7 +10,8 @@ import SnapKit import DeepChordsSdk import Toast_Swift class MusicVC: BaseVC{ - let list = [DCMusic]() + var dataList = [DCMusic]() + let tableView = UITableView(frame: .zero, style: .plain) override func viewDidLoad() { super.viewDidLoad() @@ -22,11 +23,14 @@ class MusicVC: BaseVC{ func setupViews(){ self.title = "音乐" - let tableView = UITableView(frame: CGRectMake(0, 80, self.view.bounds.size.width, self.view.bounds.size.height), style: .plain) + tableView.delegate = self tableView.dataSource = self tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") view.addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } } } @@ -35,22 +39,22 @@ extension MusicVC:UITableViewDelegate,UITableViewDataSource { return 60 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return list.count + return dataList.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) - cell.textLabel?.text = list[indexPath.row].name + cell.textLabel?.text = dataList[indexPath.row].name return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let data = list[indexPath.row] + let data = dataList[indexPath.row] navigationController?.pushViewController(PlayerVC(music: data), animated: true) } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { - guard let id = UInt16(list[indexPath.row].id) else {return} + let id = dataList[indexPath.row].id DCDevice.shared.musicDelete(list: [id]) { result in } @@ -67,14 +71,16 @@ extension MusicVC:UITableViewDelegate,UITableViewDataSource { extension MusicVC { func loadData(){ - DCDevice.shared.getTotalMusic { num in - if let num = num,num > 0{ +// DCDevice.shared.getTotalMusic { num in +// if let num = num,num > 0{ DCDevice.shared.getMusicList(size: 10, index: 0) {[weak self] (list, result) in guard let self = self else{return} guard let list = list else{return} + self.dataList = list + self.tableView.reloadData() } - } - } +// } +// } } } diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/PlayerVC.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/PlayerVC.swift index 6c8d515..54f6e54 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/PlayerVC.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/PlayerVC.swift @@ -10,13 +10,16 @@ import SnapKit import DeepChordsSdk import Toast_Swift class PlayerVC: BaseVC{ - let playBtn = UIButton(type: .custom) + let list = ["顺序循环","随机","单曲"] + let label = UILabel() let modeBtn = UIButton(type: .custom) + let playBtn = UIButton(type: .custom) let music:DCMusic init(music:DCMusic) { self.music = music super.init() } + @MainActor required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") @@ -26,37 +29,98 @@ class PlayerVC: BaseVC{ // Do any additional setup after loading the view. setupViews() + loadMode() + setupSDK() + } + func setupSDK(){ + DCDevice.shared.muiscPlayCallback = { [weak self] (index,total,pro) in + guard let self = self else{return} + label.text = "歌曲名称:\(music.name)\n" + "id:\(music.id)\n" + "大小:\(music.size)\n" + "时长:\(music.dur)\n" + "进度:\(total) \(pro)" + } } - func setupViews(){ - self.title = "eq" + self.title = music.name + + self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: modeBtn) + modeBtn.do { v in + v.addTarget(self, action: #selector(modeAction), for: .touchUpInside) + v.setTitleColor(.blue, for: .normal) + } + modeBtn.frame = CGRect(x: 0, y: 0, width: 80, height: 44) + label.do { v in + v.text = "歌曲名称:\(music.name)\n" + "id:\(music.id)\n" + "大小:\(music.size)\n" + "时长:\(music.dur)\n" + v.numberOfLines = 0 + } + playBtn.do { v in v.setTitle("播放", for: .normal) v.setTitle("暂停", for: .selected) v.addTarget(self, action: #selector(playBtnAction), for: .touchUpInside) + v.backgroundColor = .blue } - playBtn.frame = CGRect(x: 0, y: 0, width: 50, height: 44) - self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: playBtn) - modeBtn.do { v in - v.setTitle("播放", for: .normal) - v.setTitle("暂停", for: .selected) - v.addTarget(self, action: #selector(playBtnAction), for: .touchUpInside) + view.addSubview(label) + view.addSubview(playBtn) + + label.snp.makeConstraints { make in + make.size.equalTo(300) + make.center.equalToSuperview() + } + + playBtn.snp.makeConstraints { make in + make.width.centerX.bottom.equalToSuperview() + make.height.equalTo(80) } } @objc func playBtnAction(){ - guard let id = UInt16(music.id) else {return} + let id = music.id playBtn.isSelected = !playBtn.isSelected if playBtn.isSelected { - DCDevice.shared.musicPlay(index: id) { index, result in - + DCDevice.shared.musicPlay(index: id) {[weak self] index, result in + guard let self = self else {return} + } } else{ - DCDevice.shared.musicPause { index, result in + DCDevice.shared.musicPause { result in + + } + } + } + func loadMode(){ + DCDevice.shared.getMusicPlayMode { [weak self] mode, success in + guard let self = self else {return} + if let mode = mode{ + modeBtn.setTitle(list[Int(mode)], for: .normal) } } } + @objc func modeAction(){ + let vc = UIAlertController(title: nil, message: "请选择", preferredStyle: .actionSheet) + let action0 = UIAlertAction(title: "顺序循环", style: .default) { action in + self.setMuiscPlayMode(0x00) + } + let action1 = UIAlertAction(title: "随机", style: .default) { action in + self.setMuiscPlayMode(0x01) + } + let action2 = UIAlertAction(title: "单曲", style: .default) { action in + self.setMuiscPlayMode(0x02) + } + let action3 = UIAlertAction(title: "取消", style: .cancel) { action in + + } + vc.addAction(action0) + vc.addAction(action1) + vc.addAction(action2) + vc.addAction(action3) + self.present(vc, animated: true) + } + func setMuiscPlayMode(_ mode:UInt8){ + modeBtn.setTitle(list[Int(mode)], for: .normal) + DCDevice.shared.setMusicPlayMode(mode: mode) { result in + + } + } } diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TttsVC.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TtsVC.swift similarity index 96% rename from DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TttsVC.swift rename to DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TtsVC.swift index fd6433a..d320c52 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TttsVC.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/TtsVC.swift @@ -2,7 +2,7 @@ import UIKit import StarburstSdk import AVFoundation -class TttsVC: UIViewController { +class TtsVC: BaseVC { private let textField = UITextField() private let speedSlider = UISlider() private let speedLabel = UILabel() @@ -31,7 +31,7 @@ class TttsVC: UIViewController { speedLabel.text = "语速:\(String(format: "%.1f", ttsSpeed))x" synthButton.setTitle("合成并播放", for: .normal) - synthButton.addTarget(self, action: #selector(startTTS), for: .touchUpInside) + synthButton.addTarget(self, action: #selector(starTts), for: .touchUpInside) logView.isEditable = false logView.font = UIFont.systemFont(ofSize: 14) @@ -54,7 +54,7 @@ class TttsVC: UIViewController { speedLabel.text = "语速:\(String(format: "%.1f", ttsSpeed))x" } - @objc func startTTS() { + @objc func starTts() { guard let text = textField.text, !text.isEmpty else { appendLog("请输入文本") return @@ -121,7 +121,7 @@ class TttsVC: UIViewController { } } -extension TttsVC: TextToSpeechCallback { +extension TtsVC: TextToSpeechCallback { func onResult(_ response: String) { appendLog("合成完成,开始播放...\n") guard let jsonObj = try? JSONSerialization.jsonObject(with: response.data(using: .utf8)!, options: []) as? [String:Any], diff --git a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/DCChatManager.swift b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/DCChatManager.swift index cecd788..5a0976d 100644 --- a/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/DCChatManager.swift +++ b/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/DCChatManager.swift @@ -109,45 +109,46 @@ class DCChatManager:NSObject{ } chatNeedReloadData?() } - DCChat.shared.dataCallback = {[weak self] dialogId, data, finish in - // PcmSound.sharedInstance().delegate = self + DCChat.shared.dataCallback = {[weak self] (dialogId, data, finish,sampleRate) in + PcmSound.sharedInstance().delegate = self guard let self = self else { return } - // if (!isTtsPlaying) { - // isTtsPlaying = true - // DCLogger.debug("开始播放") - // DCChat.shared.startPlayTtsAudio() - // } - // DCLogger.debug("收到音频数据", data?.count ?? 0) - // PcmSound.sharedInstance().feed(data) + if (!isTtsPlaying) { + isTtsPlaying = true + DCLogger.debug("开始播放") + DCChat.shared.startPlayTtsAudio() + } + DCLogger.debug("收到音频数据", data?.count ?? 0,sampleRate) + PcmSound.sharedInstance().feed(data) - if finish { - self.saveToFile(data: self.audioData!) - self.audioData = nil - } else { - if self.audioData == nil { - self.audioData = Data() - } - self.audioData?.append(data!) - } +// if finish { +// self.saveToFile(data: self.audioData!) +// self.audioData = nil +// } else { +// if self.audioData == nil { +// self.audioData = Data() +// } +// self.audioData?.append(data!) +// } } DCChat.shared.codeCallback = {[weak self] code in - self?.codeCallback?(code) + guard let self = self else { return } + self.codeCallback?(code) - // if code == 20001 { - // if (self.isTtsPlaying) { - // self.isTtsPlaying = false - // PcmSound.sharedInstance().cleanup() - // PcmSound.sharedInstance().setup(16000, withchannels: 1) - // - //// var options: AVAudioSession.CategoryOptions = [.allowBluetooth] - //// do { - //// try AVAudioSession.sharedInstance().setCategory(.playback, options: [options]) - //// try AVAudioSession.sharedInstance().setActive(true) - //// } catch { - //// DCLogger.debug(error) - //// } - // } - // } + if code == 20001 { + if (self.isTtsPlaying) { + self.isTtsPlaying = false + PcmSound.sharedInstance().cleanup() + PcmSound.sharedInstance().setup(16000, withchannels: 1) + + var options: AVAudioSession.CategoryOptions = [.allowBluetooth] + do { + try AVAudioSession.sharedInstance().setCategory(.playback, options: [options]) + try AVAudioSession.sharedInstance().setActive(true) + } catch { + DCLogger.debug(error) + } + } + } } DCChat.shared.finishCallback = {[weak self] path in self?.finishCallback?(path) diff --git a/ShenYin/ShenYin/Api/LogManager.swift b/ShenYin/ShenYin/Api/LogManager.swift index f61e054..8735333 100644 --- a/ShenYin/ShenYin/Api/LogManager.swift +++ b/ShenYin/ShenYin/Api/LogManager.swift @@ -9,7 +9,7 @@ import Foundation /// 日记管理 class Logger { - static var isDebug: Bool = false + static var isDebug: Bool = true fileprivate static let shared = Logger() private var fileHandle:FileHandle? diff --git a/ShenYin/ShenYin/Cache/RecordCache.swift b/ShenYin/ShenYin/Cache/RecordCache.swift index 7cb810c..afeddbd 100644 --- a/ShenYin/ShenYin/Cache/RecordCache.swift +++ b/ShenYin/ShenYin/Cache/RecordCache.swift @@ -43,6 +43,14 @@ class RecordCache { func getList() -> [RecordDetailModel] { if let data = userDefaults.data(forKey: deviceListKey), let deviceList = NSKeyedUnarchiver.unarchiveObject(with: data) as? [RecordDetailModel] { +// let path = NSHomeDirectory() + "/Documents/" + + for item in deviceList { + if let last = item.path.components(separatedBy: "Documents").last{ + item.path = NSHomeDirectory() + "/Documents/\(last)" + } + } + return deviceList } return [] diff --git a/ShenYin/ShenYin/UI/Sleep/AudioPlayerManager.swift b/ShenYin/ShenYin/UI/Sleep/AudioPlayerManager.swift index 5eb5b51..c4642c2 100644 --- a/ShenYin/ShenYin/UI/Sleep/AudioPlayerManager.swift +++ b/ShenYin/ShenYin/UI/Sleep/AudioPlayerManager.swift @@ -19,6 +19,7 @@ class AudioPlayerManager { var currentProgress: Float = 0 var duration: Float = 0 + var isReady = false typealias ProgressCallback = (_ current: Float, _ duration: Float) -> Void var progressCallback: ProgressCallback? @@ -37,13 +38,18 @@ class AudioPlayerManager { setupNowPlayingInfoCenter(url) setupRemoteControl() startProgressMonitoring() + isReady = true } catch let error { print("Error playing music: \(error.localizedDescription)") + isReady = false } } func start() { + if isReady == false { + return + } audioPlayer?.play() startProgressMonitoring() } diff --git a/ShenYin/ShenYin/UI/common/pop/PopPlayView.swift b/ShenYin/ShenYin/UI/common/pop/PopPlayView.swift index febaa5c..882779a 100644 --- a/ShenYin/ShenYin/UI/common/pop/PopPlayView.swift +++ b/ShenYin/ShenYin/UI/common/pop/PopPlayView.swift @@ -92,6 +92,7 @@ class PopPlayView: BasePresentView2 { v.addTarget(self, action: #selector(closeAction), for: .touchUpInside) } + AudioPlayView.shared.hiden() AudioPlayerManager.shared.musicModel = nil AudioPlayerManager.shared.progressCallback = {[weak self] current,duration in guard let self = self else {return}