@@ -104,17 +104,17 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
104104
105105- (void )getCategory : (NSArray *)args result : (FlutterResult)result {
106106 AVAudioSessionCategory category = [[AVAudioSession sharedInstance ] category ];
107- result ([ self categoryToFlutter: category] );
107+ result (category);
108108}
109109
110110- (void )setCategory : (NSArray *)args result : (FlutterResult)result {
111- NSNumber *categoryIndex = (NSNumber *)args[0 ];
111+ NSString *rawCategory = (NSString *)args[0 ];
112112 NSNumber *options = (NSNumber *)args[1 ];
113113 NSNumber *modeIndex = (NSNumber *)args[2 ];
114114 NSNumber *policyIndex = (NSNumber *)args[3 ];
115115 NSError *error = nil ;
116116 BOOL status;
117- AVAudioSessionCategory category = [self flutterToCategory: categoryIndex ];
117+ AVAudioSessionCategory category = [self rawToCategory: rawCategory ];
118118 if (!category) category = AVAudioSessionCategorySoloAmbient;
119119 NSString *mode = [self flutterToMode: modeIndex];
120120 if (!mode) mode = AVAudioSessionModeDefault;
@@ -153,11 +153,7 @@ - (void)setCategory:(NSArray *)args result:(FlutterResult)result {
153153- (void )getAvailableCategories : (NSArray *)args result : (FlutterResult)result {
154154 if (@available (iOS 9.0 , *)) {
155155 NSArray *categories = [[AVAudioSession sharedInstance ] availableCategories ];
156- NSMutableArray *flutterCategories = [NSMutableArray new ];
157- for (int i = 0 ; i < categories.count ; i++) {
158- [flutterCategories addObject: [self categoryToFlutter: categories[i]]];
159- }
160- result (flutterCategories);
156+ result (categories);
161157 } else {
162158 result (@[]);
163159 }
@@ -244,6 +240,7 @@ - (void)getRecordPermission:(NSArray *)args result:(FlutterResult)result {
244240
245241- (void )requestRecordPermission : (NSArray *)args result : (FlutterResult)result {
246242#if AUDIO_SESSION_MICROPHONE
243+ // Deprecated. Replaced by requestRecordPermissionWithCompletionHandler
247244 [[AVAudioSession sharedInstance ] requestRecordPermission: ^(BOOL granted) {
248245 result (@(granted));
249246 }];
@@ -541,32 +538,13 @@ - (void)setInputGain:(NSArray *)args result:(FlutterResult)result {
541538 }
542539}
543540
544- - (AVAudioSessionCategory)flutterToCategory : (NSNumber *)categoryIndex {
545- AVAudioSessionCategory category = nil ;
546- if (categoryIndex != (id )[NSNull null ]) {
547- switch (categoryIndex.integerValue ) {
548- case 0 : category = AVAudioSessionCategoryAmbient; break ;
549- case 1 : category = AVAudioSessionCategorySoloAmbient; break ;
550- case 2 : category = AVAudioSessionCategoryPlayback; break ;
551- #if AUDIO_SESSION_MICROPHONE
552- case 3 : category = AVAudioSessionCategoryRecord; break ;
553- case 4 : category = AVAudioSessionCategoryPlayAndRecord; break ;
554- #endif
555- case 5 : category = AVAudioSessionCategoryMultiRoute; break ;
541+ - (AVAudioSessionCategory)rawToCategory : (NSString *)rawCategory {
542+ for (AVAudioSessionCategory category in [[AVAudioSession sharedInstance ] availableCategories ]) {
543+ if ([category isEqualToString: rawCategory]) {
544+ return category;
556545 }
557546 }
558- return category;
559- }
560-
561- - (NSObject *)categoryToFlutter : (AVAudioSessionCategory)category {
562- if (category == AVAudioSessionCategoryAmbient) return @(0 );
563- else if (category == AVAudioSessionCategorySoloAmbient) return @(1 );
564- else if (category == AVAudioSessionCategoryPlayback) return @(2 );
565- #if AUDIO_SESSION_MICROPHONE
566- else if (category == AVAudioSessionCategoryRecord) return @(3 );
567- else if (category == AVAudioSessionCategoryPlayAndRecord) return @(4 );
568- #endif
569- else return @(5 );
547+ return nil ;
570548}
571549
572550- (NSString *)flutterToMode : (NSNumber *)modeIndex {
0 commit comments