ios开发——实用技术篇Swift篇&播放MP3
播放MP3
// MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime:Float = Float(audioPlayer.currentTime) //更新进度条 jinDuSlider.value = cuTime //获取总时间 var duTime:Float = Float(audioPlayer.duration) //播放时间秒数,换算成:时、分、秒 var hour1:Int = Int(cuTime/(*)) var minute1:Int = Int(cuTime/) var second1:Int = Int(cuTime%) //总时间秒数,换算成:时、分、秒 var hour2:Int = Int(duTime/(*)) var minute2:Int = Int(duTime/) var second2:Int = Int(duTime%) //label显示 // timeLabel.text = NSString(format: "%.2d:%.2d:%.2d / %.2d:%.2d:%.2d",hour1,minute1,second1,hour2,minute2,second2) //2015年5月2后修改 timeLabel.text = NSString(format: "%.2d:%.2d:%.2d / %.2d:%.2d:%.2d",hour1,minute1,second1,hour2,minute2,second2) as String } //播放按钮事件 @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) } //暂停 @IBAction func audioPauseButton(sender:UIButton) { var 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的值来设置音频播放器进度 audioPlayer.currentTime = NSTimeInterval(jinDuSlider.value) //播放器播放 audioPlayer.play() } //控制声音 @IBAction func audioSoundChange(sender:UISlider) { //获取UISlider对象的值,并设置audioPlayer.volume audioPlayer.volume = sender.value aLabel.text = "\(sender.value)" } //播放代理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) { //音频播放结束中断 } /*-----mp3 end------*/
ios开发——实用技术篇Swift篇&播放MP3的更多相关文章
- ios开发——实用技术篇Swift篇&视频
视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...
- ios开发——实用技术篇Swift篇&录音
录音 // MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? / ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- ios开发——实用技术篇Swift篇&拍照
拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...
- ios开发——实用技术篇Swift篇&照片选择
照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...
- ios开发——实用技术篇Swift篇&加速计和陀螺仪
加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...
- ios开发——实用技术篇Swift篇&多点触摸与手势识别
多点触摸与手势识别 //点击事件 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") self.vi ...
- ios开发——实用技术篇OC篇&iOS的主要框架
iOS的主要框架 阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...
随机推荐
- 【LeetCode】189 - Rotate Array
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- 为什么使用开源软件(Open Source Software)
国产软件的流氓化看起来已经蔚然成风,在安装到电脑之后,它们就不想再离开,甚至它们还想将同一家族的产品通过后台下载全部推送给你.搜狗输入法最近就被发现悄悄推送了搜狗浏览器. 一位用户用 debugvie ...
- 一起刷LeetCode5-Longest Palindromic Substring
发现自己原来掌握的一下算法,都忘掉了,啊啊啊 ----------------------------------------------------------------------------- ...
- Windows平台分布式架构-负载均衡(高并发)
缘由 单纯想在winodows平台部署分布式程序,微软在IIS扩展的介绍中有涉及到Application Request Router + Web Farm + Url Rewriter可以实现分布式 ...
- Hadoop2.2.0 自动切换HA环境搭建
自动切换的HA,比手动切换HA集群多了一个zookeeper集群 机器分配: zookeeper:hadoop4,hadoop5,hadoop6 namenode:hadoop4,hadoop5 da ...
- POJ2406----Power Strings解题报告
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 43514 Accepted: 18153 D ...
- URAL-1981 Parallel and Perpendicular 水题
题目链接:http://www.cnblogs.com/zhsl/p/3395868.html 水题,注意细节. //STATUS:C++_AC_31MS_333KB #include <fun ...
- 了解shell
1. shell 脚本文件第一行: #!/bin/sh 或 #!/bin/bash "#!" 又称为纪数,在执行bash脚本的时候,内核会根据它来确定该用哪个程序来解释脚本 ...
- AutoCAD.NET二次开发错误集锦
1.CAD崩溃,错误“unhandled access violation reading”=“未将对象引用设置到对象的实例”. 2. 建模操作错误:指向给定边的指针为空. 建模操作错误:访问冲突. ...
- installshield Basic 工程每次安装完提示重启电脑
将Sequence中的ScheduleReboot Action的Condition清空即可.