首页 > 代码库 > 音乐播放器
音乐播放器
// Copyright (c) 2014年 戴维营教育. All rights reserved.
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVAudioPlayerDelegate>
{ AVAudioPlayer *player;// 建立一个对象
NSArray *musicList; //数组
NSArray *pic;
int index;
int pi; //定义一个全局变量
NSTimer *timer;
__weak IBOutlet UILabel *Lab;
NSString *name; //字符串
NSString *na;
int i;
}
@property (weak, nonatomic) IBOutlet UISlider *UISlider;// 滑动条的一个属性
@end
@implementation ViewController
//-(void)puase
//{
// [self puase];
//}
-(void)play
{ name= musicList[index];
//1. 获取资源文件中的1.mp3的文件路径
NSString *path=[[NSBundle mainBundle]pathForResource:name ofType:@"mp3"];
// //2. 将文件读取到内存中
// NSData *data = http://www.mamicode.com/[NSData dataWithContentsOfFile:path];
// //3. 创建一个播放器对象
// player = [[AVAudioPlayer alloc] initWithData:data error:nil];
// 网络地址用下面的方法
// [NSURL URLWithString:@"http://www.baidu.com"];
//4. 从文件路径生成一个URL对象
NSURL *url=[NSURL fileURLWithPath:path];
//AVAudioPlayer只能播放本地文件
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
//使能,启动速率控制
player.enableRate = YES;
player.rate = 1;
player.volume = 0.5;
player.currentTime= player.deviceCurrentTime;
//准备播放
[player prepareToPlay];
[player play];
//
player.delegate = self;
//定时器 每隔0.1秒调用依次refreshProgress
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(refreshProgress) userInfo:nil repeats:YES];
}
-(void)img
{ na= pic[pi];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 220, 320, 260)];
imageView.image = [UIImage imageNamed:na];
[self.view addSubview:imageView];
}
- (void)viewDidLoad {
[super viewDidLoad];
// 自动播放
//[self play];
// pic= [NSArray arrayWithObjects:image1, image2, image3,image4,image5,nil];
pic=@[@"01.png",@"2.png",@"3.png",@"4.png",@"5.png"];
musicList = @[@"Nadiya - Roc",@"倩女幽魂",@"千千阙歌",@"愿得一人心(剧场版)",@"小苹果"];
name= musicList[index];
na = pic[pi];
UIButton *Btn=[UIButton buttonWithType:UIButtonTypeSystem];
Btn.frame=CGRectMake(270, 20, 30, 30);
[Btn setTitle:@"??" forState:UIControlStateNormal];
[Btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:Btn];
UIButton *Btn1=[UIButton buttonWithType:UIButtonTypeSystem];
Btn1.frame=CGRectMake(20, 20, 30, 30);
[Btn1 setTitle:@"??" forState:UIControlStateNormal];
[Btn1 addTarget:self action:@selector(Click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:Btn1];
UIButton *Btn2=[UIButton buttonWithType:UIButtonTypeSystem];
Btn2.frame=CGRectMake(140, 20, 30, 30);
[Btn2 setTitle:@"??" forState:UIControlStateNormal];
[Btn2 addTarget:self action:@selector(clicK) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:Btn2];
self->Lab.text=[NSString stringWithFormat:@"%@",name];
[self img];
}
//暂停
-(void)clicK
{
if(~i)
{
[self play];
}
else
[player pause];
i=~i;
}
-(void)Click{
index--;//如果为零,将不会播放当前为0的歌曲,所以初值应该为-1
if (index==-1) {
index=musicList.count-1;//防止溢出
}
[self play];
self->Lab.text=[NSString stringWithFormat:@"%@",name];//显示歌名
pi=index;
[self img];
}
-(void)click{
index ++;
if(index==musicList.count)//赋值并没有用到它
{
index=0;
}
[self play];
self->Lab.text=[NSString stringWithFormat:@"%@",name];
pi=index;
[self img];
}
//滑动条的方法
- (void)refreshProgress
{
self.UISlider.value = http://www.mamicode.com/player.currentTime / player.duration;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//播放之后的操作
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
{ index ++;
if(index==musicList.count)
{index=0;}
[timer invalidate];
[self play];
pi=index;
[self img];
}
- (IBAction)Slider:(UISlider *)sender {
//当前时间等于滑动率乘上播放时间
player.currentTime=sender.value*player.duration;
}
- (IBAction)vslider:(UISlider *)sender {
player.volume=sender.value;
}
@end