美文网首页
iOS 耳机线控

iOS 耳机线控

作者: 那已逝的时光 | 来源:发表于2020-12-22 14:27 被阅读0次

最近适配耳机线控,记录一下问题
首先,耳机线控三要素:
1、开启接受耳机线控
~~~~
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
~~~~
2、成为第一响应者
~~~~
[self becomeFirstResponder];
重写响应方法
-(BOOL)canBecomeFirstResponder{
return YES;
}
~~~~
3、重写UIResponder方法
~~~~
//received remote event
-(void)remoteControlReceivedWithEvent:(UIEvent *)event{
NSLog(@"event tyipe:::%ld subtype:::%ld",(long)event.type,(long)event.subtype);
//type==2 subtype==单击暂停键:103,双击暂停键104
if (event.type == UIEventTypeRemoteControl) {
switch (event.subtype) {

        case UIEventSubtypeRemoteControlPlay:{
            NSLog(@"play---------");
        }break;
        case UIEventSubtypeRemoteControlPause:{
            NSLog(@"Pause---------");
        }break;
        case UIEventSubtypeRemoteControlStop:{
            NSLog(@"Stop---------");
        }break;
        case UIEventSubtypeRemoteControlTogglePlayPause:{
            //单击暂停键:103
            NSLog(@"单击暂停键:103");
        }break;
        case UIEventSubtypeRemoteControlNextTrack:{
            //双击暂停键:104
            NSLog(@"双击暂停键:104");
        }break;
        case UIEventSubtypeRemoteControlPreviousTrack:{
            NSLog(@"三击暂停键:105");
        }break;
        case UIEventSubtypeRemoteControlBeginSeekingForward:{
            NSLog(@"单击,再按下不放:108");
        }break;
        case UIEventSubtypeRemoteControlEndSeekingForward:{
            NSLog(@"单击,再按下不放,松开时:109");
        }break;
        default:
            break;
    }
}

}
~~~~
为了保证这个方法的可行性,最好写在appdelegate 或者 rootController里
4、app是持有播放权限的,即没有被别的app抢走播放权限,也就是在系统中心展示的是我们app的播放信息,当然不添加信息在控制中心的话,如果能确定是自己的app在播放也没问题,以下是添加播放信息在锁屏展示
~~~~

NSMutableDictionary *songInfo = [NSMutableDictionary dictionary];
//歌曲名称
[songInfo setObject:@"test" forKey:MPMediaItemPropertyTitle];
//演唱者
[songInfo setObject:@"Monkey" forKey:MPMediaItemPropertyArtist];
//图片
[songInfo setObject:[[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"MP.png"]] forKey:MPMediaItemPropertyArtwork];

    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];

~~~~
最后适配一下AirPods,AirPods有一个比较坑的问题是,必须在playback模式下才可以接受到响应事件,通常我们使用的权限都是playandrecord,这个是可以接受到线控耳机的响应事件,但是接收AirPods的事件。
如果要更加精细的操作,了解下MPNowPlayingInfoCenter和MPRemoteCommandCenter,iOS7.0之后推出的

相关文章

  • iOS 耳机线控

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

  • iOS 事件机制

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

  • iOS 耳机线控那些坑

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

  • iOS事件处理

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

  • 耳机线控

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

  • 事件处理

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

  • iOS事件传递和响应者链

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

  • Android耳机线控

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

  • Flutter 音频播放 远程控制 在通知栏和工具栏展示媒体播放

    公司项目的一个音频播放的小需求,要求支持iOS的远程控制和耳机线控然后写完后尝试总结一下吧 现在把这个改成了Flu...

  • iOS触摸事件、手势识别、摇晃事件、耳机线控

    概览iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操...

网友评论

      本文标题:iOS 耳机线控

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