Skip to content

Instantly share code, notes, and snippets.

@bassaer
Last active April 5, 2016 09:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bassaer/eaa43e31eb10f565f696feb07eeb0fb6 to your computer and use it in GitHub Desktop.
Save bassaer/eaa43e31eb10f565f696feb07eeb0fb6 to your computer and use it in GitHub Desktop.
Swiftで磁気センサの値を取得する方法 ref: http://qiita.com/yesiwas/items/5f70bf56f572e39c4cb7
//CoreMotionマネージャを作成
let cmManager = CMMotionManager()
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;
...
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)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment