LoginSignup
8
8

More than 5 years have passed since last update.

Swiftで磁気センサの値を取得する方法

Last updated at Posted at 2016-04-05

CoreMotionフレームワーク

内蔵センサの値を使うにはCoreMotionフレームワークを利用する。

//CoreMotionマネージャを作成
let cmManager = CMMotionManager()

センサー値を定期的に読み取る更新間隔を設定する。

cmManager.magnetometerUpdateInterval = 0.1

更新用に定期的に実行するメソッドをクロージャとして定義する。startMagnetometerUpdatesToQueue()でキューとして登録。

//キューで実行するクロージャ
let handler:CMMagnetometerHandler = {(magnetoData:CMMagnetometerData?,error:NSError?) -> Void in
    self.showMagnetoData(magnetoData,error: error)
}
//キューを登録し、スタート
cmManager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: handler)

データを読み取る

func showMagnetoData(magnetoData:CMMagnetometerData?, error:NSError?){
        if let data = magnetoData {

            var x = data.magneticField.x
            var y = data.magneticField.y;
            var z = data.magneticField.z;

            ...


全体のコード

ViewController.swift
import UIKit
import CoreMotion

class ViewController: UIViewController {

    @IBOutlet weak var xLabel: UILabel!
    @IBOutlet weak var yLabel: UILabel!
    @IBOutlet weak var zLabel: UILabel!

    let cmManager = CMMotionManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        cmManager.magnetometerUpdateInterval = 0.1


        let handler:CMMagnetometerHandler = {(magnetoData:CMMagnetometerData?,error:NSError?) -> Void in
            self.showMagnetoData(magnetoData,error: error)
        }
        cmManager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: handler)

    }

    func showMagnetoData(magnetoData:CMMagnetometerData?, error:NSError?){
        if let data = magnetoData {

            var x = data.magneticField.x
            var y = data.magneticField.y;
            var z = data.magneticField.z;

            x = round(x*100)/100
            y = round(y*100)/100
            z = round(z*100)/100

            xLabel.text = String(x)
            yLabel.text = String(y)
            zLabel.text = String(z)

        }
    }
}

実行結果

magnet_sensor.png

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8