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音乐播放器相关相关推荐

  1. ios音乐播放器-仿QQ音乐

    这篇文章主要写一个iOS系统下的音乐播放器 , 包括简单的仿QQ音乐播放器界面.音乐播放.歌词解析.后台控制等  ,如果你正好需要 , 希望你看完后能够对你的提升有所帮助 , 当然,阅读中如果发现什么 ...

  2. 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)

    目 录 目 录 1 摘 要 3 Abstract 4 1 导论 6 1.1 背景问题 6 1.2 选题意义 6 1.3 本文内容 7 2 核心功能 9 2.1 功能调研 9 2.2 可行性分析 12 ...

  3. 卡拉OK效果的实现-iOS音乐播放器

    自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: ...

  4. android+仿ios+音乐播放器,iOS简单的音乐播放器(仿QQ音乐)

    AVPlayer实现基本的播放,暂停,上一首,下一首,调节音量,调节进度等,正在学习的新人可以看下,有什么不足可以互相学习,谢谢支持 qq音乐.gif 这个是我写的一个简单的低仿QQ音乐, 如果你也喜 ...

  5. iOS音乐播放器小技巧

    在没有网络的情况下,音频的后台播放比较简单,google一下可以搜到很多资料,但是如果每次歌曲的请求都是通过网络,就不成了,有时可以也扛不了几首,这里总结下实现方法,可以实现像电台一样的功能,后台播放 ...

  6. iOS音乐播放器的后台播放和远程控制

    iOS的后台任务一直有很严格的限制,一般情况下只有几类情况能使用后台任务,下面介绍其中的一种 音乐的后台播放. 1.要支持后台任务,首先你得告诉系统你需要后台任务,所以你首先在Info.plist文件 ...

  7. iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...

    iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...

  8. 音乐播放器的设计与实现

    音乐播放器的设计与实现 功能要求: 设计一款基于HTML5音频技术的音乐播放器,要求实现音乐的播放.暂停.音量大小调节.上一首和下一首切换. 实现效果图: 一.界面设计 1.使用<div> ...

  9. html5卡拉OK音乐播放器,QQ音乐播放器怎么打开卡拉OK模式

    QQ音乐播放器怎么打开卡拉OK模式 时间:2020-08-05 12:25:56 责任编辑:随便就行 QQ音乐播放器怎么打开卡拉OK模式?QQ音乐播放器是生活中常用的音乐播放器,很多人在使用QQ音乐播 ...

  10. Android | 音乐播放器 I(详解)

    一.功能 搜索手机内的音乐(MediaStore.ContentResolver) 展示到播放界面(CursorAdapter.ListView) 点击播放界面的歌曲,能够进行播放(MediaPlay ...

最新文章

  1. 英特尔专家告诉你 信息时代如何掌控数据安全(附视频PPT)
  2. 人工智能python框架_Python 与 AI 智能框架 - 随笔分类 - Hopesun - 博客园
  3. 解决Mac下npm权限问题
  4. boost::timer模块timer、job_timer和progress_display示例程序
  5. boost::callable_traits的is_rvalue_reference_member的测试程序
  6. 每天一道LeetCode-----买卖商品问题,计算最大利润,分别有一次交易,两次交易,多次交易的情况
  7. 判断是否存在此对象_JVM的垃圾回收机制,判断对象是否死亡
  8. 玩转FusionCharts:Y轴数字形式(如去掉K)
  9. 增益和偏移的概念_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO...
  10. 直观简洁,轻易吸睛!促销海报模板
  11. [Stack]Valid Parentheses
  12. 【设计模式】03-抽象工厂模式
  13. JSON 格式化成视图模式
  14. 2022年最新最全软件测试面试题大全
  15. itunes安装后不能用,双击后等很长时间,提示:ITUNES 驱动程序缺少用于导入和刻录的CD与DVD注册的设置...
  16. 近200篇机器学习深度学习资料分享(含各种文档,视频,源码等)
  17. 图像算法工作感想之笨方法
  18. UVa 10105 - Polynomial Coefficients
  19. 【职场新贵】告诉你如何在压力下高效工作
  20. cir模型matlab代码,怎么用 CIR模型 进行利率定价

热门文章

  1. 软件一定要联网安装,只有内网就干瞪眼
  2. 面对技术难题,都是硬着头皮向前冲
  3. python代码_Python发送邮件基础知识与代码讲解!
  4. c mysql中文乱码解决方案_Linux下c读取MysqL中文乱码解决方案
  5. 河北工程大学计算机科学与技术分数线,河北工程大学计算机科学与技术专业2016年在河南理科高考录取最低分数线...
  6. 华为5500v3多路径linux6,CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  7. python语言太差_Python语言 最差实践
  8. python深度神经网络_深度神经网络 (第七部分)。 神经网络的融合: 堆叠
  9. java tomcat jvm内存_【转】Linux下tomcat JVM内存
  10. jsp中page指令用法详解