zoukankan      html  css  js  c++  java
  • iOS耳机操作

    iOS在7之后增加的麦克风权限的申请,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    AVAudioSession *avSession = [AVAudioSession sharedInstance];
    if ([avSession respondsToSelector:@selector(requestRecordPermission:)]) {
        [avSession requestRecordPermission:^(BOOL available) {
            if (available) {
                // 有麦克风权限
            } else {
                dispatch_async(dispatch_get_main_queue(), ^{
                    [[[UIAlertView alloc] initWithTitle:@"无法录音" message:@"请在“设置-隐私-麦克风”选项中允许xx访问你的麦克风" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] show];
                });
            }
        }];
    }
    

    iphone检测耳机插入/拔出

    判断手机当前是否使用的是内置的麦克风(可以用此方法判断插入的耳机是否有麦克风)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    - (BOOL)isCurrentUsingBuildInMicrophone
    {
        NSError *error = nil;
        BOOL result = YES;
        result = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
        if (!result) {
            NSLog(@"%@", error);
            return YES;
        }
        result = [[AVAudioSession sharedInstance] setActive:YES error:&error];
        if (!result) {
            NSLog(@"setActive failed");
            return YES;
        }
        CFDictionaryRef ards;
        UInt32 size = sizeof(CFDictionaryRef);
        OSStatus os = AudioSessionGetProperty(kAudioSessionProperty_AudioRouteDescription, &size, &ards);
        if (os == kAudioSessionNoError && ards && CFDictionaryGetValue(ards, kAudioSession_AudioRouteKey_Inputs)) {
            NSArray *inputs = (__bridge NSArray *)CFDictionaryGetValue(ards, kAudioSession_AudioRouteKey_Inputs);
            if (inputs && inputs.count > 0) {
                for (NSDictionary *dic in inputs) {
                    NSString *type = dic[(__bridge NSString *)kAudioSession_AudioRouteKey_Type];
                    if ([type isEqualToString:(__bridge NSString *)kAudioSessionInputRoute_BuiltInMic]) {
                        return YES;
                    }
                }
            }
        } else {
            // 耳机没有mic
            return YES;
        }
        return NO;
    }
    
  • 相关阅读:
    【Educational Codeforces Round 36 C】 Permute Digits
    【Educational Codeforces Round 36 B】Browser
    【Educational Codeforces Round 36 A】 Garden
    【习题 8-14 UVA
    【习题 8-13 UVA
    【习题 8-12 UVA
    【习题 8-11 UVA
    【习题 8-10 UVA
    关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)
    P2512 [HAOI2008]糖果传递
  • 原文地址:https://www.cnblogs.com/lovewx/p/4155782.html
Copyright © 2011-2022 走看看