#import "AdiuoViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface AdiuoViewController ()<AVAudioPlayerDelegate>
{
AVAudioPlayer * _adudioPlayer;
UIButton * _playButton;
UIButton * _nextButton;
UIButton * _previousButton;
NSInteger _currentMusic;
NSArray * _musciArray;
UISlider * _progressSlider;
UILabel * _currentProgress;
UILabel * _allTime;
}
@property (nonatomic, strong) UIImageView * imageView;
@end
@implementation AdiuoViewController
- (void)dealloc
{
[_musciArray release];
[_playButton release];
[_nextButton release];
[_previousButton release];
[_allTime release];
[_currentProgress release];
[_progressSlider release];
[_allTime release];
[_adudioPlayer release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initData];
[self initUserVC];
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateSliderValue) userInfo:nil repeats:YES];
}
- (void)initData
{
UITabBarItem * item =[[UITabBarItem alloc] initWithTitle:@"音频" image:[UIImage imageNamed:@"erji"] tag:0];
self.tabBarItem = item;
//打印应用安装后Bundle包的位置
NSLog(@"%@",[[NSBundle mainBundle] pathForAuxiliaryExecutable:@""]);
_musciArray = [[NSArray alloc]initWithObjects: @"牛奶咖啡 - 明天,你好.mp3",@"陈奕迅 - 一生中最爱 - live 版.mp3",@"beyond - 海阔天空.mp3", @"不才 - 化身孤岛的鲸.mp3", @"朴树 - 平凡之路.mp3", nil];
_currentMusic = 0;
_currentProgress = [[UILabel alloc] initWithFrame:CGRectMake(30,344 , 48, 20)];
_currentProgress.text = @"0:00";
_currentProgress.textColor = [UIColor whiteColor];
_currentProgress.font = [UIFont systemFontOfSize:16];
[self.view addSubview:_currentProgress];
_allTime = [[UILabel alloc] initWithFrame:CGRectMake(294, 344, 48, 20)];
_allTime.text = @"0:00";
_allTime.textColor = [UIColor whiteColor];
_allTime.font = [UIFont systemFontOfSize:16];
[self.view addSubview:_allTime];
[self initAudioPlayerWithMusicName:_musciArray[_currentMusic] autoPlay:NO]; //设置开始的时候不是自动播放
}
- (void)initUserVC
{
//创建播放界面
_playButton = [[UIButton alloc] initWithFrame:CGRectMake(170, 245, 50, 50)];
[_playButton setImage:[UIImage imageNamed:@"bofang"] forState:UIControlStateNormal];
[_playButton setImage:[UIImage imageNamed:@"zanting"] forState:UIControlStateSelected];//设置选中状态的图片
[_playButton addTarget:self action:@selector(pressedPlayerButton) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_playButton];
_nextButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_playButton.frame)+30, CGRectGetMinY(_playButton.frame)+10, 30, 30)];
[_nextButton setImage:[UIImage imageNamed:@"kuaijin"] forState:UIControlStateNormal];
[_nextButton addTarget:self action:@selector(pressedNextButton) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_nextButton];
_previousButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMinX(_playButton.frame)-60, CGRectGetMinY(_playButton.frame)+10, 30, 30)];
[_previousButton setImage:[UIImage imageNamed:@"kuaitui"] forState:UIControlStateNormal];
[_previousButton addTarget:self action:@selector(pressedPreviousButton) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_previousButton];
_progressSlider = [[UISlider alloc] initWithFrame:CGRectMake(CGRectGetMinX(_previousButton.frame)-30, CGRectGetMaxY(_playButton.frame)+50, 210, 20)];
[_progressSlider addTarget:self action:@selector(progressOfMusicChange:) forControlEvents:UIControlEventValueChanged];
// [_progressSlider addTarget:self action:@selector(progressOfMusic:) forControlEvents:UIControlEventTouchUpInside];
_progressSlider.minimumTrackTintColor = [UIColor blackColor];
_progressSlider.maximumTrackTintColor = [UIColor colorWithRed:11/255.0 green:169/255.0 blue:251/255.0 alpha:1];
[self.view addSubview:_progressSlider];
UISlider * volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(285, CGRectGetMaxY(_nextButton.frame)-60, 150, 30)];
volumeSlider.minimumTrackTintColor = [UIColor blackColor];
volumeSlider.maximumTrackTintColor = [UIColor colorWithRed:11/255.0 green:169/255.0 blue:251/255.0 alpha:1];
volumeSlider.transform = CGAffineTransformMakeRotation(- M_PI_2);
volumeSlider.value = 0.8;
[volumeSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:volumeSlider];
[volumeSlider release];
UIImageView * volumePic = [[UIImageView alloc] initWithFrame:CGRectMake(350, CGRectGetMidY(volumeSlider.frame)+87, 20, 20)];
volumePic.image = [UIImage imageNamed:@"yinliang"];
[self.view addSubview:volumePic];
[volumePic release];
}
- (void)volumeChange:(UISlider *)sender
{
_adudioPlayer.volume = sender.value;
NSLog(@"%f",sender.value);
}
- (void)progressOfMusicChange:(UISlider *)sender
{
_adudioPlayer.currentTime = sender.value * _adudioPlayer.duration;
}
//- (void)progressOfMusic:(UISlider *)sender
//{
//
// _adudioPlayer.currentTime = sender.value * _adudioPlayer.duration;
//}
- (void)updateSliderValue
{
_progressSlider.value = _adudioPlayer.currentTime/_adudioPlayer.duration;
NSString * currrentTime;
int minute = ((int)_adudioPlayer.currentTime) / 60;
int second = ((int)_adudioPlayer.currentTime) % 60;
if (minute < 10) {
if (second < 10) {
currrentTime = [NSString stringWithFormat:@"0%d:0%d",minute,second];
}else {
currrentTime = [NSString stringWithFormat:@"0%d:%d",minute, second];
}
}
else {
if (second < 10) {
currrentTime = [NSString stringWithFormat:@"%d:0%d",minute,second];
}else {
currrentTime = [NSString stringWithFormat:@"%d:%d",minute, second];
}
}
// NSLog(@"%@", currrentTime);
_currentProgress.text = currrentTime;
}
- (void)initAudioPlayerWithMusicName:(NSString *)musicName autoPlay:(BOOL)autoPlay
{
if (_adudioPlayer) {
[_adudioPlayer release]; //把上一首播放的歌释放掉
}
NSError * error = nil;
[self picture];
//初始化音乐播放器
//获取本地音乐的URL
NSURL * musicURL = [[NSBundle mainBundle]URLForAuxiliaryExecutable:musicName];
_adudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:&error];
_adudioPlayer.delegate = self;
if (error) { //没找到音乐的地址时才去初始化error,error存在就说明初始化失败了
NSLog(@"初始化失败:%@", error.localizedDescription);
} else { //error不存在说明音乐初始化成功了
//音量
_adudioPlayer.volume = 1; //0到1
NSLog(@"音乐初始化成功!");
NSLog(@"%@", _musciArray[_currentMusic]);
NSLog(@"%f秒",_adudioPlayer.duration);
//显示音乐播放的总时间
NSString * allTime;
int minute2 = ((int)_adudioPlayer.duration) / 60;
int second2 = ((int)_adudioPlayer.duration) % 60;
if (minute2 < 10) {
if (second2 < 10) {
allTime = [NSString stringWithFormat:@"0%d:0%d",minute2,second2];
}else {
allTime = [NSString stringWithFormat:@"0%d:%d",minute2,second2];
}
}
else {
if (second2 < 10) {
allTime = [NSString stringWithFormat:@"%d:0%d",minute2,second2];
}else {
allTime = [NSString stringWithFormat:@"%d:%d",minute2,second2];
}
}
NSLog(@"%@",allTime);
_allTime.text = allTime;
if (autoPlay) { //如果是自动播放,进入页面是就开始播放
NSLog(@"音乐初始化成功,自动播放!");
//音乐的时长(秒)
NSLog(@"%f秒",_adudioPlayer.duration);
[_adudioPlayer prepareToPlay];
[_adudioPlayer play];
//音乐循环次数
_adudioPlayer.numberOfLoops = 0;
}else {
}
}
}
//下一曲
- (void)pressedNextButton
{
if (_currentMusic == _musciArray.count - 1) { //如果播放的歌曲
_currentMusic = 0;
} else {
_currentMusic ++;
}
_playButton.selected = YES;
[self initAudioPlayerWithMusicName:_musciArray[_currentMusic] autoPlay:YES];
}
//上一曲
- (void)pressedPreviousButton
{
if (_currentMusic == 0) {
_currentMusic = _musciArray.count - 1;
}else {
_currentMusic --;
}
[self initAudioPlayerWithMusicName:_musciArray[_currentMusic] autoPlay:YES];
}
// 播放/暂停按钮
- (void)pressedPlayerButton
{
_playButton.selected = !_playButton.selected; //播放/暂停按钮的切换(默认开始时是NO)
if (_playButton.selected) { //如果是选中状态(YES)
//准备播放
[_adudioPlayer prepareToPlay];
//开始播放
[_adudioPlayer play];
}else { //如果是选中状态(NO)
//暂停播放
[_adudioPlayer pause];
}
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if (_adudioPlayer) {
[_adudioPlayer pause];
_playButton.selected = NO;
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[self pressedNextButton];
}
- (void)picture
{
//初始化专辑图片
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(113, 50, 160, 160)];
imageView.layer.cornerRadius = 80;
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
self.imageView = imageView;
[imageView release];
//获取音乐文件专辑图片
AVURLAsset * urlAsset = [AVURLAsset URLAssetWithURL:[[NSBundle mainBundle]URLForAuxiliaryExecutable:_musciArray[_currentMusic]] options:nil];
BOOL flag = NO;
for (NSString * format in [urlAsset availableMetadataFormats]) {
for (AVMetadataItem * metadataItem in [urlAsset metadataForFormat:format]) {
if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
// NSLog(@"%@",metadataItem.value);
NSData * data = [metadataItem.value copyWithZone:nil];
//得到图片数据
//通过图片数据设置图片视图
if (data) {
[self.imageView setImage:[UIImage imageWithData:data]];
}
flag = YES;
}
}
}
if (!flag) {
[self.imageView setImage:[UIImage imageNamed:@"yyue.jpg"]];
}
}
@end
IOS UI_音频AVAudioPlayer
最新推荐文章于 2024-05-05 16:17:42 发布