88 lines
3.9 KiB
Dart
88 lines
3.9 KiB
Dart
|
//
|
|||
|
// FATExt_recorderManager.m
|
|||
|
// FinAppletExt
|
|||
|
//
|
|||
|
// Created by Haley on 2021/1/21.
|
|||
|
// Copyright © 2021 finogeeks. All rights reserved.
|
|||
|
//
|
|||
|
|
|||
|
#import "FATExt_recorderManager.h"
|
|||
|
#import "FATExtRecordManager.h"
|
|||
|
#import "FATClient+ext.h"
|
|||
|
|
|||
|
#import "FATExtUtil.h"
|
|||
|
|
|||
|
@implementation FATExt_recorderManager
|
|||
|
|
|||
|
- (void)setupApiWithSuccess:(void (^)(NSDictionary<NSString *, id> *successResult))success
|
|||
|
failure:(void (^)(NSDictionary *failResult))failure
|
|||
|
cancel:(void (^)(NSDictionary *cancelResult))cancel {
|
|||
|
NSArray *validMethods = @[@"start",@"pause",@"resume",@"stop",@"onFrameRecordedRemove"];
|
|||
|
NSString *method = self.method;
|
|||
|
if (![validMethods containsObject:method]) {
|
|||
|
return;
|
|||
|
}
|
|||
|
__block NSDictionary *dataDict = self.data;
|
|||
|
FATAppletInfo *appInfo = [[FATClient sharedClient] currentApplet];
|
|||
|
BOOL result = [[FATExtRecordManager shareManager] checkRecordWithMethod:method data:dataDict appletId:appInfo.appId];
|
|||
|
if (!result) {
|
|||
|
return;
|
|||
|
}
|
|||
|
if ([method isEqualToString:@"start"]) {
|
|||
|
[[FATClient sharedClient] fat_requestAppletAuthorize:FATAuthorizationTypeMicrophone appletId:appInfo.appId complete:^(NSInteger status) {
|
|||
|
if (status == 1) { //拒绝
|
|||
|
if (failure) {
|
|||
|
failure(@{@"errMsg" : @"unauthorized,用户未授予麦克风权限"});
|
|||
|
}
|
|||
|
NSDictionary *params = @{
|
|||
|
@"method" : @"onError",
|
|||
|
@"data" : @{@"errMsg" : @"operateRecorder:fail fail_system permissionn denied"},
|
|||
|
};
|
|||
|
if (self.context) {
|
|||
|
[self.context sendResultEvent:0 eventName:@"onRecorderManager" eventParams:params extParams:nil];
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
if (status == 2) { //sdk拒绝
|
|||
|
if (failure) {
|
|||
|
failure(@{@"errMsg" : @"unauthorized disableauthorized,SDK被禁止申请麦克风权限"});
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
dataDict = [self checkAACAuioParams:dataDict];
|
|||
|
[[FATExtRecordManager shareManager] startRecordWithData:dataDict appletId:appInfo.appId eventBlock:^(NSInteger eventType, NSString *eventName, NSDictionary *paramDic, NSDictionary *extDic) {
|
|||
|
if (self.context) {
|
|||
|
[self.context sendResultEvent:eventType eventName:eventName eventParams:paramDic extParams:extDic];
|
|||
|
}
|
|||
|
}];
|
|||
|
}];
|
|||
|
} else if ([method isEqualToString:@"pause"]) {
|
|||
|
[[FATExtRecordManager shareManager] pauseRecordWithData:dataDict appletId:appInfo.appId];
|
|||
|
} else if ([method isEqualToString:@"resume"]) {
|
|||
|
[[FATExtRecordManager shareManager] resumeRecordWithData:dataDict appletId:appInfo.appId];
|
|||
|
} else if ([method isEqualToString:@"stop"]) {
|
|||
|
[[FATExtRecordManager shareManager] stopRecordWithData:dataDict appletId:appInfo.appId];
|
|||
|
} else if ([method isEqualToString:@"onFrameRecordedRemove"]) {
|
|||
|
[[FATExtRecordManager shareManager] sendRecordFrameBufferWithData:dataDict appletId:appInfo.appId];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// 检测录音参数,如果是aac格式的音频,并且参数都是默认值,需要把sampleRate由8000改为16000。否则会录制失败。
|
|||
|
/// - Parameter dic: 录音参数。
|
|||
|
- (NSDictionary *)checkAACAuioParams:(NSDictionary *)dic {
|
|||
|
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithDictionary:dic];
|
|||
|
if ([dic[@"format"] isEqualToString:@"aac"]) {
|
|||
|
NSString *encodeBitRate = dic[@"encodeBitRate"];
|
|||
|
NSString *sampleRate = dic[@"sampleRate"];
|
|||
|
NSString *numberOfChannels = dic[@"numberOfChannels"];
|
|||
|
if ([encodeBitRate isEqualToString:@"48000"] && [numberOfChannels isEqualToString:@"2"] && [sampleRate isEqualToString:@"8000"]) {
|
|||
|
[data setValue:@"16000" forKey:@"sampleRate"];
|
|||
|
}
|
|||
|
}
|
|||
|
return data;
|
|||
|
}
|
|||
|
|
|||
|
@end
|
|||
|
|