播放音乐
1.2.#import "ViewController.h"3.#import <AVFoundation/AVFoundation.h>4.5.@interface ViewController () <AVAudioPlayerDelegate> {6. AVAudioPlayer *myAudioPlayer;7.}8.@property (weak, nonatomic) IBOutlet UILabel *artistLabel;9.@property (weak, nonatomic) IBOutlet UILabel *albumLabel;10.@property (weak, nonatomic) IBOutlet UIImageView *artworkImageView;11.12.@end13.14.@implementation ViewController15.16.- (void)viewDidLoad {17. [super viewDidLoad];18.19. // 获得音频会话的单例对象20. AVAudioSession *audioSession = [AVAudioSession sharedInstance];21. // 激活音频会话22. [audioSession setActive:YES error:nil];23. // 设置支持后台播放24. [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];25. // 设置应用程序可以接受远程控制事件26. [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];27.28. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"后会无期" ofType:@"mp3"];29. NSURL *fileUrl = [NSURL fileURLWithPath:filePath];30.31.32. // 创建一个AVURLAsset对象,该对象保存了音频文件的元数据33. AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:fileUrl options:nil];34. // 获得元数据格式35. NSString *format = [[asset availableMetadataFormats] firstObject];36.37. // 根据指定的格式获得元数据38. // 对获得的元数据做一个循环取到其中的每一项39. for (AVMetadataItem *item in [asset metadataForFormat:format]) {40. if ([item.commonKey isEqualToString:@"artist"]) { // 艺术家41. self.artistLabel.text = (id)item.value;42. }43. else if ([item.commonKey isEqualToString:@"albumName"]) { // 专辑44. self.albumLabel.text = (id)item.value;45. }46. else if ([item.commonKey isEqualToString:@"artwork"]) { // 封面47. // 如果是封面的话item.value是封面图片的二进制数据48. // 需要转换成UIImage对象49. NSData *data = (id)item.value;50. self.artworkImageView.image = [UIImage imageWithData:data];51. }52. else if ([item.commonKey isEqualToString:@"title"]) { // 歌名53.54. }55. }56.57. myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileUrl error:nil];58. // 音量(0-1) 1以后软放大59. myAudioPlayer.volume = 1;60. // 缓冲61. [myAudioPlayer prepareToPlay];62. // 开始播放63. [myAudioPlayer play];64. // 暂停播放65. // [myAudioPlayer pause];66.67. myAudioPlayer.delegate = self;68.69.// myAudioPlayer.enableRate = YES;70.// myAudioPlayer.rate = 8;71.}72.73.- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {74. // 当播放完成时要回调的方法(可以在此处添加代码实现播放下一首)75.76.}77.78.@end79.80.
来源:https://www.cnblogs.com/buakaw/p/5211358.html