AVAudioPlayer播放音频文件时没声音

简介: AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。 func playSound() { let notifyUrl = NSBundle.

AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。

func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error) 
            if error != nil {
                println(error)
            } else {
                avAudioPlayer.volume = 1.0
                avAudioPlayer.prepareToPlay()
                avAudioPlayer.play()
            }
        }
    }

 解决方法是把avAudioPlayer定义为全局变量的时候就有声音了,是不是很神奇。应该是被内存回收了所以没有声音,记得要定义为全局变量

var avAudioPlayer:AVAudioPlayer?
func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            //var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            if error != nil {
                println(error)
            } else {
                avAudioPlayer?.volume = 1.0
                avAudioPlayer?.prepareToPlay()
                avAudioPlayer?.play()
            }
        }
    }

 

目录
相关文章
|
iOS开发
iOS 富文本添加点击事件
iOS 富文本添加点击事件
1854 0
iOS 富文本添加点击事件
|
移动开发 小程序 API
微信外部浏览器或短信链接唤起微信小程序的解决方案
微信外部浏览器或短信链接唤起微信小程序的解决方案
2452 1
|
Java 数据库连接 mybatis
mybatismybatisPlus Update操作返回值不是影响行数
mybatismybatisPlus Update操作返回值不是影响行数
1199 0
|
7月前
|
容器
鸿蒙开发:填充剩余空间
关于占满剩余的空间,如果权重能够解决,还是以权重为主,因为Blank的使用必须父组件的宽高有值,否则就会不生效,当然了,在实际的开发中,还是具体问题具体分析,使用恰当的方式解决为主。
133 1
鸿蒙开发:填充剩余空间
|
前端开发 API Swift
探索iOS应用开发的新趋势:SwiftUI和Combine框架
【8月更文挑战第16天】本文深入探讨了iOS平台上的两个最新技术:SwiftUI和Combine。SwiftUI旨在简化用户界面的构建,而Combine则优化了事件处理机制。我们将分析这两个框架如何共同推动iOS开发的未来,以及它们给开发者带来的便利和挑战。
295 6
|
传感器 监控 数据中心
|
11月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
220 5
使用SoundPool播放音频文件,使用简单
使用SoundPool播放音频文件,使用简单
213 0
|
Java 编译器 Scala
IDEA上的Scala环境搭建
本文指导如何搭建Scala开发环境。首先,安装Scala编译器`scala-2.12.10.msi`,通过DOS窗口验证安装成功。然后,在IDEA中,安装Scala插件,创建Maven工程,删除默认包,新建Scala源码包,并在其中创建Scala Object类。接着,配置项目结构,添加Scala SDK,确保Maven、Language Level和Compiler的bytecode版本设置正确。最后,编写并测试基本的Scala代码。
778 2
IDEA上的Scala环境搭建