iOS 监听Home键及锁屏键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 监听Home键及锁屏键相关的知识,希望对你有一定的参考价值。
参考技术A 最近公司产品中需要增加一项功能--视频录制。在录制过程中不可避免会出现一些非常规操作,例如点击Home和锁屏键时都需要终止录制并保存相关数据。这个给开发带来一定的难度。1.监听Home键
2.监听锁屏键
(1)导入头文件和定义宏
#import <notify.h>
#define NotificationLock CFSTR("com.apple.springboard.lockcomplete")
#define NotificationChange CFSTR("com.apple.springboard.lockstate")
#define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen")
static HAVehicleTravelingDataRecorderController *selfClass =nil;
(2)定义监听锁屏函数
(3)添加监听函数
注:函数调OC类方法会有更好的方案,后期会跟进更改一下的。
iOS音乐后台播放及锁屏信息显示
实现音乐的后台播放。以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示
此实例须要真机调试。效果图例如以下:
project下载:githubproject下载
实现步骤:
1、首先改动info.plist
2、其次引入两个须要的框架
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
3、设置播放器及后台播放
- (void)viewDidLoad {
[super viewDidLoad];
// 设置后台播放
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
// 设置播放器
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"那些花儿" ofType:@"mp3"] ];
_player = [[AVPlayer alloc] initWithURL:url];
[_player play];
_isPlayingNow = YES;
//后台播放显示信息设置
[self setPlayingInfo];
}
#pragma mark - 接收方法的设置
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
if (event.type == UIEventTypeRemoteControl) { //推断是否为远程控制
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay:
if (!_isPlayingNow) {
[_player play];
}
_isPlayingNow = !_isPlayingNow;
break;
case UIEventSubtypeRemoteControlPause:
if (_isPlayingNow) {
[_player pause];
}
_isPlayingNow = !_isPlayingNow;
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"下一首");
break;
case UIEventSubtypeRemoteControlPreviousTrack:
NSLog(@"上一首 ");
break;
default:
break;
}
}
}
4、设置后台播放时显示的东西,比如歌曲名字。图片等
- (void)setPlayingInfo {
// <MediaPlayer/MediaPlayer.h>
MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"pushu.jpg"]];
NSDictionary *dic = @{MPMediaItemPropertyTitle:@"那些花儿",
MPMediaItemPropertyArtist:@"朴树",
MPMediaItemPropertyArtwork:artWork
};
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic];
}
5、远程控制设置
- (void)viewDidAppear:(BOOL)animated {
// 接受远程控制
[self becomeFirstResponder];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}
- (void)viewDidDisappear:(BOOL)animated {
// 取消远程控制
[self resignFirstResponder];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}
以上是关于iOS 监听Home键及锁屏键的主要内容,如果未能解决你的问题,请参考以下文章
Android 11.0 修复在锁屏界面连续按锁屏键,需要按多次空格键才能解锁的Bug
Andrid 按键 锁屏界面连续按键盘锁屏键后,需要多次按空格键才能解锁成功