一、简单说明

  音乐播放用到一个叫做AVAudioPlayer的类,这个类可以用于播放手机本地的音乐文件。

注意:

  (1)该类(AVAudioPlayer)只能用于播放本地音频。

  (2)时间比较短的(称之为音效)使用AudioServicesCreateSystemSoundID来创建,而本地时间较长(称之为音乐)使用AVAudioPlayer类。

二、代码示例

  AVAudioPlayer类依赖于AVFoundation框架,因此在头文件内导入 #import
<AVFoundation/AVFoundation.h>

提示:代码中创建的AVAudioPlayer播放器不能是一个局部变量,这样在- (void)viewDidLoad中加载一次就是消失。应该调整为全局属性。

 1 #import "LCLViewController.h"

 2 #import <AVFoundation/AVFoundation.h>   // 导入头文件
3
4 @interface LCLViewController ()  5 @property(nonatomic,strong)AVAudioPlayer *audioplayer; // 成为全局属性
6 @end
7
8 @implementation LCLViewController
9
10 - (void)viewDidLoad
11 {
12 [super viewDidLoad];
13
14 }
15
16 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
17 {
18
19 //1.音频文件的url路径
20 NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
21
22 //2.创建播放器(注意:一个AVAudioPlayer只能播放一个url)
23 self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
24
25 //3.缓冲
26 [self.audioplayer prepareToPlay];
27
28 //4.播放
29 [self.audioplayer play];
30 }
31
32 @end

播放、暂停和停止。

代码如下:

 1 #import "LCLViewController.h"
2 #import <AVFoundation/AVFoundation.h>
3
4 @interface LCLViewController ()
5 @property(nonatomic,strong)AVAudioPlayer *player;
6 - (IBAction)play;
7 - (IBAction)pause;
8 - (IBAction)stop;
9 @end
10
11 @implementation LCLViewController
12
13 #pragma mark-懒加载
14 -(AVAudioPlayer *)player
15 {
16 if (_player==Nil) {
17
18 //1.音频文件的url路径
19 NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
20
21 //2.创建播放器(注意:一个AVAudioPlayer只能播放一个url)
22 self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
23
24 //3.缓冲
25 [self.player prepareToPlay];
26 }
27 return _player;
28 }
29
30 - (void)viewDidLoad
31 {
32 [super viewDidLoad];
33 }
34
35 - (IBAction)play {
36 //开始播放/继续播放
37 [self.player play];
38 }
39
40 - (IBAction)pause {
41 //暂停
42 [self.player pause];
43 }
44
45 - (IBAction)stop {
46 //停止
47 //注意:如果点击了stop,那么一定要让播放器重新创建,否则会出现一些莫名其面的问题
48 [self.player stop];
49 self.player=Nil;
50 }
51 @end

四、播放多个文件

  

  点击,url,按住common建查看。

可以发现,这个url是只读的,因此只能通过initWithContentsOfUrl的方式进行设置,也就意味着一个播放器对象只能播放一个音频文件。

// 代码自己在iOS8.4上亲测可用,代码可以直接copy到自己的项目中用。

iOS开发——音频篇——音乐的播放的更多相关文章

  1. iOS开发拓展篇—音乐的播放

    iOS开发拓展篇—音乐的播放 一.简单说明 音乐播放用到一个叫做AVAudioPlayer的类,这个类可以用于播放手机本地的音乐文件. 注意: (1)该类(AVAudioPlayer)只能用于播放本地 ...

  2. iOS开发——音频篇——音效的播放

    一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较 ...

  3. iOS开发拓展篇—音效的播放

    iOS开发拓展篇—音效的播放 一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中 ...

  4. iOS开发拓展篇—音频处理(音乐播放器1)

    iOS开发拓展篇—音频处理(音乐播放器1) 说明:该系列文章通过实现一个简单的音乐播放器来介绍音频处理的相关知识点,需要重点注意很多细节的处理. 一.调整项目的结构,导入必要的素材 调整后的项目结构如 ...

  5. iOS开发拓展篇—音频处理(音乐播放器2)

    iOS开发拓展篇—音频处理(音乐播放器2) 说明:该文主要介绍音乐播放界面的搭建. 一.跳转 1.跳转到音乐播放界面的方法选择 (1)使用模态跳转(又分为手动的和自动的) (2)使用xib并设置跳转 ...

  6. iOS开发拓展篇—音频处理(音乐播放器3)

    iOS开发拓展篇—音频处理(音乐播放器3) 说明:这篇文章主要介绍音频工具类和播放工具类的封装. 一.控制器间数据传递 1.两个控制器之间数据的传递 第一种方法:self.parentViewCont ...

  7. iOS开发拓展篇—音频处理(音乐播放器4)

    iOS开发拓展篇—音频处理(音乐播放器4) 说明:该文主要介绍音乐播放器实现过程中的一些细节控制. 实现的效果: 一.完整的代码 YYPlayingViewController.m文件 // // Y ...

  8. iOS开发拓展篇—音频处理(音乐播放器5)

    iOS开发拓展篇—音频处理(音乐播放器5) 实现效果: 一.半透明滑块的设置 /** *拖动滑块 */ - (IBAction)panSlider:(UIPanGestureRecognizer *) ...

  9. iOS开发拓展篇—音频处理(音乐播放器6)

    iOS开发拓展篇—音频处理(音乐播放器6) 一.图片处理 说明: Aspect表示按照原来的宽高比进行缩放. Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留 ...

随机推荐

  1. SPI介绍

    此文摘自百度百科:http://baike.baidu.com/view/245026.htm SPI概述SPI:高速同步串行口.3-4线接口,收发独立.可同步进行. SPI, 是英语Serial P ...

  2. Java笔记(二十)……线程间通信

    概述 当需要多线程配合完成一项任务时,往往需要用到线程间通信,以确保任务的稳步快速运行 相关语句 wait():挂起线程,释放锁,相当于自动放弃了执行权限 notify():唤醒wait等待队列里的第 ...

  3. 【vijos1642】班长的任务

    思路:这题就是学习一下算法优化,选择最优方案,O(nm) 可以学习一下<浅谈数据的合理组织>这篇论文 详见代码 #include<cstdio> #include<cst ...

  4. SharePoint服务器将连接配置数据库的连接字符串保存在什么地方?

    经常有人问我这个问题,SharePoint服务器将连接配置数据库的连接字符串保存在什么地方?虽然其他SharePoint服务器场设置都是保存到了配置数据库里面,但连接配置数据库本身的连接字符串,肯定是 ...

  5. ERROR hdfs.DFSClient: Failed to close file解决方法

    14/04/11 17:59:44 ERROR hdfs.DFSClient: Failed to close file /wlan_out/_temporary/_attempt_local_000 ...

  6. 如何将可执行文件打包至APK并运行(转)

    原文链接:http://www.lupaworld.com/home.php?mod=space&uid=345712&do=blog&id=248921 好久没有写bolg了 ...

  7. 如何生成一副Poker

    import java.util.LinkedList;import java.util.Random;//扑克类class Poker{    String color;//花色    String ...

  8. ubuntu13.04 Thinkpad W520安装nvidia显卡驱动

    Ubuntu13.04 amd64 Thinkpad W520安装Nvidia显卡驱动 曾经在ubuntu11.10上成功安装Nvidia显卡驱动.但是自从机器(Thinkpad W520)更新到13 ...

  9. hibernate笔记加强版

    hibernate 一. hibernate介绍 hibernate事实上就是ormapping框架,此框架的作用就是简单话数据库的操作. hibernate就是将用户提交的代码.參照持久化类配置文件 ...

  10. android107 指针入门

    #include <stdio.h> #include <stdlib.h> //指针就是内存地址 //32为操作系统最大是4G内存,32为系统则是2的32次方, //所以只能 ...