커뮤니티 오디오 녹음
- 녹음시간이 3분이 되면 녹음 멈춤
This commit is contained in:
		| @@ -7,15 +7,9 @@ | ||||
|  | ||||
| import SwiftUI | ||||
|  | ||||
| struct CreatorCommunityRecordingVoiceView: View { | ||||
|     enum RecordMode { | ||||
|         case RECORD, PLAY | ||||
|     } | ||||
|      | ||||
| struct CreatorCommunityRecordingVoiceView: View {     | ||||
|     @StateObject var soundManager = CreatorCommunitySoundManager() | ||||
|      | ||||
|     @State var recordMode = RecordMode.RECORD | ||||
|      | ||||
|     @Binding var isShowing: Bool | ||||
|     @Binding var isShowPopup: Bool | ||||
|     @Binding var errorMessage: String | ||||
| @@ -57,7 +51,7 @@ struct CreatorCommunityRecordingVoiceView: View { | ||||
|                             .foregroundColor(.white) | ||||
|                             .padding(.top, 80) | ||||
|                          | ||||
|                         switch recordMode { | ||||
|                         switch soundManager.recordMode { | ||||
|                         case .RECORD: | ||||
|                             if !soundManager.isLoading { | ||||
|                                 Image(soundManager.isRecording ? "ic_record_stop" : "ic_record") | ||||
| @@ -71,7 +65,7 @@ struct CreatorCommunityRecordingVoiceView: View { | ||||
|                                                 soundManager.startRecording(tempFileName) | ||||
|                                             } else { | ||||
|                                                 soundManager.stopRecording() | ||||
|                                                 recordMode = .PLAY | ||||
|                                                 soundManager.recordMode = .PLAY | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
| @@ -112,12 +106,12 @@ struct CreatorCommunityRecordingVoiceView: View { | ||||
|                                             .onTapGesture { | ||||
|                                                 soundManager.stopAudio() | ||||
|                                                 soundManager.deleteAudioFile() | ||||
|                                                 recordMode = .RECORD | ||||
|                                                 soundManager.recordMode = .RECORD | ||||
|                                             } | ||||
|                                          | ||||
|                                         Spacer() | ||||
|                                     } | ||||
|                                     .padding(.top, 80) | ||||
|                                     .padding(.vertical, 52.3) | ||||
|                                      | ||||
|                                     HStack(spacing: 13.3) { | ||||
|                                         Text("다시 녹음") | ||||
| @@ -133,7 +127,7 @@ struct CreatorCommunityRecordingVoiceView: View { | ||||
|                                             .onTapGesture { | ||||
|                                                 soundManager.stopAudio() | ||||
|                                                 soundManager.deleteAudioFile() | ||||
|                                                 recordMode = .RECORD | ||||
|                                                 soundManager.recordMode = .RECORD | ||||
|                                             } | ||||
|                                          | ||||
|                                         Text("녹음완료") | ||||
| @@ -154,7 +148,7 @@ struct CreatorCommunityRecordingVoiceView: View { | ||||
|                                                 } | ||||
|                                             } | ||||
|                                     } | ||||
|                                     .padding(.vertical, 40) | ||||
|                                     .padding(.bottom, 40) | ||||
|                                     .padding(.horizontal, 13.3) | ||||
|                                 } | ||||
|                             } | ||||
|   | ||||
| @@ -10,6 +10,12 @@ import AVKit | ||||
| import Combine | ||||
|  | ||||
| class CreatorCommunitySoundManager: NSObject, ObservableObject { | ||||
|     enum RecordMode { | ||||
|         case RECORD, PLAY | ||||
|     } | ||||
|      | ||||
|     @Published var recordMode = RecordMode.RECORD | ||||
|      | ||||
|     @Published var errorMessage = "" | ||||
|     @Published var isShowPopup = false | ||||
|     @Published var isLoading = false | ||||
| @@ -176,6 +182,11 @@ class CreatorCommunitySoundManager: NSObject, ObservableObject { | ||||
|         let centiseconds = Int((elapsedTime - Double(minutes * 60) - Double(seconds)) * 100) | ||||
|          | ||||
|         timeString = String(format: "%02d:%02d.%02d", minutes, seconds, centiseconds) | ||||
|          | ||||
|         if minutes >= 3 { | ||||
|             stopRecording() | ||||
|             recordMode = .PLAY | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     deinit { | ||||
|   | ||||
| @@ -24,13 +24,15 @@ class SoundManager: NSObject, ObservableObject { | ||||
|     var startTimer: (() -> Void)? | ||||
|     var stopTimer: (() -> Void)? | ||||
|      | ||||
|     let audioSession = AVAudioSession.sharedInstance() | ||||
|      | ||||
|     func prepareRecording() { | ||||
|         isLoading = true | ||||
|          | ||||
|         let audioSession = AVAudioSession.sharedInstance() | ||||
|         do { | ||||
|             try audioSession.setCategory(.playAndRecord, mode: .default) | ||||
|             try audioSession.setActive(true) | ||||
|              | ||||
|             audioSession.requestRecordPermission() { [weak self] allowed in | ||||
|                 DispatchQueue.main.async { | ||||
|                     if !allowed { | ||||
| @@ -58,6 +60,9 @@ class SoundManager: NSObject, ObservableObject { | ||||
|         ] | ||||
|          | ||||
|         do { | ||||
|             try audioSession.setCategory(.playAndRecord, mode: .default) | ||||
|             try audioSession.setActive(true) | ||||
|              | ||||
|             audioRecorder = try AVAudioRecorder(url: getAudioFileURL(), settings: settings) | ||||
|             audioRecorder.record() | ||||
|              | ||||
| @@ -91,9 +96,9 @@ class SoundManager: NSObject, ObservableObject { | ||||
|         isLoading = true | ||||
|          | ||||
|         DispatchQueue.main.async { | ||||
|             let audioSession = AVAudioSession.sharedInstance() | ||||
|             do { | ||||
|                 try audioSession.setCategory(.playback, mode: .default) | ||||
|                 try self.audioSession.setCategory(.playAndRecord, mode: .default) | ||||
|                 try self.audioSession.setActive(true) | ||||
|                  | ||||
|                 if let url = url { | ||||
|                     self.player = try AVAudioPlayer(data: Data(contentsOf: url)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung