IOS开发中如何调用音频播放组件

1、与音频相关的头文件等都在AVFoundation.h中,所以第一步是添加音频库文件:

  1. #import <AVFoundation/AVFoundation.h>

2、先找一段要播放的音频文件,我这里找到是一个mp3文件,然后添加到项目中:

3、使用NSBundle获取这个文件并转化成NSData类型:

  1. NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
  2. NSData *data = [[NSData data]initWithContentsOfFile:filepath];

4、声明一个全局变量的AVAudioPlayer对象player:

  1. @interface ViewController (){
  2. AVAudioPlayer *player;
  3. }
  4.  
  5. @end

5、初始化全局变量player:

  1. player = [[AVAudioPlayer alloc]initWithData:data error:nil];

6、添加一个开始、暂停播放的按钮:

  1.    UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
  2. myBtn.backgroundColor = [UIColor orangeColor];
  3. myBtn.layer.cornerRadius = ;
  4. myBtn.layer.masksToBounds = YES;
  5. myBtn.enabled = YES;
  6. [myBtn setTitle:@"开始播放" forState:UIControlStateNormal];
  7. [myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  8. [self.view addSubview:myBtn];

7、编写按钮的方法,点击按钮之后检测player是否在播放,如果在播放,就停止播放,如果未播放,就开始播放,其中停止播放和开始播放调用的是player对象的play方法和pause方法:

  1. -(void)myBtnAction :(UIButton*)sender{
  2.  
  3. if (player.playing) {
  4. [player pause];
  5. [sender setTitle:@"开始按钮" forState:UIControlStateNormal];
  6. }else{
  7. [player play];
  8. [sender setTitle:@"暂停按钮" forState:UIControlStateNormal];
  9. }
  10. }

8、添加一个音量滑块,音量滑块添加一个方法volumeslidervaluechange:,当值改变时触发这个方法:

  1. // 音量滑块
  2. UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(, , , )];
  3. volumeslider.value = 0.9;
  4. [volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
  5. [self.view addSubview:volumeslider];

9、实现volumeslidervaluechange:方法,当滑块值改变时,改变音频播放器的音量大小:

  1. -(void)volumeslidervaluechange:(UISlider*)sender{
  2. player.volume = sender.value;
  3. }

模拟运行并点击按钮就可以听到美妙的音乐了:

以下是完整代码:

  1. //
  2. // ViewController.m
  3. // ceshi
  4. //
  5. // Created by mac on 16/5/24.
  6. // Copyright © 2016年 mzw. All rights reserved.
  7. //
  8.  
  9. #import "ViewController.h"
  10. #import <AVFoundation/AVFoundation.h>
  11.  
  12. @interface ViewController (){
  13. AVAudioPlayer *player;
  14. }
  15.  
  16. @end
  17.  
  18. @implementation ViewController
  19.  
  20. - (void)viewDidLoad {
  21. [super viewDidLoad];
  22. // 设置当前view背景色
  23. self.view.backgroundColor = [UIColor lightGrayColor];
  24.  
  25. // 获取项目树中的音频文件
  26. NSString *filepath = [[NSBundle mainBundle]pathForResource:@"bbb" ofType:@"mp3"];
  27. // 把获取的音频文件转化为nsdata类型
  28. NSData *data = [[NSData data]initWithContentsOfFile:filepath];
  29.  
  30. // 初始化一个音频播放器
  31. player = [[AVAudioPlayer alloc]initWithData:data error:nil];
  32.  
  33. // 创建一个button,点击button开始或暂停音频播放器的播放
  34. UIButton *myBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
  35. myBtn.backgroundColor = [UIColor orangeColor];
  36. myBtn.layer.cornerRadius = ;
  37. myBtn.layer.masksToBounds = YES;
  38. myBtn.enabled = YES;
  39. [myBtn setTitle:@"开始播放" forState:UIControlStateNormal];
  40. [myBtn addTarget:self action:@selector(myBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  41. [self.view addSubview:myBtn];
  42.  
  43. // 音量滑块
  44. UISlider *volumeslider = [[UISlider alloc]initWithFrame:CGRectMake(, , , )];
  45. volumeslider.value = 0.9;
  46. [volumeslider addTarget:self action:@selector(volumeslidervaluechange:) forControlEvents:UIControlEventValueChanged];
  47. [self.view addSubview:volumeslider];
  48.  
  49. }
  50.  
  51. -(void)myBtnAction :(UIButton*)sender{
  52. // 如果音频播放器处于播放状态,点击后就暂停播放,如果处于未播放状态,就开始播放
  53. if (player.playing) {
  54. [player pause];
  55. [sender setTitle:@"开始按钮" forState:UIControlStateNormal];
  56. }else{
  57. [player play];
  58. [sender setTitle:@"暂停按钮" forState:UIControlStateNormal];
  59. }
  60. }
  61.  
  62. -(void)volumeslidervaluechange:(UISlider*)sender{
  63. player.volume = sender.value;
  64. }
  65.  
  66. @end

IOS开发中AVFoundation中AVAudioPlayer的使用的更多相关文章

  1. iOS开发之动画中的时间(概况)

    一.引言 在iOS开发中使用动画时,可以通过设置动画的duration.speed.begintime.offset属性,来设置动画的时长.速度.起始时间及起始偏移. 用一个简单的例子来说明各个参数的 ...

  2. (转)iOS 开发,工程中混合使用 ARC 和非ARC

    [前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...

  3. iOS 开发,工程中混合使用 ARC 和非ARC(转)

    [前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...

  4. iOS开发-修改UITableViewCell中image和title的位置和大小

    最近在开发中遇到需要Cell中imageView和textLable位置和大小的情况,设计希望得到的结果如下图所示: 而TableViewCell默认样式,image是靠紧左边的,并且image和ti ...

  5. iOS开发--从TQRichTextViewDemo中学会分析project

    下载地址: http://code4app.com/ios/TQRichTextView/5244fe9c6803fa0862000000 1.首先找到AppDelegate类.不管一个project ...

  6. iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

    项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用bas ...

  7. iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四

    今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...

  8. 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一

    第一步: 在info.plist中 View controller-based status bar appearance这个属性设置为 View controller-based status ba ...

  9. iOS开发:http中的get和post请求

    什么是 HTTP ? 超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信. HTTP 的工作方式是客户端与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用 ...

随机推荐

  1. Code Blocks 使用 VC2013编译HelloWord

    首先在 Settings-Complier中把 Microsoft Visual c++ 2010 设置成默认(莫不默认也无所谓,就是改着方便而已) 然后在ToolChain excutable 中, ...

  2. Android如何使用API

    转自:http://www.cnblogs.com/vanezkw/archive/2012/07/03/2574559.html 本文针对Android开发如何使用API文档进行一些经验分享. 1. ...

  3. java监控函数执行时间

    java监控函数执行时间 http://blog.csdn.net/ycg01/article/details/1467542 java监控函数执行时间 标签: javathreadclassstri ...

  4. 配置F5 负载均衡(转)

    转自<网络运维与管理>201406-11 配置F5交换机的问题在于,与平时所学的交换机.路由器思路完全不同,拿到设备后,完全不知如何下手. 网络拓扑图如下: 两台web服务器对外提供服务, ...

  5. jstat undocumented

    jstat -J-Djstat.showUnsupported=true -name btrace.com.sun.btrace.samples.ThreadCounter.count 11674 h ...

  6. deibian不能加vpn

    http://www.cyberciti.biz/faq/deiban-ubuntu-linux-networkmanager-pptp-cisco-vpn-tab-disabled/ 经常搜goog ...

  7. HDOJ1312<DFS>

    题意: 给一张图,有墙,有路.问某人从起点开始,最多能走多少个格子. 思路: bfs;<水题> #include<iostream> #include<cstring&g ...

  8. uboot1.1.6之NOR FLASH 出现的问题解决方法

    U-BOOT移植,structure has no member named `CAMDIVN speed.c: In function `get_HCLK':speed.c:114: error: ...

  9. PAT (Advanced Level) 1071. Speech Patterns (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  10. ASCII,Unicode 和通用方式

    ASCII码 字符char,字符指针char*,字符数组char a[]; 例如:char a='A'; char* pC="beijing"; char aC[]="b ...