IOS开发中AVFoundation中AVAudioPlayer的使用
IOS开发中如何调用音频播放组件
1、与音频相关的头文件等都在AVFoundation.h中,所以第一步是添加音频库文件:
#import <AVFoundation/AVFoundation.h>
2、先找一段要播放的音频文件,我这里找到是一个mp3文件,然后添加到项目中:

3、使用NSBundle获取这个文件并转化成NSData类型:
NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
NSData *data = [[NSData data]initWithContentsOfFile:filepath];
4、声明一个全局变量的AVAudioPlayer对象player:
@interface ViewController (){
AVAudioPlayer *player;
}
@end
5、初始化全局变量player:
player = [[AVAudioPlayer alloc]initWithData:data error:nil];
6、添加一个开始、暂停播放的按钮:
UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
myBtn.backgroundColor = [UIColor orangeColor];
myBtn.layer.cornerRadius = ;
myBtn.layer.masksToBounds = YES;
myBtn.enabled = YES;
[myBtn setTitle:@"开始播放" forState:UIControlStateNormal];
[myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myBtn];
7、编写按钮的方法,点击按钮之后检测player是否在播放,如果在播放,就停止播放,如果未播放,就开始播放,其中停止播放和开始播放调用的是player对象的play方法和pause方法:
-(void)myBtnAction :(UIButton*)sender{
if (player.playing) {
[player pause];
[sender setTitle:@"开始按钮" forState:UIControlStateNormal];
}else{
[player play];
[sender setTitle:@"暂停按钮" forState:UIControlStateNormal];
}
}
8、添加一个音量滑块,音量滑块添加一个方法volumeslidervaluechange:,当值改变时触发这个方法:
// 音量滑块
UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(, , , )];
volumeslider.value = 0.9;
[volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:volumeslider];
9、实现volumeslidervaluechange:方法,当滑块值改变时,改变音频播放器的音量大小:
-(void)volumeslidervaluechange:(UISlider*)sender{
player.volume = sender.value;
}
模拟运行并点击按钮就可以听到美妙的音乐了:

以下是完整代码:
//
// ViewController.m
// ceshi
//
// Created by mac on 16/5/24.
// Copyright © 2016年 mzw. All rights reserved.
// #import "ViewController.h"
#import <AVFoundation/AVFoundation.h> @interface ViewController (){
AVAudioPlayer *player;
} @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// 设置当前view背景色
self.view.backgroundColor = [UIColor lightGrayColor]; // 获取项目树中的音频文件
NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
// 把获取的音频文件转化为nsdata类型
NSData *data = [[NSData data]initWithContentsOfFile:filepath]; // 初始化一个音频播放器
player = [[AVAudioPlayer alloc]initWithData:data error:nil]; // 创建一个button,点击button开始或暂停音频播放器的播放
UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
myBtn.backgroundColor = [UIColor orangeColor];
myBtn.layer.cornerRadius = ;
myBtn.layer.masksToBounds = YES;
myBtn.enabled = YES;
[myBtn setTitle:@"开始播放" forState:UIControlStateNormal];
[myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myBtn]; // 音量滑块
UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(, , , )];
volumeslider.value = 0.9;
[volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:volumeslider]; } -(void)myBtnAction :(UIButton*)sender{
// 如果音频播放器处于播放状态,点击后就暂停播放,如果处于未播放状态,就开始播放
if (player.playing) {
[player pause];
[sender setTitle:@"开始按钮" forState:UIControlStateNormal];
}else{
[player play];
[sender setTitle:@"暂停按钮" forState:UIControlStateNormal];
}
} -(void)volumeslidervaluechange:(UISlider*)sender{
player.volume = sender.value;
} @end
IOS开发中AVFoundation中AVAudioPlayer的使用的更多相关文章
- iOS开发之动画中的时间(概况)
一.引言 在iOS开发中使用动画时,可以通过设置动画的duration.speed.begintime.offset属性,来设置动画的时长.速度.起始时间及起始偏移. 用一个简单的例子来说明各个参数的 ...
- (转)iOS 开发,工程中混合使用 ARC 和非ARC
[前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...
- iOS 开发,工程中混合使用 ARC 和非ARC(转)
[前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...
- iOS开发-修改UITableViewCell中image和title的位置和大小
最近在开发中遇到需要Cell中imageView和textLable位置和大小的情况,设计希望得到的结果如下图所示: 而TableViewCell默认样式,image是靠紧左边的,并且image和ti ...
- iOS开发--从TQRichTextViewDemo中学会分析project
下载地址: http://code4app.com/ios/TQRichTextView/5244fe9c6803fa0862000000 1.首先找到AppDelegate类.不管一个project ...
- iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五
项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用bas ...
- iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四
今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...
- 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一
第一步: 在info.plist中 View controller-based status bar appearance这个属性设置为 View controller-based status ba ...
- iOS开发:http中的get和post请求
什么是 HTTP ? 超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信. HTTP 的工作方式是客户端与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用 ...
随机推荐
- 利用apache组件实现文件上传
实现文件上传需要引入: commons-fileupload-1.3.2.jar commons-io-2.5.jar commons-logging-1.2.jar <!DOCTYPE htm ...
- UVA - 10048 Audiophobia (Floyd应用)
题意:求出两点之间所有路径最大权值的最小值. 思路:转变一下Floyd的形式即可: 注意:注意初始化问题,还有UVA奇葩的输出形式. 代码如下: #include<iostream> #i ...
- Python -- OOP高级 -- 元类
type()函数既可以返回一个对象的类型,又可以创建出新的类型 def fn(self, name="world"): print("Hello, %s!" % ...
- 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就 ...
- Windows API 之 CreateThread、WaitForSingleObject(未完)
WaitForSingleObject Waits until the specified object is in the signaled state or the time-out interv ...
- VIJOS P1081 野生动物园 SBT、划分树模板
[描述] cjBBteam拥有一个很大的野生动物园.这个动物园坐落在一个狭长的山谷内,这个区域从南到北被划分成N个区域,每个区域都饲养着一头狮子.这些狮子从北到南编号为1,2,3,…,N.每头狮子都有 ...
- nodejs实践-MongoDB
nodejs实践-MongoDB laiqun@msn.cn Contents 1. 特点: 2. 开始使用 3. 使用Mongoose操作MongoDB 4. 在express中使用,组织数据库相关 ...
- Linux链接VPN进行转发
1.安装client sudo apt-get install pptp-linux 2.连接vpn server sudo pptpsetup --create pptpd --server x.x ...
- 用telnet命令,POP3接收邮件
昨天已经成功利用telnet命令发送了邮件,今天接着来,只能发送不能接收多郁闷. 邮件的接收这里是基于pop3协议的,pop3协议共定义了12条与接收相关的邮件,如下面简单解释: 首先是与登陆验证相关 ...
- DIV撑开
引用自:http://radzhang.iteye.com/blog/1678734 在CSS排版中,如果一个层中的层使用了float浮动的话,那么就有可能会出现外层没有被内层撑开的情况,如以下代码所 ...