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 浏览器可能是客户端,而计算机上的网络应用 ...
随机推荐
- java 文件字符输入、输出流
Example10_6.java import java.io.*; public class Example10_6 { public static void main(String args[]) ...
- php截取中文字符串,英文字符串,中英文字符串长度的方法
今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节 ...
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- L3,please send me a card
expressions: a few words几句话 lend sb sth或lend sth to sb borrow sth或borrow sth from sb 都表示借,但是行为不同. wo ...
- 半透命opacity:(0-1),对于IE6版本不支持需要用filter:alpha(opacity=0-100)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- phpstorm9如何配置interpreter
找到php.exe的路径. 把php.exe 放进去就ok了
- css3的::selection属性
大家都知道浏览器对选中的文本默认样式都是统一的,Windows下是一个深蓝色的背景,白字的前景,而在Mac下是一个淡蓝色背景,白色字体,就如上图所展示的一样,自从有了这个“::selection”选择 ...
- JAVA基础--super关键字
子类对象new的时候堆里的内存分配: 1. 父类成员变量 2. 子类成员变量 3. this对象指向自己 4. super对象指向父类 super调用父类的方法: class FatherClass ...
- chromium high cpu usage
ctrl + esc 列出哪个进程占用了cpu,可以杀掉. --purge-memory-button可以在上边弹出的窗口上显示一个按钮,据说能释放内存.
- Selenuim+Python之元素定位总结及实例说明
网页自动化最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以笔者今天来总结下Selenuim+Python最基本的几种定位方式及实例说明,希望能帮助到大家 ...