【问题标题】:Why doesn't AudioKit's AKMicrophoneTracker work on a physical iOS device?为什么 AudioKit 的 AKMicrophoneTracker 不能在物理 iOS 设备上工作?
【发布时间】:2017-11-20 22:05:56
【问题描述】:

当我在物理设备上使用 AudioKit 的AKMicrophoneTracker 时,频率和幅度总是0。但在游乐场和 iOS 模拟器中,它可以完美运行。

这是一个粗略的例子:

class AppDelegate: UIResponder, UIApplicationDelegate {

    let tracker = AKMicrophoneTracker()

    func application(_ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // start the tracker and show frequency information
        tracker.start()
        Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true, block: { _ in
            print(tracker.frequency)
            print(tracker.amplitude)
        })
    }

}

我已重置我的物理设备的隐私权限,并且 iOS 正确提示我允许麦克风访问。即使我允许使用麦克风,它仍然无法正常工作。

如何让 AKMicrophoneTracker 实际读取这些值?

我正在使用 AudioKit 4.0.3。使用时按预期工作:

  • 我 Mac 上的 AudioKit 游乐场
  • 运行 iOS 11.1 的模拟器 iPhone 7 Plus

使用时不起作用:

  • 运行 iOS 11.1.1 的物理 iPhone 7 Plus(也适用于 iOS 11.1)

我最初将其发布为 a bug on AudioKit's GitHub issue tracker。然而,Aure(项目维护者)鼓励我改为在这里发帖。

【问题讨论】:

  • 为什么您要尝试在 0.1 秒内进行跟踪。我认为您应该至少使用 1 或 2 秒希望对您有所帮助
  • 您是否签入了其他装有 iOS 11 或 10 的设备
  • @Tubelight 样本之间的较长时间可能会产生更好的结果,但即使是 0.1 秒的时间也应该给我 一些 数据,即使它不准确。但我只是得到零。
  • @R.Mohan 我还没有检查物理 iOS 10 设备。可惜我没有。

标签: ios swift audiokit


【解决方案1】:

以下内容在 7+、6s 上对我有用:

在 AppDelegate 中:

import UIKit
import AudioKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
let tracker = AKMicrophoneTracker()



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    // start the tracker and show frequency information
    tracker.start()
    Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { _ in
        print(self.tracker.frequency)
        print(self.tracker.amplitude)
    })


    return true
}
...

info.plist

...
<key>NSMicrophoneUsageDescription</key>
<string>WE need your microfone to contact the aliens</string>
...

【讨论】:

  • 你完全正确——原来我的问题是由我不小心没有禁用的其他代码引起的。我已对您的答案投了赞成票并奖励了您,但我在下面将我的答案标记为正确,因为我认为它包含与问题相关的实际信息。
【解决方案2】:

Ercell0's answer 是正确的——他的代码运行良好。我的具体问题似乎是由我认为在测试期间禁用的其他一些 AudioKit 功能引起的。相当于运行:

AudioKit.output = AKMixer()
AudioKit.start()

AKMicrophoneTracker 初始化之后。这导致了我遇到的AKMicrophoneTracker 问题。

看起来这可能是 AudioKit 中的一个错误。我在 Github 上打开了issue #1142

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多