iOS8 用AVAudioPlayer播放音乐(Swift)
AVAudioPlayer
类提供了播放音频文件的功能,在本次教程中,我们将对一个音乐文件进行播放暂停和停止操作,此外还会显示标题和播放时间。本次教程使用iOS8和Xcod6.3.1
打开Xcode创建一个新的 Single View Application
,使用IOS8SwiftPlayMusicAVAudioPlayerTutorial
作为 product name
,并填写组织名称和标识符。选择 Swift
语言并确保设备选择iPhone。
在这个工程中我们需要开始暂停和停止按钮的图片和一个mp3文件。你可以在这里下载 。解压文件并把它们添加到工程,确保是拷贝他们到目标文件夹。
转到故事板拖两个标签和两个按钮到主视图。依次选择他们并在 Size Inspector
填入下列值。
- 上面的标签 -> X: 16, Y: 60, Width: 568, Height:17
- 中间的标签 -> X: 250, Y: 120, Width: 100, Height: 36
- 左边的按钮 -> X: 16, Y: 220, Width: 102, Height: 102
- 右边的按钮 -> X:484, Y: 220, Width: 102, Height: 102
再依次选择他们在 Attributes Inspector
添加以下值。
- 上面的标签: Center Alignment, Font – System 14.0
- 中间的标签: Center Alignment. Font – System Bold 30.0
- 左边的按钮: Type -Custom, Image – playpause.png
- 右边的按钮: Type – Custom, Image – stop.p
按下 Resolve Auto Layout
按钮在故事板的右下角,选择 Reset to Suggested Constraints
现在故事板看起来是这样的
选择助理窗口并确保 ViewController.swift
可见。
按住 Ctrl
拖动顶部的标签创建下列的插口。
按住 Ctrl
拖动中间的标签创建下列的插口。
按住 Ctrl
拖动播放暂停图片创建下列动作。
按住 Ctrl
拖动播放停止图片创建下列动作。
在 ViewController.swift
文件中导入 AVFoundation
框架。
import AVFoundation
添加下列属性在 ViewController
类中
var audioPlayer = AVAudioPlayer()
var isPlaying = false
var timer:NSTimer!
AVAudioPlayer
类可以让你播放任何iOS支持的音频格式。使用 isPlaying
布尔值来表示当前是否正在播放音乐。 NSTimer
属性用来显示当前播放音乐的时间。
修改 viewDidLoad
方法
override func viewDidLoad() {
super.viewDidLoad() trackTitle.text = "Future Islands - Tin Man"
var path = NSBundle.mainBundle().URLForResource("Future Islands - Tin Man", withExtension: "mp3")
var error:NSError? audioPlayer = AVAudioPlayer(contentsOfURL: path!, error: &error)
}
将标题赋值给标题的标签,然后用音乐文件初始化 AVAudioplayer
,接着实现playOrPauseMusic
方法。
@IBAction func playOrPauseMusic(sender: AnyObject) {
if isPlaying {
audioPlayer.pause()
isPlaying = false
} else {
audioPlayer.play()
isPlaying = true timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "updateTime", userInfo: nil, repeats: true)
}
}
首先我们判断是否正在播放,如果是,那么暂停音乐并改变 isPlaying
的值,如果没有播放,我们播放它并改变 isPlaying
的值。然后创建一个 NSTimer
对象用来每秒调用 updateTime
方法,我们来实现它。
func updateTime() {
var currentTime = Int(audioPlayer.currentTime)
var minutes = currentTime/60
var seconds = currentTime - minutes * 60 playedTime.text = NSString(format: "%02d:%02d", minutes,seconds) as String
}
播放器的 currentTime
属性将被分割成分和秒两部分用来显示播放的时间。最后实现 stopSound
方法。
@IBAction func stopMusic(sender: AnyObject) {
audioPlayer.stop()
audioPlayer.currentTime = 0
isPlaying = false
}
播放器调用停止方法并重置当前播放时间。当下次按下播放时,将会从头开始播放。 isPlaying
属性将被赋值为false,构建并运行程序,按下播放/暂停按钮和停止按钮来控制音乐。
你可以下载 IOS8SwiftPlayMusicAVAudioPlayerTutorial
的源代码在GitHub 的仓库上。
iOS8 用AVAudioPlayer播放音乐(Swift)的更多相关文章
- iOS-----使用AVAudioPlayer播放音乐
使用AVAudioPlayer播放音乐 AVAudioPlayer是一个属于AVFoundation.framework的类.它作用类似于一个功能强大的播放器.AVAudioPlayer支持广泛的音频 ...
- iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频
iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...
- AVAudioPlayer播放音乐
1:首先创建一个新的项目,继承自UIViewController 2:导入框架AVFoundation.framework 右键工程名,在Build Phases的Link Binary With L ...
- iOS -- AVAudioPlayer播放音乐
一. AVAudioPlayer: 声明音乐控件AVAudioPlayer,必须声明为全局属性变量,否则可能不会播放,AVAudioPlayer只能播 ...
- ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件
首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...
- iOS开发系列--扩展--播放音乐库中的音乐
众所周知音乐是iOS的重要组成播放,无论是iPod.iTouch.iPhone还是iPad都可以在iTunes购买音乐或添加本地音乐到音乐 库中同步到你的iOS设备.在MediaPlayer.fram ...
- iPhone播放音乐
来源:http://blog.csdn.net/htttw/article/details/7842295 iPhone播放音乐 今天我们简要介绍如何在iPhone中播放音乐: 强烈建议你参考官方文档 ...
- IOS播放音乐和音效
1.播放音效 1.1 首先获取到音效文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:soundFileName ofType: ...
- IOS AVAUDIOPLAYER 播放器使用
1. 导入 AVFoundation.framework 2.导入头文件 #import <AVFoundation/AVFoundation.h> 3. player = [[AVAu ...
随机推荐
- Cxf -Wsdl2java详细参数附录
wsdl2java用法: wsdl2java -p com -d src -all aa.wsdl -p 指定其wsdl的命名空间,也就是要生成代码的包名: -d 指定要产生代码所在目录 -cl ...
- C语言的本质(21)——预处理之三:其它预处理特性及总结
C标准规定了几个特殊的宏,在不同的地方使用可以自动展开成不同的值,预编译程序对于在源程序中出现的这些串将用合适的值进行替换.这些宏有下面这些: __FILE__ 展开为当前源文件的文件名,是一个字符串 ...
- 充分利用CPU高速缓存,提高程序效率(原理篇)
提高程序效率应该充分利用CPU的高速缓存.要想编写出对CPU缓存友好的程序就得先明白CPU高速缓存的运行机制. i5-2400S: 1.有三级缓存分别为 32k(数据.指令缓存分开,分为32k),25 ...
- asp.net web api的自托管模式HttpSelfHostServer可以以控制台程序或windows服务程序为宿主,不单单依赖于IIS web服务器
Self-Hosting ASP.NET Web API http://theshravan.net/self-hosting-asp-net-web-api/ http://www.piotrwal ...
- 【概率论】【POJ 3682】【King Arthur's Birthday Celebration】
题意:进行翻硬币实验,若k次向上则结束,进行第n次实验需花费2*n-1的费用,询问期望结束次数及期望结束费用 设F[i]为第i次结束时的概率 F[i]= c(i-1,k-1)*p^k*(1-p)^( ...
- 【 枚举 Enum 】循环 名称与值
foreach (WeekDay c in (WeekDay [])Enum.GetValues(typeof(WeekDay ))) {Console.Write(String.Format(& ...
- Lucene的多线程访问原则和同步,锁机制
本文介绍lucene多线程环境下的使用原则和commit.lock与write.lock实现的锁机制. 设计之初就是服务于多线程环境,大多数情况下索引会被不至一个线程访问.索引时一个关键资源.在对这样 ...
- JavaScript input type=file 获取文件大小及类型限制
<input name="txtName" type="file" id="pic" onchange="loadImage ...
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- 贝叶斯网络基础(Probabilistic Graphical Models)
本篇博客是Daphne Koller课程Probabilistic Graphical Models(PGM)的学习笔记. 概率图模型是一类用图形模式表达基于概率相关关系的模型的总称.概率图模型共分为 ...