IOS锁屏状态播放音乐时显示专辑信息和图片
先搁两张效果图:
其实核心的东西很简单就是设置[MPNowPlayingInfoCenter defaultCenter]的nowPlayingInfo。这是一个字典。把标题,作者及专辑图片信息一设置,自动就出来了。
NSMutableDictionary * dict = [[NSMutableDictionary alloc] init];
[dict setObject:title forKey:MPMediaItemPropertyAlbumTitle];
[dict setObject:artist forKey:MPMediaItemPropertyArtist];
MPMediaItemArtwork * mArt = [[MPMediaItemArtwork alloc] initWithImage:img];
[dict setObject:mArt forKey:MPMediaItemPropertyArtwork];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = nil;
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];
[dict release];
}
上面的if (NSClassFromString(@”MPNowPlayingInfoCenter”))避免了版本兼容问题,这个API貌似只出现在5里面。当然了还要检查你的AppDelegate是不是继承于UIResponder,有的是自动生成,有的人习惯手写,如果是继承于NSObject请改为 AppDelegate : UIResponder。
知道了上面的信息,就简单了,下一步就是怎么获取title,artist和img.就是一面一段代码了。
NSString* path = [bundle bundlePath];
NSURL * fileURL=[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/akon、be - you - with.mp3", path]];
AudioFileTypeID fileTypeHint = kAudioFileMP3Type;
NSString *fileExtension = [[fileURL path] pathExtension];
if ([fileExtension isEqual:@"mp3"]||[fileExtension isEqual:@"m4a"])
{
AudioFileID fileID = nil;
OSStatus err = noErr;
err = AudioFileOpenURL( (CFURLRef) fileURL, kAudioFileReadPermission, 0, &fileID );
if( err != noErr ) {
NSLog( @"AudioFileOpenURL failed" );
}
UInt32 id3DataSize = 0;
err = AudioFileGetPropertyInfo( fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL );
if( err != noErr ) {
NSLog( @"AudioFileGetPropertyInfo failed for ID3 tag" );
}
NSDictionary *piDict = nil;
UInt32 piDataSize = sizeof( piDict );
err = AudioFileGetProperty( fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict );
if( err != noErr ) {
[piDict release];
NSLog( @"AudioFileGetProperty failed for property info dictionary" );
}
CFDataRef AlbumPic= nil;
UInt32 picDataSize = sizeof(picDataSize);
err =AudioFileGetProperty( fileID, kAudioFilePropertyAlbumArtwork, &picDataSize, &AlbumPic);
if( err != noErr ) {
NSLog( @"Get picture failed" );
}
NSData* imagedata= (NSData*)AlbumPic;
UIImage* image=[[UIImage alloc]initWithData:imagedata];
imageView.image=image;
NSString * Album = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Album]];
NSString * Artist = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Artist]];
NSString * Title = [(NSDictionary*)piDict objectForKey:
[NSString stringWithUTF8String: kAFInfoDictionary_Title]];
NSLog(@"%@",Title);
NSLog(@"%@",Artist);
NSLog(@"%@",Album);
}
但是有一个问题就是,这段代码经常读取不出图片。这个问题还是交给AVURLAsset吧。
options:nil];
for (NSString *format in [avURLAsset availableMetadataFormats]) {
//NSLog(@"-------format:%@",format);
for (AVMetadataItem *metadataItem in [avURLAsset metadataForFormat:format]) {
//NSLog(@"commonKey:%@",metadataItem.commonKey);
if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
//取出封面artwork,从data转成image显示
MPMediaItemArtwork *mArt = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageWithData:[(NSDictionary*)metadataItem.value objectForKey:@"data"]]];
[dict setObject:mArt
forKey:MPMediaItemPropertyArtwork];
break;
}
}
}
很靠谱,图片获取率100%.
so, 以上是所有实现代码喽,感兴趣的自已整理吧。
IOS锁屏状态播放音乐时显示专辑信息和图片相关推荐
- iOS锁屏页面控制音乐播放
//1.调整音频会话设置,确保应用进入后台或静音开关已开启时音频仍将继续播放 2.锁屏状态下显示媒体信息 3.锁屏上的空间可以控制音频播放#import "ViewController.h& ...
- IOS 锁屏 状态下,看到歌手图片
http://www.cocoachina.com/bbs/read.php?tid=98050 第一步,检查你的AppDelegate是不是继承于UIResponder,有的是自动生成,有的人习惯手 ...
- Android锁屏状态下信息的显示
Android窗口的显示很简单,但很多人不知道锁屏状态下窗口的显示,今天就来展示一下. 先上QQ的效果图 1:显示 就一句代码,在需要显示的Activity中onCreate方法中加入 this.ge ...
- 计算机锁屏之后QQ音乐停止播放了,MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐...
MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐 一般MAC电脑息屏之后,大部分的应用都是会停止运行的,比如QQ音乐,就不会再播放音乐.今天小编就跟大家分享下MAC电脑如何在息屏状态下让QQ音乐能继 ...
- android 锁屏显示音乐播放器,Android锁屏界面控制音乐播放
目前,在锁屏界面控制音乐播放有两种常用方式. 第一种方式:原生Android系统及自带音乐播放器. 锁屏界面端: 原生Android中,锁屏界面相关的UI由KeyguardHostView提供,Key ...
- iOS锁屏显示歌曲信息
导入头文件#import <MediaPlayer/MediaPlayer.h> 远程控制事件接收与处理 - (void)viewWillAppear:(BOOL)animated { [ ...
- Win10锁屏自动暂停音乐播放,解锁后恢复
Windows 10 系统锁屏可以让我们在短暂离开工作岗位时保护我们的隐私,而如果你正在播放音乐的话,锁屏开启后默认是继续播放的,这显然不符合大多数人用锁屏的目的.而今天给大家介绍的就是利用Windo ...
- 华为手机锁屏后显示无法连接服务器,锁屏状态可以远程连接服务器
锁屏状态可以远程连接服务器 内容精选 换一换 只有运行中的云服务器云主机才允许用户登录.Windows操作系统用户名"Administrator".首次登录云耀云服务器,请先通过& ...
- android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗...
前言 想在锁屏上面实现弹窗,第一个想法就是利用 WindowManager设置 Window的 Flag,通过设置 Flag的显示优先级来让窗口显示在锁屏的上面. 接下来就是试验可能相关的 Windo ...
最新文章
- HttpServletResponse,HttpServletRequest详解
- 微信内置浏览器无法清除缓存问题
- TRMF 辅助论文:最小二乘法复现TRMF
- arraycopy方法的作用_System. arraycopy()入门指南
- python3多进程 进程池 协程并发
- Lync Server 2013 标准版部署(三)数据库安装
- 【渝粤题库】广东开放大学 统计基础 形成性考核
- qt将光标相对于桌面的位置转换为相对于窗口的位置
- Jmeter-JDBC Request
- 微软3月补丁星期二最值得注意的是CVE-2020-0684和神秘0day CVE-2020-0796
- HCIE Secuirty 防火墙IPS功能和NIP 备考笔记(幕布)
- lvs的dr和nat模式配置备忘
- WEB页面自打开的响应顺序
- 强化学习之DQN(附莫烦代码)
- M2Det论文解读和开源代码
- cs python_python_13(前端—cs)
- App Ratings and Reviews
- 数字图像处理 - 灰度变换与空间滤波
- 手机游戏《魔塔》实现细节——(1)需求收集
- python爬取新闻数据
热门文章
- 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
- 如何在体育场创造极致观看体验
- Pubmedy的使用教程
- 强推Markdown神器,一秒钟拯救微信公众号排版
- Springboot毕设项目乐器乐曲交易系统tw5iy(java+VUE+Mybatis+Maven+Mysql)
- java 使用Spire.Doc实现Word文档插入图片
- 摄像头网页服务器,网络摄像头实现直播的方法 在网页浏览器播放等于可以在网页传播...
- 中国推出网上“防沉迷系统”
- QN902X在KEIL中使用定时器中断流程记录
- js数组按中文拼音排序_学习排序算法,结合这个方法太容易理解了