- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法在 iOS Playground 上使用录音机?运行时,它会询问我是否允许使用我的麦克风,并且录音机实例似乎可以正常工作,但是,我无法使用 record() 函数。我当前的环境是 iOS 12.1.4 和 Swift 4.2。
import UIKit
import PlaygroundSupport
import AVFoundation
class VolumnMeterViewController : UIViewController, AVAudioRecorderDelegate {
let temporaryDirectoryToKeepRecords = FileManager.default.temporaryDirectory
var recordButton = UIButton()
let backgroundView = UIView()
var recordNumber = 1
// var recordingSession: AVAudioSession!
var recorder: AVAudioRecorder!
override func loadView() {
backgroundView.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
recordButton.setTitle("Record", for: [])
recordButton.setTitleColor(#colorLiteral(red: 0.9254902005, green: 0.2352941185, blue: 0.1019607857, alpha: 1), for: [])
recordButton.addTarget(self, action: #selector(recordButtonTapped), for: .touchUpInside)
recordButton.translatesAutoresizingMaskIntoConstraints = false
backgroundView.addSubview(recordButton)
temporaryDirectoryToKeepRecords
self.view = backgroundView
NSLayoutConstraint.activate([
recordButton.widthAnchor.constraint(equalToConstant: 200),
recordButton.heightAnchor.constraint(equalToConstant: 60),
recordButton.centerXAnchor.constraint(equalTo: backgroundView.centerXAnchor),
recordButton.centerYAnchor.constraint(equalTo: backgroundView.centerYAnchor)
])
}
@objc func recordButtonTapped() {
if recorder == nil {
recordNumber += 1
let recordFileName = temporaryDirectoryToKeepRecords.appendingPathComponent("record\(recordNumber).m4a")
recordButton.setTitle("Stop", for: [])
let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), AVSampleRateKey: 44100, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
do {
let recorder = try AVAudioRecorder(url: recordFileName, settings: settings)
// ❗️❗️❗️ Here's the problem. It always return false, assuming to be true.
recorder.record()
} catch {
print(error)
}
} else {
recordButton.setTitle("Record", for: [])
recorder.stop()
recorder = nil
}
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = VolumnMeterViewController()
或者有没有办法不通过录音来跟踪麦克风音量,而只是检测现场,而不存储录音文件?非常感谢!
最佳答案
终于有了 iOS Playground 的工作代码,非常感谢 AtulParmar!
import UIKit
import PlaygroundSupport
import AVFoundation
class VolumnMeterViewController : UIViewController, AVAudioRecorderDelegate {
var recordingSession: AVAudioSession!
let temporaryDirectoryToKeepRecords = FileManager.default.temporaryDirectory
var recordButton = UIButton()
let backgroundView = UIView()
var playButton = UIButton()
var recordNumber = 1
var player: AVAudioPlayer!
var recorder: AVAudioRecorder!
override func loadView() {
backgroundView.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
recordButton.setTitle("Start Recording", for: [])
recordButton.setTitleColor(#colorLiteral(red: 0.9254902005, green: 0.2352941185, blue: 0.1019607857, alpha: 1), for: [])
recordButton.addTarget(self, action: #selector(recordButtonTapped), for: .touchUpInside)
recordButton.translatesAutoresizingMaskIntoConstraints = false
backgroundView.addSubview(recordButton)
playButton.setTitle("Play Record", for: [])
playButton.setTitleColor(#colorLiteral(red: 0.2196078449, green: 0.007843137719, blue: 0.8549019694, alpha: 1), for: [])
playButton.addTarget(self, action: #selector(playButtonTapped), for: .touchUpInside)
playButton.translatesAutoresizingMaskIntoConstraints = false
backgroundView.addSubview(playButton)
self.view = backgroundView
NSLayoutConstraint.activate([
recordButton.widthAnchor.constraint(equalToConstant: 200),
recordButton.heightAnchor.constraint(equalToConstant: 60),
recordButton.centerXAnchor.constraint(equalTo: backgroundView.centerXAnchor),
recordButton.centerYAnchor.constraint(equalTo: backgroundView.centerYAnchor, constant: -50),
playButton.widthAnchor.constraint(equalToConstant: 200),
playButton.heightAnchor.constraint(equalToConstant: 60),
playButton.centerXAnchor.constraint(equalTo: backgroundView.centerXAnchor),
playButton.centerYAnchor.constraint(equalTo: backgroundView.centerYAnchor, constant: 50)
])
}
@objc func recordButtonTapped() {
if recorder == nil {
recordNumber += 1
let recordFileName = temporaryDirectoryToKeepRecords.appendingPathComponent("record\(recordNumber).m4a")
recordButton.setTitle("Stop Rocording", for: [])
let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), AVSampleRateKey: 44100, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
recordingSession = AVAudioSession.sharedInstance()
do {
try recordingSession.setCategory(.playAndRecord, mode: .default)
try recordingSession.setActive(true, options: [])
recorder = try AVAudioRecorder(url: recordFileName, settings: settings)
recorder.record()
} catch {
print(error)
}
} else {
recordButton.setTitle("Start Recording", for: [])
recorder.stop()
recorder = nil
}
}
@objc func playButtonTapped() {
if player == nil {
let recordFileName = temporaryDirectoryToKeepRecords.appendingPathComponent("record\(recordNumber).m4a")
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
player = try AVAudioPlayer(contentsOf: recordFileName)
player.play()
playButton.setTitle("Stop Playing", for: [])
} catch let error {
print(error)
}
} else {
player = nil
playButton.setTitle("Play Record", for: [])
}
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = VolumnMeterViewController()
关于ios - 在 iOS Playground 上使用 AVFoundation 的 Recorder,但 recorder.record() 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644302/
最初我读到你不能在操场上尝试触摸或手势。然后我发现 touchesMoved 或点击手势会使用react。但是,我现在正在测试 UIPinchGestureRecognizer。没有可以让您在操场上使
我最近尝试打开/编辑 .playgroundbook project在 Xcode 版本 8.3.2 (8E2002) 中,有点惊讶它没有作为“liveView Playground”打开(我意识到它
我想在 Xcode 6.0.1 中使用 playground。所以文件 -> 新建 -> Playground 我立即得到错误。 Playground 执行终止,因为 Playground 进程意外退
在 Xcode 7 playgrounds 中运行最简单的默认代码...得到以下错误 Playground execution failed: Execution was interrupted, r
我已经开始了 Swift 编程入门类(class),到目前为止进展顺利,但我无法使用 Mac 来运行 Xcode。我确实有 iPad 版 Swift Playgrounds,它允许我完成作业并测试它们
GuidedTour Playground包含交互式和非交互式元素以及格式良好的文本。文本似乎已被锁定,无法编辑。我发现它是一个很好的学习工具。是否可以编辑其内容或创建类似的内容? 最佳答案 Play
我在 Xcode Playground 和 Swift Playground 上运行这段代码: import SwiftUI import PlaygroundSupport struct Conte
我正在 Xcode Playground 上玩弄 REST API,我需要用 SHA1 散列一些东西。我找到的所有解决方案都依赖于 Common Crypto,而这似乎不能直接在 Swift play
我知道如何在常规应用程序项目中使用 Xcode 11 中的 SwiftUI,但我想知道即使我不能使用实时编辑器,是否也可以在 playgrounds 中使用它? 最佳答案 当然,这很简单: impor
我知道如何在常规应用程序项目中使用 Xcode 11 中的 SwiftUI,但我想知道即使我不能使用实时编辑器,是否也可以在 playgrounds 中使用它? 最佳答案 当然,这很简单: impor
新创建的 Xcode 10 playground 提供了一个播放按钮来逐步执行 playground。 如果我打开在 iPad 或以前版本的 Xcode 中创建的 Playground ,播放按钮会丢
我注意到 Xcode 10 中的 Playgrounds 不再允许使用已声明但未初始化的变量。例如: 虽然此代码可以在 Xcode 9 playground 中运行,但在 Xcode 10 playg
我已经更新到 Xcode 6,最新的出现在 AppStore 上。我正在运行 OS X Yosemite Beta 3,显然,我只能打开 iOS playground,列表中缺少 OS X。 我附上了
我在 xcode 中开发了一个 ios 应用程序,我想在 swift playground 中运行这个应用程序。所以我想将我的 .xcodeproj 项目转换为 .playground 格式。那么有什
我尝试使用以下代码行创建滤色器 let parameters = [kCIInputColorKey: CIColor(string: "0.5 0.7 0.3 1.0")] let colorFil
我尝试使用以下代码行创建滤色器 let parameters = [kCIInputColorKey: CIColor(string: "0.5 0.7 0.3 1.0")] let colorFil
每次我创建一个新的 playground 以测试一些代码时,Xcode 都会卡住并且不会运行代码。它只是在屏幕顶部显示“Running playground”或“Launching simulator
我在应用程序开发方面相对较新,但出于兴趣,我想在 Xcode 上的 Playground 项目上实现此应用程序: http://merowing.info/2015/11/the-beauty-of-
我正在尝试使用 GraphQL 记录我的 API。对于可读性问题,我想在多行中留下评论,但它似乎不适用于常规的 '\n' 换行符 """ Return:\n true : DB save succ
我是 Swift 世界的新手。 如何将带逗号的字符串转换为带小数的字符串? 代码使用点 (.) 就可以正常工作 问题是当我使用逗号 (,) ... 时:var Price 问题的根源是十进制法语键盘使
我是一名优秀的程序员,十分优秀!