読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 735 - CoreMotion

数日前に「CoreMotion」を勉強するぞ!なんて宣言していましたが、いまだにちゃんと取り組めていません。

iOSの物理センサーを読み取るCoreMotionを使ってiOSバイスの状態を読み取ってみたいんです。

まずしなければならないのがCoreMotionライブラリの読み込みです。これがないと使えません。

import CoreMotion

そしてCoreMotionを管理するマネージャーのインスタンスを生成

let manager = CMMotionManager()

ここまでは決まり事のようです。このmanagerインスタンスを使ってiOSバイスのセンサーを利用できるかどうか確認が必要です。

「manager.isAccelerometerAvailable」を調べる必要があります。センサーが無ければ「false」です。シュミレーターでアプリを動かしてもセンサーは動きません。ということで実機で動かす必要があります。

私は下記のようにカスタムメソッドを用意しました。

func activeMotion() {
    if manager.isAccelerometerAvailable {
    
    // ここで具体的なコードを加えます。
    
    } else {
        // 「xLable」はstoryboardに設置したラベルでIBOutletです。
        self.xLabel.text = "No MotionManager"
    }
}

「Accelerometer」が存在することが分かれば、「manager.accelerometerUpdateInterval = 1 / 10」で検出間隔を設定します。

この検出間隔はヘルツ(Hz)を使っています。こういう内容も昔勉強しましたが忘れてしまっています。基本的な内容なのに覚えていないんですよね。

ヘルツ(Hz)は周波数です。1秒間の振動サイクル数ですね。10Hzと言えば、1秒間に10回振動するので、1回の振動する時間(周期T)は次の式ですね。

T = 1 / Hz

ということで、検出間隔を「0.1秒」にしているというわけです。

今日はこれだけ。