一、系统声音

ios应用中的提醒声音、游戏背景音乐等。可以播放的格式有CAF、AIF、WAV。

系统声音服务提供了一个API,但是没有操作声音和控制音量的功能,因此如果为多媒体或者游戏创建专门的声音,就不要使用系统声音服务。

其中支持三种类型:声音、提醒、震动。

1、首先导入AudioToolbox.framework框架。

2、系统声音服务不是通过类实现的,而是通过传统的C语言函数调用来触发播放操作。要播放音频需要使用两个函数AudioServicesCreateSystemSoundID和AudioServicePlaySystemSound。

// MARK: - 系统声音
/*----- 系统声音 ------*/
@IBAction func systemSound()
{
//建立的SystemSoundID对象
var soundID: SystemSoundID = //获取声音文件地址
let path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") //地址转换
let baseURL = NSURL(fileURLWithPath: path!) //赋值
AudioServicesCreateSystemSoundID(baseURL , &soundID) //使用AudioServicesPlaySystemSound播放
AudioServicesPlaySystemSound(soundID)
}
/*----- 系统提醒 ------*/
@IBAction func systemAlert()
{
//建立的SystemSoundID对象
var soundID: SystemSoundID = //获取声音文件地址
let path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") //地址转换
let baseURL = NSURL(fileURLWithPath: path!) //赋值
AudioServicesCreateSystemSoundID(baseURL , &soundID) //使用AudioServicesPlayAlertSound播放
AudioServicesPlayAlertSound(soundID) }
/*----- 系统震动 ------*/
@IBAction func systemVibration()
{
//建立的SystemSoundID对象
let soundID = SystemSoundID(kSystemSoundID_Vibrate) //使用AudioServicesPlaySystemSound播放
AudioServicesPlaySystemSound(soundID)
}

二、AV音频播放器

1、导入AVFoundation.framework。

2、声明一个AVAudioPlayer对象。

    @IBOutlet var timeLabel:UILabel!//播放的时间/总时间
@IBOutlet var jinDuSlider:UISlider!//进度条
var _timer:NSTimer!//定时器线程, 刷新进度条
let mp3Path = NSBundle.mainBundle().pathForResource("xiaoPingGuo", ofType: "mp3")
let fileUrl = NSURL.fileURLWithPath(mp3Path!)
do
{
audioPlayer = try AVAudioPlayer(contentsOfURL: fileUrl)
}
catch let error as NSError {
print("初始化播放器失败:\(error)")//如果失败,error 会返回错误信息
}
audioPlayer.prepareToPlay()
//播放按钮事件
@IBAction func audioPlayButton()
{
if audioPlayer.playing
{
return;//如果已在播放,跳出
} //开始播放音频文件
audioPlayer.play() //设置进图条最小是=0
jinDuSlider.minimumValue = 0.0; //设置进度条最大值等于声音的描述
jinDuSlider.maximumValue = Float(audioPlayer.duration) //启动定时器 定时更新进度条和时间label 在updateTime方法中实现
_timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "updateTime", userInfo: nil, repeats: true)
}
//定时器-
func updateTime()
{
//获取音频播放器播放的进度,单位秒
let cuTime:Float = Float(audioPlayer.currentTime) //更新进度条
jinDuSlider.value = cuTime //获取总时间
let duTime:Float = Float(audioPlayer.duration) //播放时间秒数,换算成:时、分、秒
let hour1:Int = Int(cuTime/(*))
let minute1:Int = Int(cuTime/)
let second1:Int = Int(cuTime%) //总时间秒数,换算成:时、分、秒
let hour2:Int = Int(duTime/(*))
let minute2:Int = Int(duTime/)
let second2:Int = Int(duTime%) //label显示
timeLabel.text = NSString(format: "%.2d:%.2d:%.2d / %.2d:%.2d:%.2d",hour1,minute1,second1,hour2,minute2,second2) as String
}
//播放代理 AVAudioPlayerDelegate
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool)
{
//成功播放完毕结束
} func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer, error: NSError?)
{
//音频播放器的解码错误
} //@availability(iOS, introduced=2.2, deprecated=8.0)
func audioPlayerBeginInterruption(player: AVAudioPlayer)
{
//音频播放器开始中断
} //@availability(iOS, introduced=6.0, deprecated=8.0)
func audioPlayerEndInterruption(player: AVAudioPlayer, withOptions flags: Int)
{
//音频播放结束中断
}
//暂停
@IBAction func audioPauseButton(sender:UIButton)
{
let title = sender.titleForState(UIControlState.Normal)
if title == "Pause" && audioPlayer.playing
{
audioPlayer.pause()
sender.setTitle("Continue", forState: UIControlState.Normal)
}
else if title == "Continue"
{
sender.setTitle("Pause", forState: UIControlState.Normal)
audioPlayer.play()
}
} //停止
@IBAction func audioStopButton(sender:UIButton)
{
if(audioPlayer.playing)
{
audioPlayer.stop()
audioPlayer.currentTime=;
timeLabel.text = "";
}
} //调 进度
@IBAction func jinDuChange(sender:UISlider)
{
//获取jinDuSlider的值来设置音频播放器进度
print("当前进度:\(jinDuSlider.value)")
audioPlayer.currentTime = NSTimeInterval(jinDuSlider.value) //播放器播放
audioPlayer.play()
} //控制声音
@IBAction func audioSoundChange(sender:UISlider)
{
//获取UISlider对象的值,并设置audioPlayer.volume
audioPlayer.volume = sender.value aLabel.text = "\(sender.value)"
}

音频播放AVFoundation框架的更多相关文章

  1. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  2. IOS开发之简单音频播放器

    今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...

  3. ios原声音频播放AVAudioSession 总结

    //音频播放/*英译:record:录音 */ 1 导入头文件#import<AVFoundation/AVFoundation.h>//AVAudioSession是一个单例模式.在IO ...

  4. iOS开发----音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  5. iOS开发系列--音频播放(音效和音乐)播放本地的

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为 点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音 ...

  6. 音频播放、录音、视频播放、拍照、视频录制-b

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  7. ios开发——实用技术篇&网络音频播放

    网络音频播放 在日常的iOS开发中,我们通常会遇到媒体播放的问题,XCode中已经为我们提供了功能非常强大的AVFoundation框架和 MediaPlayer框架.其中AVFoundation框架 ...

  8. 音频播放(iOS开发)

    音频处理 一.录音 录音应用场景 语音聊天 即时通讯软件中,都包含语音发送功能 语音备忘录 录一段音频,来记录某件事情 录音功能实现 导入AVFoundation框架 作用:一些多媒体的处理,基本上都 ...

  9. AVAudioPlayer音频播放器-备用

    IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. 此文主要讲AVAudioPlayer,其他两个请见相关文章. AVAudioPlayer在AVFoundation框架下 ...

随机推荐

  1. Spring cloud项目实践(一)

    链接地址:http://sail-y.github.io/2016/03/21/Spring-cloud%E9%A1%B9%E7%9B%AE%E5%AE%9E%E8%B7%B5/ 什么是Spring ...

  2. hadoop运行流程分析源代码级

    前言: 最近一直在分析hadoop的运行流程,我们查阅了大量的资料,虽然从感性上对这个流程有了一个认识但是我总是感觉对mapreduce的运行还是没有一个全面的认识,所以决定从源代码级别对mapred ...

  3. BZOJ_4326_[NOIP2015]_运输计划_(二分+LCA_树链剖分/Tarjan+差分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4326 给出一棵带有边权的树,以及一系列任务,任务是从树上的u点走到v点,代价为u到v路径上的权 ...

  4. 【转】iTunes下载速度太慢?两招帮你提速!-- 不错

    原文网址:http://bbs.app111.com/thread-275-1-1.html 不用说,很多朋友都发现在大陆,下载 iTunes 上的东西实在是慢如蜗牛,小一点的软件还能坚持一下,大一点 ...

  5. 【转】NI语法 JNI参考 JNI函数大全

    原文网址:http://blog.sina.com.cn/s/blog_5de73d0b0101chk1.html 一.对照表 Java类型    本地类型         描述boolean     ...

  6. BrnShop开源网上商城第一讲:架构设计

    首先在此感谢大家对BrnShop项目的支持和鼓励!我们在发布BrnShop以前曾推测项目会受到不少园友的支持,但没想到园友们的支持大大超过我们的预测.4天6000次浏览,140个推荐,170个评论,8 ...

  7. 初谈SQL Server逻辑读、物理读、预读【转】

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  8. 【转】CUDA5/CentOS6.4

    转载自http://wenzhang.baidu.com/article/view?key=076f36658dd0828c-1393896446 This article explains how ...

  9. 【转】Django+Mysql安装配置详解(Linux)

    参考:http://dmyz.org/archives/110 报错TemplateDoesNotExist at 解决: 新建mysite/articles/article.html文件: 文件内容 ...

  10. 【转+心得】WinDbg+VM9双机调试无法连接解决方案

    参考:http://www.52pojie.cn/forum.php?mod=viewthread&tid=203339 启动顺序为:先启动vmware里面的xp后(登录到桌面),再启动win ...