Commit 7b34ae43 authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

fix bug

parent 4f12f443
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "编组 5@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "编组 5@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "编组 3@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "编组 3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
This diff is collapsed.
...@@ -61,7 +61,7 @@ class SHMineViewController: SHBaseViewController { ...@@ -61,7 +61,7 @@ class SHMineViewController: SHBaseViewController {
@objc func memberBtnClick(_ sender: UIButton){ @objc func memberBtnClick(_ sender: UIButton){
if SHUserAccountManager.shared.isMember == false { if SHUserAccountManager.shared.isMember == false {
self.goGoods("home_pop") self.goGoods("setting_vip_unlock")
} }
} }
...@@ -173,7 +173,7 @@ extension SHMineViewController:UITableViewDelegate, UITableViewDataSource{ ...@@ -173,7 +173,7 @@ extension SHMineViewController:UITableViewDelegate, UITableViewDataSource{
case 2: case 2:
let webView = SHWebViewController() let webView = SHWebViewController()
webView.url = SHUserAccountManager.shared.h5_urlDic["FeedBackuUrl"] as? String webView.url = SHUserAccountManager.shared.h5_urlDic["FeedBackuUrl"] as? String
webView.title = "联系客服" webView.title = "用户反馈"
self.navigationController?.pushViewController(webView, animated: true) self.navigationController?.pushViewController(webView, animated: true)
break break
case 3: case 3:
......
...@@ -12,7 +12,7 @@ class SHSettingViewController: SHBaseViewController { ...@@ -12,7 +12,7 @@ class SHSettingViewController: SHBaseViewController {
@IBOutlet var tableView: UITableView! @IBOutlet var tableView: UITableView!
var dataSource: [String] = ["用户协议", "隐私政策", "付费用户协议", "联系客服"] var dataSource: [String] = ["用户协议", "隐私政策", "付费用户协议", "用户反馈"]
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -77,7 +77,7 @@ extension SHSettingViewController:UITableViewDelegate, UITableViewDataSource{ ...@@ -77,7 +77,7 @@ extension SHSettingViewController:UITableViewDelegate, UITableViewDataSource{
case 3: case 3:
let webView = SHWebViewController() let webView = SHWebViewController()
webView.url = SHUserAccountManager.shared.h5_urlDic["FeedBackuUrl"] as? String webView.url = SHUserAccountManager.shared.h5_urlDic["FeedBackuUrl"] as? String
webView.title = "联系客服" webView.title = "用户反馈"
self.navigationController?.pushViewController(webView, animated: true) self.navigationController?.pushViewController(webView, animated: true)
break break
default: default:
......
...@@ -430,8 +430,8 @@ ...@@ -430,8 +430,8 @@
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5xA-Fr-3XN"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5xA-Fr-3XN">
<rect key="frame" x="0.0" y="44" width="414" height="758"/> <rect key="frame" x="0.0" y="44" width="414" height="758"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="这个笔记本里还没有笔记" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QYS-Yf-f9g"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="这个笔记本空空如也" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QYS-Yf-f9g">
<rect key="frame" x="106" y="368.5" width="202" height="21.5"/> <rect key="frame" x="124.5" y="368.5" width="165.5" height="21.5"/>
<fontDescription key="fontDescription" type="system" pointSize="18"/> <fontDescription key="fontDescription" type="system" pointSize="18"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="0.84705882349999995" colorSpace="calibratedRGB"/> <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="0.84705882349999995" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
...@@ -567,7 +567,7 @@ ...@@ -567,7 +567,7 @@
<constraints> <constraints>
<constraint firstAttribute="height" constant="50" id="2Sc-NO-FDk"/> <constraint firstAttribute="height" constant="50" id="2Sc-NO-FDk"/>
</constraints> </constraints>
<state key="normal" title="新建笔记"> <state key="normal" title="新建笔记" image="recordDetails_bottom_note">
<color key="titleColor" red="0.25490196079999999" green="0.51372549020000002" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <color key="titleColor" red="0.25490196079999999" green="0.51372549020000002" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
</state> </state>
<userDefinedRuntimeAttributes> <userDefinedRuntimeAttributes>
...@@ -581,12 +581,12 @@ ...@@ -581,12 +581,12 @@
</button> </button>
<button opaque="NO" tag="201" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="d2L-Yp-ObA"> <button opaque="NO" tag="201" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="d2L-Yp-ObA">
<rect key="frame" x="212" y="5" width="184" height="50"/> <rect key="frame" x="212" y="5" width="184" height="50"/>
<color key="backgroundColor" red="0.98039215686274506" green="0.85882352941176465" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="0.80392156862745101" green="0.97254901960784312" blue="0.81568627450980391" alpha="1" colorSpace="calibratedRGB"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="50" id="2vZ-UX-KJh"/> <constraint firstAttribute="height" constant="50" id="2vZ-UX-KJh"/>
</constraints> </constraints>
<state key="normal" title="新建语音笔记"> <state key="normal" title="新建语音笔记" image="recordDetails_bottom_ microphone">
<color key="titleColor" red="0.95686274509803915" green="0.25490196078431371" blue="0.25490196078431371" alpha="1" colorSpace="calibratedRGB"/> <color key="titleColor" red="0.22745098039215686" green="0.73725490196078436" blue="0.2627450980392157" alpha="1" colorSpace="calibratedRGB"/>
</state> </state>
<userDefinedRuntimeAttributes> <userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
...@@ -797,7 +797,9 @@ ...@@ -797,7 +797,9 @@
</scene> </scene>
</scenes> </scenes>
<resources> <resources>
<image name="recordDetails_bottom_ microphone" width="34" height="34"/>
<image name="recordDetails_bottom_mask" width="375" height="8"/> <image name="recordDetails_bottom_mask" width="375" height="8"/>
<image name="recordDetails_bottom_note" width="34" height="34"/>
<image name="recordDetails_icloud" width="16" height="16"/> <image name="recordDetails_icloud" width="16" height="16"/>
<image name="recordDetails_icloud_selected" width="16" height="16"/> <image name="recordDetails_icloud_selected" width="16" height="16"/>
<image name="recordDetails_select" width="20" height="20"/> <image name="recordDetails_select" width="20" height="20"/>
......
...@@ -345,9 +345,19 @@ extension SHRecordDetailsVC { ...@@ -345,9 +345,19 @@ extension SHRecordDetailsVC {
self.markAlertViewShow(false) self.markAlertViewShow(false)
bottomView?.cancel = true bottomView?.cancel = true
if SHUserAccountManager.shared.isMember == false && self.currentModel.dataSources.count > 0{ if SHUserAccountManager.shared.isMember == false {
self.goGoods("home_record")
return let voice = self.currentModel.dataSources.filter({ $0.recordingType == 0 })
let note = self.currentModel.dataSources.filter({ $0.recordingType == 1 })
if voice.count > 0 && sender.tag == 201 {
self.goGoods("new_note_card_voice_note")
return
}
if note.count > 0 && sender.tag == 200 {
self.goGoods("new_note_card_note")
return
}
} }
switch sender.tag { switch sender.tag {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
import UIKit import UIKit
import CloudKit import CloudKit
import IQKeyboardManagerSwift
class SHRecordListViewController: SHBaseViewController { class SHRecordListViewController: SHBaseViewController {
...@@ -111,7 +112,6 @@ class SHRecordListViewController: SHBaseViewController { ...@@ -111,7 +112,6 @@ class SHRecordListViewController: SHBaseViewController {
tableView?.estimatedRowHeight = 44 tableView?.estimatedRowHeight = 44
tableView?.rowHeight = UITableView.automaticDimension tableView?.rowHeight = UITableView.automaticDimension
// tableView?.separatorStyle = .none
} }
func prepareDateSource(){ func prepareDateSource(){
...@@ -192,7 +192,7 @@ class SHRecordListViewController: SHBaseViewController { ...@@ -192,7 +192,7 @@ class SHRecordListViewController: SHBaseViewController {
tableView?.reloadData() tableView?.reloadData()
maskHintLab?.text = "点击上面右上角添加笔记本" maskHintLab?.text = "点击右上角添加笔记本"
maskHintImv?.image = UIImage.init(named: "recordlist_no_data") maskHintImv?.image = UIImage.init(named: "recordlist_no_data")
if dataSources.count == 0 { if dataSources.count == 0 {
self.view.bringSubviewToFront(maskView) self.view.bringSubviewToFront(maskView)
...@@ -211,7 +211,7 @@ class SHRecordListViewController: SHBaseViewController { ...@@ -211,7 +211,7 @@ class SHRecordListViewController: SHBaseViewController {
@objc func userCilck(){ @objc func userCilck(){
if SHUserAccountManager.shared.isMember == false && self.dataSources.count > 0{ if SHUserAccountManager.shared.isMember == false && self.dataSources.count > 0{
self.goGoods("home_record") self.goGoods("new_notebook_add")
return return
} }
...@@ -221,29 +221,17 @@ class SHRecordListViewController: SHBaseViewController { ...@@ -221,29 +221,17 @@ class SHRecordListViewController: SHBaseViewController {
@objc func preposeMember(){ @objc func preposeMember(){
SHUserAccountManager.shared.getNovelInfo { (json) in SHUserAccountManager.shared.getNovelInfo { (json) in
if SHUserAccountManager.shared.isMember == false && SHUserAccountManager.shared.isStartFront == true{ if SHUserAccountManager.shared.isMember == false && SHUserAccountManager.shared.isStartFront == true{
self.goGoods("home_pay") self.goGoods("home_pop")
} }
} }
} }
@IBAction func advertBtnClick(){ @IBAction func advertBtnClick(){
if SHUserAccountManager.shared.isMember == false{ if SHUserAccountManager.shared.isMember == false{
self.goGoods("home_record") self.goGoods("home_pay")
return return
} }
} }
@IBAction func goRecord(){
if CRUserDefaults.isFirstRecord == true{
if SHUserAccountManager.shared.isMember == false{
self.goGoods("home_record")
return
}
}
let record = UIStoryboard.init(name: "Record", bundle: nil).instantiateViewController(withIdentifier: "SHRecordViewController") as! SHRecordViewController
self.navigationController?.pushViewController(record, animated: true)
}
} }
//MARK: 删、重命名、置顶、添加 文件夹 //MARK: 删、重命名、置顶、添加 文件夹
...@@ -265,19 +253,6 @@ extension SHRecordListViewController { ...@@ -265,19 +253,6 @@ extension SHRecordListViewController {
CRUserDefaults.recordList = list CRUserDefaults.recordList = list
} }
// let list = self.keyValueStore.object(forKey: "Folderlist") as? [Dictionary<String, Any>]
//
// if var list = list {
// for (index, dic) in list.enumerated(){
// if dic["id"] as! String == deleteModel.id{
// list.remove(at: index)
// break
// }
// }
// self.keyValueStore.set(list, forKey: "Folderlist")
// self.keyValueStore.synchronize()
// }
self.dataSources.remove(at: indexPath.row) self.dataSources.remove(at: indexPath.row)
self.tableView?.beginUpdates() self.tableView?.beginUpdates()
self.tableView?.deleteRows(at: [indexPath], with: .left) self.tableView?.deleteRows(at: [indexPath], with: .left)
...@@ -317,21 +292,6 @@ extension SHRecordListViewController { ...@@ -317,21 +292,6 @@ extension SHRecordListViewController {
CRUserDefaults.recordList = list CRUserDefaults.recordList = list
} }
// let list = self.keyValueStore.object(forKey: "Folderlist") as? [Dictionary<String, Any>]
//
// if var list = list {
// for (index, dic) in list.enumerated(){
// if dic["id"] as! String == selectModel.id{
// var subDic = dic
// subDic["name"] = renameStr
// list[index] = subDic
// break
// }
// }
// self.keyValueStore.set(list, forKey: "Folderlist")
// self.keyValueStore.synchronize()
// }
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) { DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) {
self.prepareDateSource() self.prepareDateSource()
} }
...@@ -356,21 +316,6 @@ extension SHRecordListViewController { ...@@ -356,21 +316,6 @@ extension SHRecordListViewController {
CRUserDefaults.recordList = list CRUserDefaults.recordList = list
} }
// let list = keyValueStore.object(forKey: "Folderlist") as? [Dictionary<String, Any>]
//
// if var list = list {
// for (index, dic) in list.enumerated(){
// if dic["id"] as! String == deleteModel.id{
// var subDic = dic
// subDic["top"] = !deleteModel.top
// list[index] = subDic
// break
// }
// }
// keyValueStore.set(list, forKey: "Folderlist")
// keyValueStore.synchronize()
// }
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) { DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) {
self.prepareDateSource() self.prepareDateSource()
} }
...@@ -404,18 +349,6 @@ extension SHRecordListViewController { ...@@ -404,18 +349,6 @@ extension SHRecordListViewController {
CRUserDefaults.recordList = list CRUserDefaults.recordList = list
} }
// let list = self.keyValueStore.object(forKey: "Folderlist") as? [Dictionary<String, Any>]
//
// if var list = list {
// list.append(modelDict)
// self.keyValueStore.set(list, forKey: "Folderlist")
// self.keyValueStore.synchronize()
// }else{
// let list = [modelDict]
// self.keyValueStore.set(list, forKey: "Folderlist")
// self.keyValueStore.synchronize()
// }
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) { DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(333)) {
self.prepareDateSource() self.prepareDateSource()
} }
...@@ -649,7 +582,7 @@ extension SHRecordListViewController: UISearchResultsUpdating, UISearchBarDelega ...@@ -649,7 +582,7 @@ extension SHRecordListViewController: UISearchResultsUpdating, UISearchBarDelega
}else { }else {
self.view.sendSubviewToBack(maskView) self.view.sendSubviewToBack(maskView)
} }
markCountLab?.text = "笔记本总数:\(searchDataSource.count)" markCountLab?.text = "笔记本总数:\(folderSearchArr.count)"
} }
} }
} }
...@@ -657,6 +590,7 @@ extension SHRecordListViewController: UISearchResultsUpdating, UISearchBarDelega ...@@ -657,6 +590,7 @@ extension SHRecordListViewController: UISearchResultsUpdating, UISearchBarDelega
//MARK: searchController delegate //MARK: searchController delegate
extension SHRecordListViewController: UISearchControllerDelegate{ extension SHRecordListViewController: UISearchControllerDelegate{
func willPresentSearchController(_ searchController: UISearchController){ func willPresentSearchController(_ searchController: UISearchController){
IQKeyboardManager.shared.enable = false
UIView.animate(withDuration: 0.25) { UIView.animate(withDuration: 0.25) {
self.searchView.frame = CGRect(x:0, y: 0, width: SCREEN_WIDTH, height: 56) self.searchView.frame = CGRect(x:0, y: 0, width: SCREEN_WIDTH, height: 56)
...@@ -671,6 +605,7 @@ extension SHRecordListViewController: UISearchControllerDelegate{ ...@@ -671,6 +605,7 @@ extension SHRecordListViewController: UISearchControllerDelegate{
} }
func willDismissSearchController(_ searchController: UISearchController){ func willDismissSearchController(_ searchController: UISearchController){
IQKeyboardManager.shared.enable = true
UIView.animate(withDuration: 0.25) { UIView.animate(withDuration: 0.25) {
self.searchView.frame = CGRect(x: 8, y: 0, width: SCREEN_WIDTH-16, height: 56) self.searchView.frame = CGRect(x: 8, y: 0, width: SCREEN_WIDTH-16, height: 56)
} completion: { (result) in } completion: { (result) in
......
...@@ -26,7 +26,7 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -26,7 +26,7 @@ class SHRecordViewController: SHBaseViewController{
private var currentModel: SHRecordModel? private var currentModel: SHRecordModel?
private var currentTxt: String? private var currentTxt: String?
private var currentAddress: String? private var currentAddress: String = ""
private var start: Bool = false private var start: Bool = false
private var save: Bool = false private var save: Bool = false
...@@ -49,7 +49,8 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -49,7 +49,8 @@ class SHRecordViewController: SHBaseViewController{
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
setupUI() setupUI()
configPathFile() configPathFile()
...@@ -66,6 +67,8 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -66,6 +67,8 @@ class SHRecordViewController: SHBaseViewController{
} }
override func viewDidDisappear(_ animated: Bool) { override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
NotificationCenter.default.removeObserver(self) NotificationCenter.default.removeObserver(self)
} }
...@@ -77,6 +80,9 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -77,6 +80,9 @@ class SHRecordViewController: SHBaseViewController{
override func goback() { override func goback() {
super.goback() super.goback()
saveContent()
self.recorder_mp3.stop()
self.recorderManager.stop()
saveSuccessCallBack?(folderModel) saveSuccessCallBack?(folderModel)
} }
...@@ -156,6 +162,7 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -156,6 +162,7 @@ class SHRecordViewController: SHBaseViewController{
self.secondsLabel.text = "00:00:00" self.secondsLabel.text = "00:00:00"
self.seconds = 0 self.seconds = 0
self.save = false self.save = false
self.recorder_mp3.stop()
self.recorderManager.stop() self.recorderManager.stop()
} }
DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {
...@@ -268,8 +275,8 @@ class SHRecordViewController: SHBaseViewController{ ...@@ -268,8 +275,8 @@ class SHRecordViewController: SHBaseViewController{
model.recordingType = 0 model.recordingType = 0
model.createDate = nowDate model.createDate = nowDate
model.modifyDate = nowDate model.modifyDate = nowDate
model.address = currentAddress ?? "" model.address = (currentAddress.length != 0) ? currentAddress : "未知位置"
model.rename = currentAddress ?? "" model.rename = (currentAddress.length != 0) ? currentAddress : "未知位置"
model.txt = "\n"+(currentTxt ?? "") model.txt = "\n"+(currentTxt ?? "")
model.pathFile = mp3_file_path model.pathFile = mp3_file_path
model.pcmPathFile = pcm_file_path model.pcmPathFile = pcm_file_path
...@@ -391,7 +398,7 @@ extension SHRecordViewController{ ...@@ -391,7 +398,7 @@ extension SHRecordViewController{
} }
func textView_text(_ text:String) -> NSAttributedString { func textView_text(_ text:String) -> NSAttributedString {
let address = "地点: " + (self.currentAddress ?? "") let address = "地点: " + self.currentAddress
let content = address + "\n \n" + text let content = address + "\n \n" + text
......
...@@ -29,10 +29,10 @@ ...@@ -29,10 +29,10 @@
<subviews> <subviews>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="这是一个旧的笔记本" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4On-7k-axI"> <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="这是一个旧的笔记本" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4On-7k-axI">
<rect key="frame" x="0.0" y="0.0" width="246" height="24"/> <rect key="frame" x="0.0" y="0.0" width="246" height="24"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/> <fontDescription key="fontDescription" type="system" pointSize="16"/>
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits"/>
</textField> </textField>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MPy-Fs-pk7"> <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MPy-Fs-pk7">
<rect key="frame" x="246" y="0.0" width="32" height="24"/> <rect key="frame" x="246" y="0.0" width="32" height="24"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="MPy-Fs-pk7" secondAttribute="height" multiplier="24:18" id="By7-tv-lrR"/> <constraint firstAttribute="width" secondItem="MPy-Fs-pk7" secondAttribute="height" multiplier="24:18" id="By7-tv-lrR"/>
......
...@@ -83,13 +83,15 @@ class SHAVAudioManager: NSObject { ...@@ -83,13 +83,15 @@ class SHAVAudioManager: NSObject {
var decibelsCallBack:((Float)->Void)? var decibelsCallBack:((Float)->Void)?
var state = SHRecordState.prepare var state = SHRecordState.prepare
private func configRecorder(){ private func configRecorder(_ result:((Bool)->Void)?){
speechRecognizer?.delegate = self speechRecognizer?.delegate = self
AVAudioSession.sharedInstance().requestRecordPermission { (allowed) in AVAudioSession.sharedInstance().requestRecordPermission { (allowed) in
if !allowed { if !allowed {
return return
} }else{
result?(true)
}
} }
let session:AVAudioSession = AVAudioSession.sharedInstance() let session:AVAudioSession = AVAudioSession.sharedInstance()
do { do {
...@@ -173,12 +175,14 @@ class SHAVAudioManager: NSObject { ...@@ -173,12 +175,14 @@ class SHAVAudioManager: NSObject {
self.monitor?.updateMeters() self.monitor?.updateMeters()
// 获得0声道的音量,完全没有声音-160.0,0是最大音量 // 获得0声道的音量,完全没有声音-160.0,0是最大音量
let decibels = (self.monitor?.peakPower(forChannel: 0))! let decibels = (self.monitor?.peakPower(forChannel: 0))!
// let hehe = (self.monitor?.averagePower(forChannel: 0))!
let lowPassResults = pow(10, (0.05 * (self.monitor?.peakPower(forChannel: 0))!)); let lowPassResults = pow(10, (0.05 * (self.monitor?.peakPower(forChannel: 0))!));
decibelsCallBack?(lowPassResults) decibelsCallBack?(lowPassResults)
// print("lowPassResults == \(lowPassResults)") // print("lowPassResults == \(lowPassResults)")
// print("decibels == \(decibels)") // print("decibels == \(decibels)")
// print("hehe == \(hehe)")
if decibels > -44 { if decibels > -44 {
if recognitionTask?.isCancelled == true && self.state == SHRecordState.start{ if recognitionTask?.isCancelled == true && self.state == SHRecordState.start{
start() start()
...@@ -197,13 +201,15 @@ class SHAVAudioManager: NSObject { ...@@ -197,13 +201,15 @@ class SHAVAudioManager: NSObject {
func start(){ func start(){
self.state = SHRecordState.start self.state = SHRecordState.start
self.configRecorder() self.configRecorder{ result in
self.configSpeechTask()
self.configSpeechTask()
self.monitor?.record()
startTime = CACurrentMediaTime() self.monitor?.record()
if recorderTimer == nil { self.startTime = CACurrentMediaTime()
recorderTimer = SHTimer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(updateMeters), userInfo: nil, repeats: true) if self.recorderTimer == nil {
self.recorderTimer = SHTimer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.updateMeters), userInfo: nil, repeats: true)
}
} }
} }
......
...@@ -34,7 +34,7 @@ import SwiftyJSON ...@@ -34,7 +34,7 @@ import SwiftyJSON
@objc var isMember: Bool { @objc var isMember: Bool {
// return true return true
let dateFormatter = DateFormatter() let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_CN") dateFormatter.locale = Locale(identifier: "en_CN")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment