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;
    }
    
  • 相关阅读:
    py2与py3的字符编码的区别
    深浅拷贝大法
    列表、字典、元组、集合的内置方法
    数据类型的内置方法
    与while和for的爱恨情仇
    三种格式化输出以及运算符和if
    在outlook中发邮件判断邮件发送成功的方法
    修練營ASP.NET]淺談多層式架構 (Multi Tiers)
    软考编译原理小结
    0型文法、1型文法、2型文法、3型文法
  • 原文地址:https://www.cnblogs.com/lovewx/p/4155782.html
Copyright © 2011-2022 走看看