iOS 如何监听出插入耳机 拔掉耳机事件?

转载 2013年12月03日 10:31:02
首先导入系统类库  

#import<AVFoundation/AVFoundation.h>

   //监听耳机事件

    [[AVAudioSessionsharedInstancesetDelegate:self];

    

   // Use this code instead to allow the app sound to continue to play when the screen is locked.

    [[AVAudioSessionsharedInstance]setCategory:AVAudioSessionCategoryPlayback error:nil];

    

   // Registers the audio route change listener callback function

   AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,audioRouteChangeListenerCallback,self);



把这段代码 写到 你需要监听的地方 



我个人推荐放到

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOption

因为是全局嘛 哪里都可以响应到 


例如 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

   self.window = [[[UIWindowallocinitWithFrame:[[UIScreenmainScreenbounds]]autorelease];

   //登陆VC

   LoginViewController *loginVC = [[LoginViewControlleralloc]init];

   UINavigationController *navNV = [[UINavigationControlleralloc]initWithRootViewController:loginVC ];

    [navNVsetNavigationBarHidden:YES];

    [loginVC release];

    

   //监听耳机事件

    [[AVAudioSessionsharedInstancesetDelegate:self];

    

   // Use this code instead to allow the app sound to continue to play when the screen is locked.

    [[AVAudioSessionsharedInstance]setCategory:AVAudioSessionCategoryPlayback error:nil];

    

   // Registers the audio route change listener callback function

   AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,audioRouteChangeListenerCallback,self);

    

   self.window.rootViewController = navNV;

    [navNV release];


   self.window.backgroundColor = [UIColorwhiteColor];

    [self.windowmakeKeyAndVisible];

   return YES;

}



//触发的监听事件 

void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize,const void *inPropertyValue ) {

   // ensure that this callback was invoked for a route change

    if (inPropertyID != kAudioSessionProperty_AudioRouteChange)return;

    

    

    {

       // Determines the reason for the route change, to ensure that it is not

       //      because of a category change.

        CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyValue;

        

        CFNumberRef routeChangeReasonRef = (CFNumberRef)CFDictionaryGetValue (routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_Reason) );

        SInt32 routeChangeReason;

        CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);

        

        if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable) {

            

           //Handle Headset Unplugged

            

            DLog(@"没有耳机!");

            

        } else if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable) {

           //Handle Headset plugged in

            DLog(@"有耳机!");

        }

        

    }

}



OK  搞定!  

相关文章推荐

ios音乐播放耳机监听事件

拔耳机监听操作//添加通知,拔出耳机后暂停播放 [[NSNotificationCenter defaultCenter] addObserver:self selector:@sel...

iOS7 监听耳机拔出

参考文章http://blog.csdn.net/like7xiaoben/article/details/8990730http://www.2cto.com/kf/201410/347849.ht...

Android如何监听蓝牙耳机的按键事件

Android如何监听蓝牙耳机的按键事件,分享实现方法。

001 正式进入android分析hal层以上 apk监听耳机插拔事件

利用四个月的时间,从上层到hal层以上全部弄清楚,现在开始耳机插入事件的检测。 检测耳机的插拔事件,如果有耳机插入,弹出一个toast提示耳机已经插入,如果又耳机拔出,弹出一个toast提示耳机已经拔...

【记录】Android监听蓝牙耳机的按键事件

Android监听蓝牙耳机的按键事件一、本文测试环境:1、使用Dacom M10蓝牙耳机2、成功监测到“电话键”(音量键没有监测到)3、参考资料4、参考源码二、一些说明连接蓝牙耳机后,需打开如图所示的...

Android如何监听蓝牙耳机的按键事件

版权声明:本文为博主原创文章,未经博主允许不得转载。 Android如何监听蓝牙耳机的按键事件 写在前面:         直接想要代码很简单,你直接把滚动条拉到最底端就...

耳机按键事件的监听

注册监听,监听Intent.ACTION_MEDIA_BUTTON,后台处理按键事件,有优先级,有可能被拦截,接收不到按键事件。    实现方式如下:     1、注册监听Intent.AC...

[iOS] iphone检测耳机插入/拔出

开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时,指定声音输出设备 检测耳机的插入和拔出 第一个问题,对于iTouch和i...

iOS 之检测耳机插入和拔出

开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备当有多个声音输出设备时,指定声音输出设备检测耳机的插入和拔出 第一个问题,对于iTouch和iPad等本身不带...

[iOS] iphone检测耳机插入/拔出

开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时,指定声音输出设备 检测耳机的插入和拔出 第一个问题,对于iTouch和i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)