首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioSession Swift

AVAudioSession Swift
EN

Stack Overflow用户
提问于 2014-06-20 09:47:35
回答 3查看 15.1K关注 0票数 11

我正在尝试写一个快速的iOS应用程序,将记录用户的声音。我用swift编写了以下代码,但是它无法从用户那里请求麦克风权限。它打印授权,但它从来没有录制音频,并且在设置窗格中的隐私下,它没有列出应用程序。如何在swift中请求录制权限?

代码语言:javascript
复制
var session: AVAudioSession = AVAudioSession.sharedInstance()
session.requestRecordPermission({(granted: Bool)-> Void in
     if granted {
          println(" granted")
          session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)
          session.setActive(true, error: nil)
          self.recorder.record()
     }else{
          println("not granted")
     }
})
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-22 01:53:01

从iOS 7开始,您需要检查它是否响应选择器requestRecordPermission:

我已经使用iPhone 5SiOS 8测试版测试了这段代码,它工作得很好。一旦您授予权限,系统将不会再次请求它。

值得一提的是,在使用模拟器时,它没有请求许可。

这是我尝试过的代码,并且正在运行:

代码语言:javascript
复制
if (session.respondsToSelector("requestRecordPermission:")) {
    AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in
        if granted {
            println("granted")
            session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)
            session.setActive(true, error: nil)
            self.recorder ()
        } else{
            println("not granted")
        }
     })

}
票数 14
EN

Stack Overflow用户

发布于 2017-05-15 09:25:02

对于Swift 3

代码语言:javascript
复制
let session = AVAudioSession.sharedInstance()
    if (session.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) {
        AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in
            if granted {
                Linphone.manager.callUser(username: username)

                print("granted")

                do {
                    try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
                    try session.setActive(true)
                }
                catch {

                    print("Couldn't set Audio session category")
                }
            } else{
                print("not granted")
            }
        })
    }
票数 4
EN

Stack Overflow用户

发布于 2018-04-12 14:58:38

Swift 5

代码语言:javascript
复制
var session: AVAudioSession = AVAudioSession.sharedInstance()
@IBAction func btnmike(_ sender: Any) {
   // let session = AVAudioSession.sharedInstance()
    if (session.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) {
        AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in
            if granted {
                print("granted")

                do {
                    try self.session.setCategory(AVAudioSessionCategoryPlayAndRecord)
                    try self.session.setActive(true)
                }
                catch {

                    print("Couldn't set Audio session category")
                }
            } else{
                print("not granted")
            }
        })
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24318791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档