From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001
From: 单军华
Date: Thu, 19 Jul 2018 13:38:55 +0800
Subject: [PATCH] change
---
screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/internal/EMAudioRecorderUtil.m | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 175 insertions(+), 0 deletions(-)
diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/internal/EMAudioRecorderUtil.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/internal/EMAudioRecorderUtil.m
new file mode 100755
index 0000000..00f23a9
--- /dev/null
+++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/internal/EMAudioRecorderUtil.m
@@ -0,0 +1,175 @@
+/************************************************************
+ * * Hyphenate CONFIDENTIAL
+ * __________________
+ * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
+ *
+ * NOTICE: All information contained herein is, and remains
+ * the property of Hyphenate Inc.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Hyphenate Inc.
+ */
+#import "EMAudioRecorderUtil.h"
+#import "EaseLocalDefine.h"
+
+static EMAudioRecorderUtil *audioRecorderUtil = nil;
+
+@interface EMAudioRecorderUtil () <AVAudioRecorderDelegate> {
+ NSDate *_startDate;
+ NSDate *_endDate;
+
+ void (^recordFinish)(NSString *recordPath);
+}
+@property (nonatomic, strong) AVAudioRecorder *recorder;
+@property (nonatomic, strong) NSDictionary *recordSetting;
+
+@end
+
+@implementation EMAudioRecorderUtil
+
+#pragma mark - Public
+
++(BOOL)isRecording{
+ return [[EMAudioRecorderUtil sharedInstance] isRecording];
+}
+
+// Start recording
++ (void)asyncStartRecordingWithPreparePath:(NSString *)aFilePath
+ completion:(void(^)(NSError *error))completion{
+ [[EMAudioRecorderUtil sharedInstance] asyncStartRecordingWithPreparePath:aFilePath
+ completion:completion];
+}
+
+// Stop recording
++(void)asyncStopRecordingWithCompletion:(void(^)(NSString *recordPath))completion{
+ [[EMAudioRecorderUtil sharedInstance] asyncStopRecordingWithCompletion:completion];
+}
+
+// Cancel recording
++(void)cancelCurrentRecording{
+ [[EMAudioRecorderUtil sharedInstance] cancelCurrentRecording];
+}
+
++(AVAudioRecorder *)recorder{
+ return [EMAudioRecorderUtil sharedInstance].recorder;
+}
+
+#pragma mark - getter
+- (NSDictionary *)recordSetting
+{
+ if (!_recordSetting) {
+ _recordSetting = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithFloat: 8000.0],AVSampleRateKey, //���������
+ [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
+ [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,//������������ ������ 16
+ [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,//���������������
+ nil];
+ }
+
+ return _recordSetting;
+}
+
+#pragma mark - Private
++(EMAudioRecorderUtil *)sharedInstance{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ audioRecorderUtil = [[self alloc] init];
+ });
+
+ return audioRecorderUtil;
+}
+
+-(instancetype)init{
+ if (self = [super init]) {
+
+ }
+
+ return self;
+}
+
+-(void)dealloc{
+ if (_recorder) {
+ _recorder.delegate = nil;
+ [_recorder stop];
+ [_recorder deleteRecording];
+ _recorder = nil;
+ }
+ recordFinish = nil;
+}
+
+-(BOOL)isRecording{
+ return !!_recorder;
+}
+
+// Start recording���save the audio file to the path
+- (void)asyncStartRecordingWithPreparePath:(NSString *)aFilePath
+ completion:(void(^)(NSError *error))completion
+{
+ NSError *error = nil;
+ NSString *wavFilePath = [[aFilePath stringByDeletingPathExtension]
+ stringByAppendingPathExtension:@"wav"];
+ NSURL *wavUrl = [[NSURL alloc] initFileURLWithPath:wavFilePath];
+ _recorder = [[AVAudioRecorder alloc] initWithURL:wavUrl
+ settings:self.recordSetting
+ error:&error];
+ if(!_recorder || error)
+ {
+ _recorder = nil;
+ if (completion) {
+ error = [NSError errorWithDomain:NSEaseLocalizedString(@"error.initRecorderFail", @"Failed to initialize AVAudioRecorder")
+ code:-1
+ userInfo:nil];
+ completion(error);
+ }
+ return ;
+ }
+ _startDate = [NSDate date];
+ _recorder.meteringEnabled = YES;
+ _recorder.delegate = self;
+
+ [_recorder record];
+ if (completion) {
+ completion(error);
+ }
+}
+
+// Stop recording
+-(void)asyncStopRecordingWithCompletion:(void(^)(NSString *recordPath))completion{
+ recordFinish = completion;
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+ [self->_recorder stop];
+ });
+}
+
+// Cancel recording
+- (void)cancelCurrentRecording
+{
+ _recorder.delegate = nil;
+ if (_recorder.recording) {
+ [_recorder stop];
+ }
+ _recorder = nil;
+ recordFinish = nil;
+}
+
+
+#pragma mark - AVAudioRecorderDelegate
+- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder
+ successfully:(BOOL)flag
+{
+ NSString *recordPath = [[_recorder url] path];
+ if (recordFinish) {
+ if (!flag) {
+ recordPath = nil;
+ }
+ recordFinish(recordPath);
+ }
+ _recorder = nil;
+ recordFinish = nil;
+}
+
+- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder
+ error:(NSError *)error{
+ NSLog(@"audioRecorderEncodeErrorDidOccur");
+}
+@end
--
Gitblit v1.8.0