AVAudioPlayerDemo
来源:互联网 发布:遵义广电网络客服电话 编辑:程序博客网 时间:2024/06/05 09:15
先导入框架AVFoundation.framework(记得在使用寻找音乐路径的时候要修改音乐的名字)
创建一个空的工程 再创建两个类 AudioPlayerViewController 和 ChoiceAudiViewController
在application文件中添加的代码如下 记得要导入ChoiceAudiViewController
ChoiceAudiViewController *choiceVC = [[ChoiceAudiViewControlleralloc]init];
UINavigationController *navigationC = [[UINavigationControlleralloc]initWithRootViewController:choiceVC];
self.window.rootViewController = navigationC;
在ChoiceAudiViewController.h文件中的代码如下
#import <UIKit/UIKit.h>
@interface ChoiceAudiViewController :UIViewController<UITableViewDataSource,UITableViewDelegate>
@property (retain,nonatomic)NSArray *musicArr;
@end
ChoiceAudiViewController.m添加的代码
#import "ChoiceAudiViewController.h"
#import "AudioPlayerViewController.h"
@interface ChoiceAudiViewController ()
@end
@implementation ChoiceAudiViewController
- (void)dealloc
{
[_musicArr release];
[superdealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.title =@"音乐列表";
}
return self;
}
- (void)viewDidLoad
{
[superviewDidLoad];
self.musicArr = [NSArrayarrayWithObjects:@"test",@"123",@"hinder",@"The Sound Of Silence",nil];
UITableView *myTableView = [[UITableViewalloc]initWithFrame:CGRectMake(0,0, 320,450) style:UITableViewStylePlain];
myTableView.delegate =self;
myTableView.dataSource =self;
[self.viewaddSubview:myTableView];
[myTableViewrelease];
}
#pragma marks --- datasource ---
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.musicArr.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = @"identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil)
{
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:identifier];
}
cell.textLabel.text = [self.musicArrobjectAtIndex:[indexPath row]];
return cell;
}
#pragma marks --- UITable view delegate ---
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
AudioPlayerViewController *audioVC = [[AudioPlayerViewControlleralloc]init];
audioVC.selectedMucicName = [self.musicArrobjectAtIndex:[indexPath row]];
[self.navigationControllerpushViewController:audioVC animated:YES];
[audioVCrelease];
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface AudioPlayerViewController :UIViewController<AVAudioPlayerDelegate>
@property (copy,nonatomic)NSString *selectedMucicName;
@property (retain,nonatomic)AVAudioPlayer *audiPlayer;
@property (retain,nonatomic)NSTimer *timer;
@property (assign,nonatomic)BOOL playState;
@end
enum{
BUTTON_TAG =1,
LABEL1_TAG,
LABEL2_TAG,
SLI_VOICE_TAG,
SLI_SONG_TAG
};
#import "AudioPlayerViewController.h"
@interface AudioPlayerViewController ()
@end
@implementation AudioPlayerViewController
- (void)dealloc
{
[_audiPlayer release];
[_timer release];
[_selectedMucicName release];
[super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = self.selectedMucicName;
UIButton *audioButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
audioButton.frame = CGRectMake(120,80, 80, 40);
audioButton.tag = BUTTON_TAG;
[audioButton setTitle:@"play" forState:UIControlStateNormal];
[audioButton addTarget:self action:@selector(playAndPauseBtnPress:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:audioButton];
//显示播放进度的标签
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100,160, 120, 30)];
label.text =@"00:00 of 00:00";
label.tag = LABEL1_TAG;
[self.view addSubview:label];
[label release];
//调节声音的进度条
UISlider *voiceSlider = [[UISlider alloc]initWithFrame:CGRectMake(100,220, 210, 20)];
voiceSlider.tag = SLI_VOICE_TAG;
[self.view addSubview:voiceSlider];
[voiceSlider release];
//当声音进度改变时调用的方法
[voiceSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];
UILabel *voicelabel = [[UILabel alloc]initWithFrame:CGRectMake(10,220, 85, 20)];
voicelabel.text =@"音量:";
[self.view addSubview:voicelabel];
[voicelabel release];
UISlider *songSlider = [[UISlider alloc]initWithFrame:CGRectMake(100,280, 210, 20)];
songSlider.thumbTintColor = [UIColor greenColor];
songSlider.tintColor = [UIColor redColor];
[songSlider setThumbImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];;
songSlider.tag = SLI_SONG_TAG;
[self.view addSubview:songSlider];
[songSlider release];
UILabel *songLabel = [[UILabel alloc]initWithFrame:CGRectMake(10,280, 85, 20)];
songLabel.text =@"播放进度:";
[self.view addSubview:songLabel];
[songLabel release];
//当进度条进度改变时调用的方法
[songSlider addTarget:self action:@selector(progressChange:) forControlEvents:UIControlEventValueChanged];
//当进度条进度改变完成时调用的方法
[songSlider addTarget:self action:@selector(progressDidChanged:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)viewWillAppear:(BOOL)animated
{
NSString *path = [[NSBundle mainBundle]pathForResource:self.selectedMucicName ofType:@"mp3"];
NSURL *url = [[NSURL alloc]initFileURLWithPath:path];
self.audiPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
[url release];
self.audiPlayer.delegate = self;
self.audiPlayer.meteringEnabled = YES;
[self.audiPlayer prepareToPlay];
self.playState = NO;
}
- (void)viewWillDisappear:(BOOL)animated
{
[self.audiPlayer stop];
[self.audiPlayer release];
self.audiPlayer = nil;
}
- (void)playAndPauseBtnPress:(id)sender
{
UIButton *button = (UIButton *)[self.view viewWithTag:BUTTON_TAG];
self.playState = !self.playState;
if (self.playState)
{
[button setTitle:@"pause" forState:UIControlStateNormal];
[self playMusic];
}else
{
[button setTitle:@"play"forState:UIControlStateNormal];
[selfpauseMusic];
}
}
- (void)playMusic
{
[self.audiPlayerplay];
UISlider *voice = (UISlider *)[self.viewviewWithTag:SLI_VOICE_TAG];
UISlider *song = (UISlider *)[self.viewviewWithTag:SLI_SONG_TAG];
UILabel *timeLAable = (UILabel *)[self.viewviewWithTag:LABEL1_TAG];
[voicesetEnabled:YES];
[songsetEnabled:YES];
[timeLAablesetEnabled:YES];
voice.value =self.audiPlayer.volume;
self.timer = [NSTimerscheduledTimerWithTimeInterval:0.1ftarget:selfselector:@selector(updateMeters)userInfo:nilrepeats:YES];
}
- (void)pauseMusic{
[self.audiPlayerpause];
UISlider *voice = (UISlider *)[self.viewviewWithTag:SLI_VOICE_TAG];
UISlider *song = (UISlider *)[self.viewviewWithTag:SLI_SONG_TAG];
[self.timerinvalidate];
[voicesetEnabled:NO];
[songsetEnabled:NO];
}
- (void)updateMeters
{
[self.audiPlayerupdateMeters];
UISlider *song = (UISlider *)[self.viewviewWithTag:SLI_SONG_TAG];
song.value = self.audiPlayer.currentTime/self.audiPlayer.duration;
UILabel *timeLabel = (UILabel *)[self.viewviewWithTag:LABEL1_TAG];
timeLabel.text = [NSStringstringWithFormat:@"%@ of %@",[selfformateTime:self.audiPlayer.currentTime],[selfformateTime:self.audiPlayer.duration]];
}
-(NSString *)formateTime:(NSTimeInterval)_time{
int num = (int)_time;
int min = num / 60;
int sec = num % 60;
if (num < 60) {
return [NSStringstringWithFormat:@"0:%2d",sec];
}else{
return [NSStringstringWithFormat:@"%2d:%2d",min,sec];
}
}
- (void)volumeChange:(id)sender
{
UISlider *slider = (UISlider *)[self.viewviewWithTag:SLI_VOICE_TAG];
slider.value =self.audiPlayer.volume;
}
- (void)progressChange:(id)sender
{
[self.audiPlayerpause];
UISlider *song =(UISlider *)[self.viewviewWithTag:SLI_SONG_TAG];
UILabel *timeLable = (UILabel *)[self.viewviewWithTag:LABEL1_TAG];
song.value =self.audiPlayer.duration * song.value;
timeLable.text = [NSStringstringWithFormat:@"%@ of %@",[selfformateTime:self.audiPlayer.currentTime],[selfformateTime:self.audiPlayer.duration]];
}
- (void)progressDidChanged:(id)sender
{
[self.audiPlayerplay];
}
#pragma marks --- AVAudioPlayer delegate ---
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
UISlider *voice = (UISlider *)[self.viewviewWithTag:SLI_VOICE_TAG];
UISlider *song = (UISlider *)[self.viewviewWithTag:SLI_SONG_TAG];
voice.enabled =NO;
song.enabled =NO;
UIButton *btn = (UIButton *)[self.viewviewWithTag:BUTTON_TAG];
[btn setTitle:@"Play"forState:UIControlStateNormal];
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- AVAudioPlayerDemo
- arp断网攻击解决办法
- Ubuntu下面安装eclipse for c++
- 虚拟机下ubuntu上网
- HDU 1263 水果
- codeforces--2014/2/20--A. Nineteen
- AVAudioPlayerDemo
- ubuntu 安装 酷狗在线音乐桌面版
- hping的使用方式
- codeforces--2014/2/20--B. Three matrices
- Myeclipse 8.5 Preferences 下无tomcat
- Linux磁盘管理命令
- NMOS和PMOS
- ZOJ-1016
- 黑马程序员--7K面试题--第十一篇--银行业务调度系统