码迷,mamicode.com
首页 > 移动开发 > 详细

IOS 判断耳机插入/拔出

时间:2015-01-22 15:22:41      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

一. 方式

 1.注册监听

//注册监听耳机设备的插入/拔出

    AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,audioRouteChangeListenerCallback,  nil);

2.

void audioRouteChangeListenerCallback (

void                      *inUserData,

AudioSessionPropertyID    inPropertyID,

UInt32                    inPropertyValueSize,

const void                *inPropertyValue

                                       ) {

if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;

CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyValue;

CFNumberRef routeChangeReasonRef =

    (CFNumberRef)CFDictionaryGetValue (routeChangeDictionary,

                          CFSTR (kAudioSession_AudioRouteChangeKey_Reason));

SInt32 routeChangeReason;

CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);

if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable) {

NSLog(@"拔掉耳机");

    } elseif (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable) {

NSLog(@"插入耳机");

    } elseif (routeChangeReason == kAudioSessionRouteChangeReason_NoSuitableRouteForCategory) {

    }

}

二 . 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(outputDeviceChanged:) name:AVAudioSessionRouteChangeNotification object:[AVAudioSession sharedInstance]];

 

- (void)outputDeviceChanged:(NSNotification *)aNotification

{

    BOOL flag = [AudioHelper hasHeadset];

    if (flag) {

        [MBProgressHUD showMessageHUDAddedTo:self.view message:@"设备已插入"];

    }

    else

    {

        [MBProgressHUD showMessageHUDAddedTo:self.view message:@"设备已拔出"];

    }

}

 

IOS 判断耳机插入/拔出

标签:

原文地址:http://www.cnblogs.com/fangkuai/p/4241616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!