2014-01-10 音频播放之AVAudioPlayer
来源:互联网 发布:淘宝店面美工 编辑:程序博客网 时间:2024/05/01 08:21
AVAudioPlayer支持本地播放,不支持流媒播放
//获取NSBundle下的本地歌曲
NSString *string = [[NSBundlemainBundle]pathForResource:@"蓝莲花 - 张恒远,赵晗" ofType:@"mp3"];
//注意方法fileURLWithPath 和URLWithString
/*
前者为打开本地file
后者为把String类型转换为URL网络地址
*/
NSURL *url = [NSURLfileURLWithPath:string];
//注意此时的audio为全局对象否则播放不了
audio = [[AVAudioPlayeralloc]initWithContentsOfURL:urlerror:nil];
//准备播放加入一个队列 并没有开始播放
[audioprepareToPlay];
if ([audio play]) {
NSLog(@"音乐开始播放");
}
//numberOfLoops为设定播放次数 默认为1次
audio.numberOfLoops =3;
/*
此外常用的属性有:
//调节音量 范围是0.0-1.0之间
1. audio.volume = 0.5
//设置歌曲的总时长
2.audio.duration
//设定当前播放的进度
3.audio.currentTime = 15.0
//设定声道数 它是个只读属性
4.NSUInteger channels = audio.numberOfChannels;
[audio play];//播放
[audio stop];//停止
[audio pause];//暂停
*/
code:
#import<UIKit/UIKit.h>
#import<AVFoundation/AVFoundation.h>//导入包
@interface MainViewController :UIViewController<AVAudioPlayerDelegate>
{
AVAudioPlayer *audio ;//播放器
NSTimer *timer;//定时器
BOOL isPlaying;//判断是否播放
}
@property (weak,nonatomic)IBOutlet UISlider *volumeSlider;//音量调节
@property (weak,nonatomic)IBOutlet UISlider *progressSlider;//进度调节
@property (weak,nonatomic)IBOutlet UILabel *currTime;//显示播放时间
@property (weak,nonatomic)IBOutlet UILabel *durationTime;//显示总时间
@property (weak,nonatomic)IBOutlet UIButton *playBtn;//播放按钮
@end
#import"MainViewController.h"
@interfaceMainViewController ()
@end
@implementation MainViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNilbundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[superviewDidLoad];
//获得Bundle下的MP3文件
NSString *path = [[NSBundlemainBundle]pathForResource:@"蓝莲花 - 张恒远,赵晗" ofType:@"mp3"];
//String类型转化为url
NSURL *url = [NSURLfileURLWithPath:path];
audio = [[AVAudioPlayeralloc]initWithContentsOfURL:url error:nil];
audio.delegate =self;
[audioprepareToPlay];
self.progressSlider.maximumValue =audio.duration;//给进度条赋最大值 音乐的总长度
self.durationTime.text = [NSStringstringWithFormat:@"%d",(int)audio.duration];//赋值音乐的最大长度
timer = [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfselector:@selector(timeAction)userInfo:nilrepeats:YES];
}
//显示时间以00:00格式
-(void)showTime
{
if ((int)audio.currentTime %60 <10) {
self.currTime.text = [NSStringstringWithFormat:@"%d:0%d",(int)audio.currentTime / 60, (int)audio.currentTime %60];
} else {
self.currTime.text = [NSStringstringWithFormat:@"%d:%d",(int)audio.currentTime / 60, (int)audio.currentTime %60];
}
if ((int)audio.duration %60 <10) {
self.durationTime.text = [NSStringstringWithFormat:@"%d:0%d",(int)audio.duration /60, (int)audio.duration %60];
} else {
self.durationTime.text = [NSStringstringWithFormat:@"%d:%d",(int)audio.duration /60, (int)audio.duration %60];
}
}
//监听当前时间和进度条的动态
- (void)timeAction
{
[selfshowTime];
self.progressSlider.value =audio.currentTime;
}
- (IBAction)progressAction:(UISlider *)sender
{
//设置当前的播放进度时间
audio.currentTime = sender.value;
}
- (IBAction)volumnAction:(UISlider *)sender
{
//设置播放器的音量
audio.volume = sender.value;
}
- (IBAction)playBtn:(UIButton *)sender
{
//获得当前播放状态
isPlaying = audio.playing;
if (isPlaying) {
[audiopause];
[sendersetTitle:@"播放"forState:UIControlStateNormal];
}else{
[audioplay];
[sendersetTitle:@"暂停"forState:UIControlStateNormal];
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[timerinvalidate];//关闭timer
self.progressSlider.value =0.0;
[self.playBtnsetTitle:@"播放"forState:UIControlStateNormal];
isPlaying = NO;
}
@end
- 2014-01-10 音频播放之AVAudioPlayer
- iPhone应用开发之AVAudioPlayer音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iPhone开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- iOS开发之AVAudioPlayer 音频播放
- IOS开发音频播放之AVaudioplayer
- iOS开发之 AVAudioPlayer音频播放
- 【iOS】音频播放之AVAudioPlayer,AVPlayer,AVQueuePlayer
- 音频播放 AVPlayer AVAudioPlayer
- iOS 音频播放 AVAudioPlayer
- IOS AVAudioPlayer 音频播放
- 设计师职场:在公司如何写好你的电子邮件
- 电脑键盘上的一些常用的快捷键的技巧!
- iOS每日一技:如何删除巨大无比的“其它”空间
- eclipse maven plugin 插件 安装 和 配置
- Linux下二进制代码的阅读
- 2014-01-10 音频播放之AVAudioPlayer
- Engine pkcs11 quickstart
- 触摸DevOps,从现在开始DevOps之旅
- Silk编解码在android实现
- linux网卡驱动源码分析
- Linux内核中的hash与bucket
- 为您讲解杀毒软件的杀毒原理您不得不知道的一些内幕
- Java读取properties文件举例
- saiku应用的调试