2017-11-20 24 views
5

Khi tôi sử dụng AKMicrophoneTracker của AudioKit trên thiết bị thực, tần số và biên độ luôn là 0. Nhưng trong sân chơi và trong trình mô phỏng iOS, nó hoạt động hoàn hảo.Tại sao AKKicrophoneTracker của AudioKit không hoạt động trên thiết bị iOS thực?

Dưới đây là một ví dụ thô:

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) 
     }) 
    } 

} 

tôi đã thiết lập lại quyền riêng tư của thiết bị vật lý của tôi, và iOS đang thúc đẩy một cách chính xác tôi để cho phép truy cập microphone. Nó vẫn không hoạt động mặc dù tôi cho phép truy cập micrô.

Tôi làm cách nào để có được AKMicrophoneTracker thực sự đọc các giá trị này?

Tôi đang sử dụng AudioKit 4.0.3. Nó hoạt động như mong đợi khi sử dụng:

  • sân chơi AudioKit trên của tôi Mac
  • một mô phỏng iPhone 7 Plus chạy iOS 11,1

nó không hoạt động khi sử dụng:

  • Một iPhone 7 Plus thực chạy iOS 11.1.1 (và cũng xảy ra trên iOS 11.1)

Tôi đã đăng bài này đầu tiên là a bug on AudioKit's GitHub issue tracker. Tuy nhiên, Aure (người duy trì dự án) khuyến khích tôi đăng bài ở đây thay thế.

+0

lý do bạn cố gắng theo dõi trên 0,1 giây. tôi nghĩ bạn nên sử dụng 1 hoặc 2 hy vọng tối thiểu thứ hai sẽ hữu ích cho bạn –

+0

bạn đã kiểm tra trên thiết bị khác có iOS 11 hoặc 10 –

+0

@Tubelight lâu hơn giữa các mẫu có thể mang lại kết quả tốt hơn, nhưng thậm chí một thời gian miễn là 0,1 giây cho tôi dữ liệu _some_, ngay cả khi dữ liệu không chính xác. Nhưng tôi chỉ nhận được số không. –

Trả lời

0

Ercell0's answer là chính xác - mã của anh ấy hoạt động hoàn hảo. Vấn đề cụ thể của tôi dường như đã được gây ra bởi một số chức năng AudioKit khác mà tôi nghĩ rằng tôi đã vô hiệu hóa trong quá trình thử nghiệm. Nó tương đương với hoạt động:

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

sau khi khởi tạo AKMicrophoneTracker. Điều này gây ra sự cố AKMicrophoneTracker tôi đã gặp phải.

Có vẻ như điều này có thể là lỗi trong AudioKit. Tôi đã mở issue #1142 trên Github.

6

Sau đây làm việc cho tôi trên 7+, 6s:

Trong 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> 
... 

enter image description here

+0

Được thăng hạng cho người ngoài hành tinh. – matt

+0

Bạn hoàn toàn chính xác - hóa ra vấn đề của tôi là do một số mã khác mà tôi vô tình không vô hiệu hóa. Tôi đã upvoted câu trả lời của bạn và trao cho bạn tiền thưởng, nhưng tôi đã đánh dấu câu trả lời của tôi dưới đây là chính xác như tôi nghĩ rằng nó có chứa các thông tin có liên quan thực tế cho vấn đề. –

Các vấn đề liên quan