【发布时间】:2018-09-11 15:28:04
【问题描述】:
AVAudioRecorder.record() 仅在授予系统警报的麦克风权限后第一次返回 true,而不是总是返回 false
.在模拟器上.record() 总是返回true。
如何在第二次和其他应用程序启动时制作 AVAudioRecordenr 记录?
代码如下:
func startRecording() {
let dirPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] as String
let recordName = "record.wav"
self.audioURL = URL(fileURLWithPath: dirPath + "/" + recordName)
let session = AVAudioSession.sharedInstance()
let microPhoneStatus = AVCaptureDevice.authorizationStatus(for: AVMediaType.audio)
print(microPhoneStatus)
do {
try session.setCategory(AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.default, options: AVAudioSession.CategoryOptions.duckOthers)
} catch {
print(error)
}
guard let recorder = try? AVAudioRecorder(url: self.audioURL, settings: [:]) else {
self.finishRecording(success: false)
return
}
self.audioRecorder = recorder
self.audioRecorder.isMeteringEnabled = true
self.audioRecorder.delegate = self
let prepare = self.audioRecorder.prepareToRecord()
try! session.setActive(true, options: [])
let record = self.audioRecorder.record()
}
已经尝试添加NSMicrophoneUsageDescription 并从代码中请求AVAudioSession requestRecordPermission:
【问题讨论】:
-
有什么问题?
-
问题是 - 如何在第二次和其他应用程序启动时制作 AVAudioRecorder 记录?
-
在录制前删除旧文件有帮助吗?
AVFoundation通常不喜欢覆盖文件。 -
@RhythmicFistman 说得好,但仍然没有结果
-
在模拟器中它工作正常,但我们必须设置 AVAudioSessionCategory 以使其在录制之前在设备上工作。有关解决方案,请查看stackoverflow.com/questions/56024134/…
标签: ios avfoundation avaudiorecorder