AirPods Pro のモーションセンサの値を取得する.【iOS 14】
2020/09/23
はじめに
iOS14が急遽発表され,開発者の皆さんは大慌てだったのでは無いでしょうか?
iOS14では,たくさんの変更点がありましたが,一番面白いと感じたのは,
AirPods Proで使用できる「Spatial audio」と呼ばれる空間オーディオ再現技術の追加です.
皆さんもう試しましたか?つけてるのにつけてないような感じで音が聞こえて非常に映画を見たりするのが楽しくなりますね.
そんな新たな技術を支えているのが,AirPods Proに内蔵されている加速度センサーを利用しているのです.
そして,その加速度センサーの値は簡単に取得できるんです.
テンション上がりますね.
環境
XCode : 12.0
iOS : 14
実装方法
実装方法は簡単で,iPhoneの加速度センサーを使う時と同じく
Info.plistにNSMotionUsageDescriptionを追加し,CoreMotionをインポートするだけです.
あとは,使用したいViewControllerなどで以下のように記述するだけです.
import UIKit
import CoreMotion
class ViewController: UIViewController, CMHeadphoneMotionManagerDelegate {
let APP = CMHeadphoneMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
APP.delegate = self
guard APP.isDeviceMotionAvailable else { return }
APP.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {[weak self] motion, error in
guard let motion = motion, error == nil else { return }
self?.printData(motion)
})
}
func printData(_ data: CMDeviceMotion) {
print(data.attitude)
print(data.gravity)
print(data.rotationRate)
print(data.userAcceleration)
print(data.magneticField)
print(data.heading)
}
}
おわりに
いかがだったでしょうか,意外にもこんなに簡単に取得できるなんてすごいなぁと思います.
やっぱりGAFAのエンジニアは桁違いにすごいと感じました.
サンプルプロジェクトも作ってみました.
よければご覧ください.
ついでにスターもいただけると,,,
tukuyo/AirPodsPro-Motion-Sampler
また,間違いなどありましたら教えていただけますと光栄です.
参考文献
1 Apple Developer Documentation
Apple Developer Documentation