Swift 长按录制声音:使用 AVAudioRecorder 实现简单录音功能
在 Swift 中,可以使用 AVAudioRecorder 类来录制声音。以下是一个简单的例子,展示如何使用长按手势来录制声音:
首先,在你的视图控制器中添加一个长按手势识别器,并将其与一个方法连接:
import UIKit
import AVFoundation
class ViewController: UIViewController, UIGestureRecognizerDelegate {
var audioRecorder: AVAudioRecorder!
var isRecording = false
override func viewDidLoad() {
super.viewDidLoad()
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
longPressGesture.delegate = self
longPressGesture.minimumPressDuration = 0.5 // 设置最小长按时间
view.addGestureRecognizer(longPressGesture)
}
@objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer) {
if gestureRecognizer.state == .began { // 长按开始
startRecording()
} else if gestureRecognizer.state == .ended { // 长按结束
stopRecording()
}
}
func startRecording() {
let audioFilename = getDocumentsDirectory().appendingPathComponent('recording.m4a')
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.record()
isRecording = true
} catch {
print('录制声音时出错:(error.localizedDescription)')
}
}
func stopRecording() {
audioRecorder.stop()
isRecording = false
}
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
}
在上述代码中,handleLongPress 方法会在长按手势开始和结束时被调用。当长按手势开始时,会调用 startRecording 方法来开始录制声音。startRecording 方法会创建一个 AVAudioRecorder 实例,并将录制的声音保存到设备的文档目录中。当长按手势结束时,会调用 stopRecording 方法来停止录制。
请注意,你需要在 Info.plist 文件中添加对麦克风的访问权限,否则无法进行录音。在 Info.plist 文件中添加一个 Privacy - Microphone Usage Description 键,并为其提供一个描述。
这只是一个简单的示例,你可以根据自己的需求进行自定义。
原文地址: https://www.cveoy.top/t/topic/qmSZ 著作权归作者所有。请勿转载和采集!