回答編集履歴
1
コード追加
answer
CHANGED
@@ -42,4 +42,88 @@
|
|
42
42
|
}
|
43
43
|
}
|
44
44
|
|
45
|
+
```
|
46
|
+
|
47
|
+
あまりにもアレだと思うので、2秒ごとに配列に加速度データ数値を追加して、ボタンを押したらCSVに変換してoutputするやつを置いときます。参考になる部分でもありましたら、ご自身のコードの中に取り入れてみでください。
|
48
|
+
|
49
|
+
```swift
|
50
|
+
import UIKit
|
51
|
+
import CoreMotion
|
52
|
+
|
53
|
+
class ViewController: UIViewController {
|
54
|
+
|
55
|
+
// ラベルのoutlet接続
|
56
|
+
@IBOutlet weak var xAccelValuLabel: UILabel!
|
57
|
+
@IBOutlet weak var yAccelValuLabel: UILabel!
|
58
|
+
@IBOutlet weak var zAccelValuLabel: UILabel!
|
59
|
+
|
60
|
+
// 加速度データを記憶する配列
|
61
|
+
var accelValueArray = [String]()
|
62
|
+
|
63
|
+
// creMotionManagerを生成する
|
64
|
+
let cmManager = CMMotionManager()
|
65
|
+
|
66
|
+
|
67
|
+
override func viewDidLoad() {
|
68
|
+
super.viewDidLoad()
|
69
|
+
// Do any additional setup after loading the view, typically from a nib.
|
70
|
+
|
71
|
+
// queueを実行する間隔(2.0秒 ← 変更可能)
|
72
|
+
cmManager.deviceMotionUpdateInterval = 2.0
|
73
|
+
// queueで実行するcloure
|
74
|
+
let handler: CMDeviceMotionHandler = {(motionData: CMDeviceMotion?, error: Error?) -> Void in
|
75
|
+
self.motionAnimation(motionData, error: error as Error?)
|
76
|
+
}
|
77
|
+
// 更新で実行するqueueを登録してモーションセンサーをスタートする
|
78
|
+
cmManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: handler)
|
79
|
+
}
|
80
|
+
|
81
|
+
// デバイスモーションセンサーで定期的に実行するメソッド
|
82
|
+
func motionAnimation(_ motionData: CMDeviceMotion?, error: Error?) {
|
83
|
+
if let motion = motionData {
|
84
|
+
// x軸方向加速度
|
85
|
+
let accelX = motion.userAcceleration.x
|
86
|
+
xAccelValuLabel.text = String(accelX)
|
87
|
+
// y軸方向加速度
|
88
|
+
let accelY = motion.userAcceleration.y
|
89
|
+
yAccelValuLabel.text = String(accelY)
|
90
|
+
// z軸方向加速度
|
91
|
+
let accelZ = motion.userAcceleration.z
|
92
|
+
zAccelValuLabel.text = String(accelZ)
|
93
|
+
|
94
|
+
let geteData = "(accelX),(accelY),(accelZ)"
|
95
|
+
// 2秒毎に数値を配列に追加する
|
96
|
+
accelValueArray.append(geteData)
|
97
|
+
print("accelValueArray:",accelValueArray)
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
// accelValueArrayをCSVに変換して保存する
|
102
|
+
@IBAction func saveCSV(_ sender: UIButton) {
|
103
|
+
let fm = FileManager.default
|
104
|
+
//documents
|
105
|
+
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
|
106
|
+
let filePath = documentsPath + "/getdata.csv"
|
107
|
+
if !fm.fileExists(atPath: filePath) {
|
108
|
+
fm.createFile(atPath: filePath, contents: nil, attributes: [:]) }
|
109
|
+
|
110
|
+
// 配列をCSVに変換する
|
111
|
+
let getData = accelValueArray.map { "\"" + $0 + "\"" }.joined(separator: ",")
|
112
|
+
|
113
|
+
do{
|
114
|
+
try getData.write(toFile: filePath, atomically: true, encoding: String.Encoding.utf8)
|
115
|
+
print("Success to Wite the File")
|
116
|
+
print("getData:",getData)
|
117
|
+
print("filePath:",filePath)
|
118
|
+
}catch let error as NSError{
|
119
|
+
print("Failure to Write File\n(error)")
|
120
|
+
}
|
121
|
+
}
|
122
|
+
|
123
|
+
override func didReceiveMemoryWarning() {
|
124
|
+
super.didReceiveMemoryWarning()
|
125
|
+
// Dispose of any resources that can be recreated.
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
45
129
|
```
|