//1、调整音频会话设置,确保应用进入后台或静音开关已开启时音频仍将继续播放 2、锁屏状态下显示媒体信息 3、锁屏上的空间可以控制音频播放#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>@interface ViewController ()@property (nonatomic, strong) AVAudioPlayer *audioPlayer;
@property (weak, nonatomic)  UIButton *playButton;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];UIButton * playButton = [UIButton buttonWithType:UIButtonTypeSystem];playButton.frame = CGRectMake(0, 0, 200, 40);playButton.center = self.view.center;[playButton setTitle:@"在后台播放音频" forState:UIControlStateNormal];[playButton addTarget:self action:@selector(playMusicInBackground:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:playButton];NSError *playerInitError = nil;NSString *audioPath =[[NSBundle mainBundle] pathForResource:@"background_audio"ofType:@"mp3"];NSURL *audioURL = [NSURL fileURLWithPath:audioPath];self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:audioURLerror:&playerInitError];AVAudioSession *session = [AVAudioSession sharedInstance];NSError *activeError = nil;if (![session setActive:YES error:&activeError]) {NSLog(@"Failed to set active audio session!");}//No.1//开始写代码,调整音频会话设置,确保即便应用进入后台或静音开关已开启,音频仍将继续播放NSError *categoryError = nil;[session setCategory:AVAudioSessionCategoryPlayback error:&categoryError];//end_code}
- (void)playMusicInBackground:(id)sender {if ([self.audioPlayer isPlaying]) {[self.audioPlayer stop];[self.playButton setTitle:@"正在播放音乐"forState:UIControlStateNormal];} else {UIImage *lockImage = [UIImage imageNamed:@"belongToMe.jpg"];MPMediaItemArtwork *artwork =[[MPMediaItemArtwork alloc] initWithImage:lockImage];NSDictionary *mediaDict =@{MPMediaItemPropertyTitle: @"BackgroundTask Audio",MPMediaItemPropertyMediaType: @(MPMediaTypeAnyAudio),MPMediaItemPropertyPlaybackDuration:@(self.audioPlayer.duration),MPNowPlayingInfoPropertyPlaybackRate: @1.0,MPNowPlayingInfoPropertyElapsedPlaybackTime:@(self.audioPlayer.currentTime),MPMediaItemPropertyAlbumArtist: @"Some User",MPMediaItemPropertyArtist: @"Some User",MPMediaItemPropertyArtwork: artwork };[self.audioPlayer play];[self.playButton setTitle:@"停止播放后台音乐"forState:UIControlStateNormal];//No.2//开始写代码,将媒体信息显示在锁定屏幕上,并使锁屏上控件可以控制音频播放[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];//end_code}
}//No.3
//开始写代码,响应远程控制,使得进入锁屏状态后可以控制音乐“播放”和“暂停”- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {if (receivedEvent.type == UIEventTypeRemoteControl) {switch (receivedEvent.subtype) {case UIEventSubtypeRemoteControlPlay:[self.audioPlayer play];break;case UIEventSubtypeRemoteControlPause:[self.audioPlayer pause];break;default:NSLog(@"没有处理过这个事件------receivedEvent.subtype==%ld",(long)receivedEvent.subtype);break;}}
}//end_code- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];
}@end

iOS锁屏页面控制音乐播放相关推荐

  1. android 锁屏显示音乐播放器,Android锁屏界面控制音乐播放

    目前,在锁屏界面控制音乐播放有两种常用方式. 第一种方式:原生Android系统及自带音乐播放器. 锁屏界面端: 原生Android中,锁屏界面相关的UI由KeyguardHostView提供,Key ...

  2. Win10锁屏自动暂停音乐播放,解锁后恢复

    Windows 10 系统锁屏可以让我们在短暂离开工作岗位时保护我们的隐私,而如果你正在播放音乐的话,锁屏开启后默认是继续播放的,这显然不符合大多数人用锁屏的目的.而今天给大家介绍的就是利用Windo ...

  3. Android 原生锁屏页面音乐控制

    Android5.0 提出了全新的MediaSession概念用于播放器与控制器之间进行交互,它取代之前的RemoteControlClient,并提供了更为灵活的客户端受控端模型. 但是MediaS ...

  4. iOS锁屏界面音频播放控制

    公司的app里面有后台音频播放功能,最近发现,当在锁屏界面(后台)时,不能控制播放页面的音频播放,是因为没有实现远程控制事件处理. 下面说说大概实现过程:由于后台播放功能早已实现(不做详细叙述),这里 ...

  5. 计算机锁屏之后QQ音乐停止播放了,win10在锁屏后怎样设置才能继续播放音乐

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:win10在锁屏后怎样设置才能继续播放音乐回答:打开控制面板 然后我们找到硬件和声音,进入.继续,选择下方的电源选项,进入. 然后, ...

  6. 锁屏页面实现及原理深入分析

    目录介绍 1.类似酷狗等锁屏页面实现步骤 1.1 什么是锁屏联动媒体播放器 1.2 如何实现锁屏页面 1.3 关于自定义锁屏页面左右滑动的控件 1.4 注意要点分析 1.5 具体完整代码的案例 1.6 ...

  7. [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构

    这是一篇系列博文.请关注我,学习更多.NET MAUI开发知识! [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 [MAU ...

  8. android锁屏页面的实现

    android的锁屏页面有两种方法实现: 可参考:http://blog.csdn.net/yangxi_pekin/article/details/50456763 http://blog.csdn ...

  9. vue3+ts 实现图标控制音乐播放

    vue3+ts 实现图标控制音乐播放 效果图 代码 避雷 前言: 最近负责一个展示型项目 需要背景音乐 且 可以控制播放 效果图 代码 <template><div class=&q ...

最新文章

  1. C++类型转换(翻译自cplusplus)
  2. 汇编-理解call,ret
  3. 电子书推荐--《Python灰帽子》,python黑客编程
  4. linux关闭硬件蜂鸣器,linux 关闭主板上的蜂鸣器声音
  5. web前端入门学习 css(1)
  6. javascript中的try finally
  7. php 数组元素分类,数组分类、定义及遍历
  8. .net core 实现基于 cron 表达式的任务调度
  9. 计算机网络协议和通信规则,计算机网络协议基本知识
  10. C++堆和栈详解(转)
  11. 二维码研究综述--传统图像处理方法
  12. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_09-修改页面-服务端-接口开发...
  13. 五种主流的linux操作系统,五款常用的Linux操作系统
  14. 电子计算机教室宣传标语,电子备课室宣传标语有哪些
  15. redis报错Unrecoverable error: corrupted cluster config file.
  16. GOOGLE搜索局域网聊天软件局域网聊天软件
  17. C++调python(执行py文件)
  18. 电气simulink常用模块_支持PLC编程的5大电气语言,你会几种?
  19. 仿微信评论显示更多与收起
  20. 3 什么是linux磁盘分区,3. Linux系统磁盘分区介绍

热门文章

  1. shell-脚本入门
  2. amd linux显卡驱动,AMD Radeon系列显卡催化剂驱动14.4 正式版For Linux AMD Radeon系列显卡催化剂驱动14.4 正式版 显卡驱动 超威半导体...
  3. 【软考】PV操作同步互斥
  4. PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。
  5. PHP数据跨行跨列处理
  6. Python实例---爬取下载喜马拉雅音频文件
  7. 选择勤哲Excel服务器做企业管理系统ERP的经验之谈
  8. 笔记-知识产权与标准化知识-中华人民共和国政府采购法
  9. 华为机试-字符串子序列
  10. 首期「OSCHINA 开源软件趋势榜」榜单公布 | 有奖征文等你来