zoukankan      html  css  js  c++  java
  • 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 的仓库上。

  • 相关阅读:
    真彩色、假彩色和伪彩色的区别
    octave——基本操作
    Octave快速入门级下载链接
    unix下的常用命令
    职业——步入工作前的一点感悟
    Python—实例中self含义
    面向对象编程
    mysql查看数据表索引信息
    解决yii框架,gii脚手架不能使用。
    php 多维数组简化(递归)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5044786.html
Copyright © 2011-2022 走看看