先搁两张效果图:

其实核心的东西很简单就是设置[MPNowPlayingInfoCenter defaultCenter]的nowPlayingInfo。这是一个字典。把标题,作者及专辑图片信息一设置,自动就出来了。

if (NSClassFromString(@"MPNowPlayingInfoCenter")) {
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.就是一面一段代码了。

NSBundle* bundle = [NSBundle mainBundle];
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吧。

AVURLAsset *avURLAsset = [AVURLAsset URLAssetWithURL:url
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锁屏状态播放音乐时显示专辑信息和图片相关推荐

  1. iOS锁屏页面控制音乐播放

    //1.调整音频会话设置,确保应用进入后台或静音开关已开启时音频仍将继续播放 2.锁屏状态下显示媒体信息 3.锁屏上的空间可以控制音频播放#import "ViewController.h& ...

  2. IOS 锁屏 状态下,看到歌手图片

    http://www.cocoachina.com/bbs/read.php?tid=98050 第一步,检查你的AppDelegate是不是继承于UIResponder,有的是自动生成,有的人习惯手 ...

  3. Android锁屏状态下信息的显示

    Android窗口的显示很简单,但很多人不知道锁屏状态下窗口的显示,今天就来展示一下. 先上QQ的效果图 1:显示 就一句代码,在需要显示的Activity中onCreate方法中加入 this.ge ...

  4. 计算机锁屏之后QQ音乐停止播放了,MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐...

    MAC电脑如何在息屏状态下让QQ音乐能继续播放音乐 一般MAC电脑息屏之后,大部分的应用都是会停止运行的,比如QQ音乐,就不会再播放音乐.今天小编就跟大家分享下MAC电脑如何在息屏状态下让QQ音乐能继 ...

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

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

  6. iOS锁屏显示歌曲信息

    导入头文件#import <MediaPlayer/MediaPlayer.h> 远程控制事件接收与处理 - (void)viewWillAppear:(BOOL)animated { [ ...

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

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

  8. 华为手机锁屏后显示无法连接服务器,锁屏状态可以远程连接服务器

    锁屏状态可以远程连接服务器 内容精选 换一换 只有运行中的云服务器云主机才允许用户登录.Windows操作系统用户名"Administrator".首次登录云耀云服务器,请先通过& ...

  9. android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗...

    前言 想在锁屏上面实现弹窗,第一个想法就是利用 WindowManager设置 Window的 Flag,通过设置 Flag的显示优先级来让窗口显示在锁屏的上面. 接下来就是试验可能相关的 Windo ...

最新文章

  1. HttpServletResponse,HttpServletRequest详解
  2. 微信内置浏览器无法清除缓存问题
  3. TRMF 辅助论文:最小二乘法复现TRMF
  4. arraycopy方法的作用_System. arraycopy()入门指南
  5. python3多进程 进程池 协程并发
  6. Lync Server 2013 标准版部署(三)数据库安装
  7. 【渝粤题库】广东开放大学 统计基础 形成性考核
  8. qt将光标相对于桌面的位置转换为相对于窗口的位置
  9. Jmeter-JDBC Request
  10. 微软3月补丁星期二最值得注意的是CVE-2020-0684和神秘0day CVE-2020-0796
  11. HCIE Secuirty 防火墙IPS功能和NIP 备考笔记(幕布)
  12. lvs的dr和nat模式配置备忘
  13. WEB页面自打开的响应顺序
  14. 强化学习之DQN(附莫烦代码)
  15. M2Det论文解读和开源代码
  16. cs python_python_13(前端—cs)
  17. App Ratings and Reviews
  18. 数字图像处理 - 灰度变换与空间滤波
  19. 手机游戏《魔塔》实现细节——(1)需求收集
  20. python爬取新闻数据

热门文章

  1. 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
  2. 如何在体育场创造极致观看体验
  3. Pubmedy的使用教程
  4. 强推Markdown神器,一秒钟拯救微信公众号排版
  5. Springboot毕设项目乐器乐曲交易系统tw5iy(java+VUE+Mybatis+Maven+Mysql)
  6. java 使用Spire.Doc实现Word文档插入图片
  7. 摄像头网页服务器,网络摄像头实现直播的方法 在网页浏览器播放等于可以在网页传播...
  8. 中国推出网上“防沉迷系统”
  9. QN902X在KEIL中使用定时器中断流程记录
  10. js数组按中文拼音排序_学习排序算法,结合这个方法太容易理解了