美文网首页
耳机线控

耳机线控

作者: L_Glenn | 来源:发表于2017-05-15 11:04 被阅读47次

耳机的拔插

NSError*error;

[[AVAudioSessionsharedInstance]setCategory:AVAudioSessionCategoryPlaybackerror:&error];

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(outputDeviceChanged:)name:AVAudioSessionMediaServicesWereResetNotificationobject:[AVAudioSessionsharedInstance]];

- (void)outputDeviceChanged:(NSNotification*)aNotification

{

NSDictionary*userInfoDic = [aNotificationuserInfo];

NSLog(@"info1 : %@", userInfoDic);

AVAudioSessionRouteDescription*dic = [userInfoDicobjectForKey:@"AVAudioSessionRouteChangePreviousRouteKey"];

for(AVAudioSessionPortDescription* descin[dicoutputs]) {

NSLog(@"lalalalal=%@", [descportType]);

if([[descportType]isEqualToString:AVAudioSessionPortHeadphones]) {

NSLog(@"fuck it");

}

}

}

耳机的音量+、音量-

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(volumeClicked:)name:@"AVSystemController_SystemVolumeDidChangeNotification"object:nil];

-(void)volumeClicked:(NSNotification*)aNotification{

//在这里我们就可以实现对音量键进行监听,完成响应的操作。noti中也有一些相关的信息可以看看

NSDictionary*userInfoDic = [aNotificationuserInfo];

NSLog(@"info2 : %@", userInfoDic);

}

[[UIApplicationsharedApplication]beginReceivingRemoteControlEvents];

去掉显示音量提示框

AVAudioSession*audio = [AVAudioSessionsharedInstance];

[audiosetActive:YESerror:nil];

MPVolumeView*volumeView = [[MPVolumeViewalloc]initWithFrame:CGRectMake(100,100,10,10)];

volumeView.hidden=NO;

[self.viewaddSubview:volumeView];

//iOS检测耳机是否插入(单纯的判断开始的时候,是否存在耳机)

[selfisHeadsetPluggedIn];

- (BOOL)isHeadsetPluggedIn {

AVAudioSessionRouteDescription* route = [[AVAudioSessionsharedInstance]currentRoute];

for(AVAudioSessionPortDescription* descin[routeoutputs]) {

if([[descportType]isEqualToString:AVAudioSessionPortHeadphones])

returnYES;

}

returnNO;

}

耳机中间按钮

//后台控制

[[UIApplicationsharedApplication]beginReceivingRemoteControlEvents];

- (void)remoteControlReceivedWithEvent:(UIEvent*)receivedEvent {

NSLog(@">>>>>会走吗>>>>>");

if(receivedEvent.type==UIEventTypeRemoteControl) {

switch(receivedEvent.subtype) {

caseUIEventSubtypeRemoteControlPause:

//点击了暂停

NSLog(@">>>>>点击了暂停>>>>>");

break;

caseUIEventSubtypeRemoteControlNextTrack:

//点击了下一首

NSLog(@">>>>>点击了下一首>>>>>");

break;

caseUIEventSubtypeRemoteControlPreviousTrack:

//点击了上一首

//此时需要更改歌曲信息

NSLog(@">>>>>点击了上一首>>>>>");

break;

caseUIEventSubtypeRemoteControlPlay:

//点击了播放

NSLog(@">>>>>点击了播放>>>>>");

break;

default:

break;

}

}

}

相关文章

  • iOS 耳机线控

    最近适配耳机线控,记录一下问题首先,耳机线控三要素:1、开启接受耳机线控~~~~[[UIApplication s...

  • 耳机线控

    耳机的拔插 NSError*error; [[AVAudioSessionsharedInstance]setCa...

  • iOS 耳机线控那些坑

    关于监控苹果耳机,目的上主要分为监控耳机插入,拔出,和耳机线控,因为最近做了关于苹果耳机线控方面的需求,所以想针对...

  • Android耳机线控

    注册耳机事件监听器 其中关键语句是 当其他软件注册耳机监听事件后,系统就不会向该监听发送事件;解决方法:经测试,在...

  • iOS 事件机制

    事件 iOS 将事件分为三类: Touch Motion Remote像耳机线控…… Touch 事件 Touch...

  • iOS事件处理

    iOS中的事件以下三种1. 触摸事件2. 加速器事件:重力感应,旋转等事件3. 远程遥控事件:蓝牙线控,耳机线控等...

  • 事件处理

    事件处理 ios中的事件触摸事件(捏合,点击)加速计事件远程控制事件(耳机线控调整音量大小) 触摸事件 响应者对象...

  • ios 耳机线控和音量键的监控以及耳机输入扬声器输出

    最近在项目上有些关于耳机线控和音量键方面的需求,看了很多资料然后结合自己的实际项目需求,写下这篇文章,写的不...

  • iOS事件传递和响应者链

    iOS中的事件 触摸事件,加速事件(摇一摇),远程控制事件(耳机线控,窗口播放) 以最常见的触摸事件为例,当触摸手...

  • 解题思维

    解决耳机线缠绕问题,更多的做法是优化耳机线的设计 最优方案:直接去掉耳机线——蓝牙耳机 跳出原有问题的框架,把问题...

网友评论

      本文标题:耳机线控

      本文链接:https://www.haomeiwen.com/subject/tqthxxtx.html