在 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 键,并为其提供一个描述。

这只是一个简单的示例,你可以根据自己的需求进行自定义。

Swift 长按录制声音:使用 AVAudioRecorder 实现简单录音功能

原文地址: https://www.cveoy.top/t/topic/qmSZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录