Ich bin neu bei Swift, daher wird jede Hilfe gerne angenommen. Ich erstelle dieses Projekt, um aufzuzeichnen, gespeicherte Daten zu speichern und Daten in der Tabellenansicht anzuzeigen. Im Moment kann ich nur die aktuelle Aufnahme aufnehmen und abspielen. Wenn ich die Aufnahme erneut drücke, wird das vorher aufgenommene Audio gelöscht. Aber ich möchte das aufgenommene Audio dauerhaft speichern und in der Tabellenansicht anzeigen. Das habe ich bis jetzt erreicht. Danke im Voraus!Gespeicherte Sprachnotizen in Tabellenansicht speichern und anzeigen Swift 3
import UIKit
import AVFoundation
class ViewController: UIViewController, AVAudioPlayerDelegate,
AVAudioRecorderDelegate {
var audioPlayer: AVAudioPlayer?
var audioRecorder: AVAudioRecorder?
@IBOutlet weak var recordAudio: UIButton!
@IBOutlet weak var stopAudio: UIButton!
@IBOutlet weak var playAudio: UIButton!
var arrayData: [FileManager] = []
override func viewDidLoad() {
super.viewDidLoad()
playAudio.isEnabled = false
stopAudio.isEnabled = false
// Creating File Manager
let fileMgr = FileManager.default
let dirPath = fileMgr.urls(for: .documentDirectory, in: .userDomainMask)
let soundFileUrl = dirPath[0].appendingPathComponent("sound.caf")
let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0 ] as [String:Any]
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch {
print(error.localizedDescription)
}
do {
try audioRecorder = AVAudioRecorder(url: soundFileUrl, settings: recordSettings as [String : Any])
audioRecorder?.prepareToRecord()
} catch {
print(error.localizedDescription)
}
}
@IBAction func recordButton(_ sender: Any) {
if audioRecorder?.isRecording == false {
playAudio.isEnabled = false
stopAudio.isEnabled = true
audioRecorder?.record()
}
}
@IBAction func stopButton(_ sender: Any) {
stopAudio.isEnabled = false
playAudio.isEnabled = true
recordAudio.isEnabled = true
if audioRecorder?.isRecording == true{
audioRecorder?.stop()
} else {
audioPlayer?.stop()
}
}
@IBAction func playButton(_ sender: Any) {
if audioRecorder?.isRecording == false{
stopAudio.isEnabled = true
recordAudio.isEnabled = true
do {
try audioPlayer = AVAudioPlayer(contentsOf: (audioRecorder?.url)!)
audioPlayer!.delegate = self
audioPlayer!.prepareToPlay()
audioPlayer!.play()
} catch {
print(error.localizedDescription)
}
}
}
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
recordAudio.isEnabled = true
stopAudio.isEnabled = false
}
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?) {
print("Audio Player Error")
}
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
}
func audioRecorderEncodeErrorDidOccur(_ recorder: AVAudioRecorder, error: Error?) {
print("Audio Recorder Error")
}
Sobald Sie Ihre Aufzeichnung gespeichert haben, müssen Sie diese komprimieren und sie über die Delegate- und Datenquellenmethoden von UITableView in Ihre Tabellenansicht einfügen. Ich würde sagen, wie man die Aufzeichnung speichert, schreibe zuerst diese Methode und dann, wenn du Probleme hast, ein Datenmodell zu erstellen oder Elemente in UITableView einzufügen, dann stell einfach eine neue Frage. Sehen Sie sich diesen Post zum Speichern von Audioaufnahmen an: https://stackoverflow.com/questions/39433639/how-to-save-recorded-audio-ios –
@buttler_baby Vielen Dank für Ihre Antwort, dieser Link hat mir sehr geholfen. Aber sobald die Daten gespeichert sind, weiß ich, wie die Daten in der Tabellenansicht angezeigt werden. Ich weiß nicht, wie man mehrere Aufnahmen speichert. Irgendwelche Vorschläge? –
Ändern Sie den Namen 'soundFileUrl' und Sie erstellen eine neue Audiodatei. Zum Beispiel sound1.caf, sound2.caf, sound3.caf – zsteed