iOS音乐播放器相关
iOS音乐播放器框架主要有两大类:AvPlayer、AvaudioPlayer
AvPlayer 能播放本地及网络歌曲
AvaudioPlayer 能播放本地歌曲、有相关代理方法(其实也可以播放网络歌曲,只不过该播放器播放网络歌曲是先将歌曲下载下来再进行播放)
下面记录一下相关要用到的方法
1.获取本地歌曲库(ipod路径)歌曲
// 读取本地音乐
MPMediaPropertyPredicate *albumNamePredicate =
[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];
[everything addFilterPredicate:albumNamePredicate];
_itemsFromGenericQuery = [everything items];
2.锁屏状态下的歌曲名、歌手名、专辑图设置
//锁屏
- (void)configPlayingInfo
{
if (NSClassFromString(@"MPNowPlayingInfoCenter"))
{
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
if (_songName&&_singer) {
[dict setObject:_songName forKey:MPMediaItemPropertyTitle];//歌曲名设置
[dict setObject:_singer forKey:MPMediaItemPropertyArtist];//歌手名设置
if (![imgURL isEqualToString:@"专辑默认背景"] && imgURL.length > 0 )
{
[dict setObject:[[MPMediaItemArtwork alloc] initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL] options:NSUTF8StringEncoding error:nil]]] forKey:MPMediaItemPropertyArtwork];//专辑图片设置
}
else
{
[dict setObject:[[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"专辑默认背景"]] forKey:MPMediaItemPropertyArtwork];//专辑图片设置
}
}
[dict setObject:[NSNumber numberWithDouble:CMTimeGetSeconds(self.avplayer.currentItem.currentTime)] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]; //音乐当前已经播放时间
[dict setObject:[NSNumber numberWithFloat:1.0] forKey:MPNowPlayingInfoPropertyPlaybackRate];//进度光标的速度(这个随自己的播放速率调整,默认是原速播放)
[dict setObject:[NSNumber numberWithDouble:CMTimeGetSeconds(self.avplayer.currentItem.duration)] forKey:MPMediaItemPropertyPlaybackDuration];//歌曲总时间设置
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];
}
}
3.如果播放的歌曲为网络歌曲,则要设置一下后台控制打断的事件,否则无法进行正常的自动下一曲
//后台播放相关,且将蓝牙重新连接
-(void)setAudioSession{
//AudioSessionInitialize用于控制打断
//这种方式后台,可以连续播放非网络请求歌曲,遇到网络请求歌曲就废,需要后台申请task
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [session setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
if (!success)
{
return;
}
NSError *activationError = nil;
success = [session setActive:YES error:&activationError];
if (!success)
{
return;
}
}
4.因为AvPlayer是没有队列这个概念,只能播放一首歌曲,所以每次播放完毕都监听一次以便进行自动下一曲
//监听是否播放完毕
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
//结束播放
- (void)playEnd:(id)sender
{
[self next];(next是私有方法)
return;
}
5.在播放器程序中一点小的心得
如果要让播放器接受远程控制则要设置第一响应状态
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
//设置为第一响应
-(BOOL)canBecomeFirstResponder{
return YES;
}
后台控制(耳机线控制)
-(void)remoteControlReceivedWithEvent: (UIEvent *) receivedEvent;
播放器最好设置成一个单例,还有一种思路是将整个播放器作为一个工具,这样可以直接调用上下曲等方法
转载于:https://www.cnblogs.com/SunnyOMGi/p/5576860.html
iOS音乐播放器相关相关推荐
- ios音乐播放器-仿QQ音乐
这篇文章主要写一个iOS系统下的音乐播放器 , 包括简单的仿QQ音乐播放器界面.音乐播放.歌词解析.后台控制等 ,如果你正好需要 , 希望你看完后能够对你的提升有所帮助 , 当然,阅读中如果发现什么 ...
- 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)
目 录 目 录 1 摘 要 3 Abstract 4 1 导论 6 1.1 背景问题 6 1.2 选题意义 6 1.3 本文内容 7 2 核心功能 9 2.1 功能调研 9 2.2 可行性分析 12 ...
- 卡拉OK效果的实现-iOS音乐播放器
自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: ...
- android+仿ios+音乐播放器,iOS简单的音乐播放器(仿QQ音乐)
AVPlayer实现基本的播放,暂停,上一首,下一首,调节音量,调节进度等,正在学习的新人可以看下,有什么不足可以互相学习,谢谢支持 qq音乐.gif 这个是我写的一个简单的低仿QQ音乐, 如果你也喜 ...
- iOS音乐播放器小技巧
在没有网络的情况下,音频的后台播放比较简单,google一下可以搜到很多资料,但是如果每次歌曲的请求都是通过网络,就不成了,有时可以也扛不了几首,这里总结下实现方法,可以实现像电台一样的功能,后台播放 ...
- iOS音乐播放器的后台播放和远程控制
iOS的后台任务一直有很严格的限制,一般情况下只有几类情况能使用后台任务,下面介绍其中的一种 音乐的后台播放. 1.要支持后台任务,首先你得告诉系统你需要后台任务,所以你首先在Info.plist文件 ...
- iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...
iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...
- 音乐播放器的设计与实现
音乐播放器的设计与实现 功能要求: 设计一款基于HTML5音频技术的音乐播放器,要求实现音乐的播放.暂停.音量大小调节.上一首和下一首切换. 实现效果图: 一.界面设计 1.使用<div> ...
- html5卡拉OK音乐播放器,QQ音乐播放器怎么打开卡拉OK模式
QQ音乐播放器怎么打开卡拉OK模式 时间:2020-08-05 12:25:56 责任编辑:随便就行 QQ音乐播放器怎么打开卡拉OK模式?QQ音乐播放器是生活中常用的音乐播放器,很多人在使用QQ音乐播 ...
- Android | 音乐播放器 I(详解)
一.功能 搜索手机内的音乐(MediaStore.ContentResolver) 展示到播放界面(CursorAdapter.ListView) 点击播放界面的歌曲,能够进行播放(MediaPlay ...
最新文章
- 英特尔专家告诉你 信息时代如何掌控数据安全(附视频PPT)
- 人工智能python框架_Python 与 AI 智能框架 - 随笔分类 - Hopesun - 博客园
- 解决Mac下npm权限问题
- boost::timer模块timer、job_timer和progress_display示例程序
- boost::callable_traits的is_rvalue_reference_member的测试程序
- 每天一道LeetCode-----买卖商品问题,计算最大利润,分别有一次交易,两次交易,多次交易的情况
- 判断是否存在此对象_JVM的垃圾回收机制,判断对象是否死亡
- 玩转FusionCharts:Y轴数字形式(如去掉K)
- 增益和偏移的概念_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO...
- 直观简洁,轻易吸睛!促销海报模板
- [Stack]Valid Parentheses
- 【设计模式】03-抽象工厂模式
- JSON 格式化成视图模式
- 2022年最新最全软件测试面试题大全
- itunes安装后不能用,双击后等很长时间,提示:ITUNES 驱动程序缺少用于导入和刻录的CD与DVD注册的设置...
- 近200篇机器学习深度学习资料分享(含各种文档,视频,源码等)
- 图像算法工作感想之笨方法
- UVa 10105 - Polynomial Coefficients
- 【职场新贵】告诉你如何在压力下高效工作
- cir模型matlab代码,怎么用 CIR模型 进行利率定价
热门文章
- 软件一定要联网安装,只有内网就干瞪眼
- 面对技术难题,都是硬着头皮向前冲
- python代码_Python发送邮件基础知识与代码讲解!
- c mysql中文乱码解决方案_Linux下c读取MysqL中文乱码解决方案
- 河北工程大学计算机科学与技术分数线,河北工程大学计算机科学与技术专业2016年在河南理科高考录取最低分数线...
- 华为5500v3多路径linux6,CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
- python语言太差_Python语言 最差实践
- python深度神经网络_深度神经网络 (第七部分)。 神经网络的融合: 堆叠
- java tomcat jvm内存_【转】Linux下tomcat JVM内存
- jsp中page指令用法详解