@@ -59,10 +59,13 @@ - (void)viewDidLoad
59
59
/* 各種センサーの利用開始(全てを動作させると非常に遅くなるので注意) */
60
60
// CMAccelerometerDataの開始
61
61
[self startCMAccelerometerData: frequency];
62
+
62
63
// CMGyroDataの開始
63
64
[self startCMGyroData: frequency];
65
+
64
66
// CMMagnetometerDataの開始
65
67
[self startCMMagnetometerData: frequency];
68
+
66
69
// CMDeviceMotionの開始
67
70
[self startCMDeviceMotion: frequency];
68
71
}
@@ -161,50 +164,65 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface
161
164
162
165
- (void )startCMAccelerometerData : (int )frequency
163
166
{
167
+ // 加速度センサーの有無を確認
164
168
if (self.manager .accelerometerAvailable ) {
165
- self.manager .accelerometerUpdateInterval = 1 / frequency;
169
+ // 更新間隔の指定
170
+ self.manager .accelerometerUpdateInterval = 1 / frequency; // 秒
171
+ // ハンドラ
166
172
CMAccelerometerHandler handler = ^(CMAccelerometerData *data, NSError *error) {
167
173
// double timestamp = data.timestamp;
168
174
self.accelerometerDataXLabel .text = [NSString stringWithFormat: @" %lf " , data.acceleration.x];
169
175
self.accelerometerDataYLabel .text = [NSString stringWithFormat: @" %lf " , data.acceleration.y];
170
176
self.accelerometerDataZLabel .text = [NSString stringWithFormat: @" %lf " , data.acceleration.z];
171
177
};
178
+ // センサーの利用開始
172
179
[self .manager startAccelerometerUpdatesToQueue: [NSOperationQueue currentQueue ] withHandler: handler];
173
180
}
174
181
}
175
182
176
183
- (void )startCMGyroData : (int )frequency
177
184
{
185
+ // ジャイロスコープの有無を確認
178
186
if (self.manager .gyroAvailable ) {
179
- self.manager .gyroUpdateInterval = 1 / frequency;
187
+ // 更新間隔の指定
188
+ self.manager .gyroUpdateInterval = 1 / frequency; // 秒
189
+ // ハンドラ
180
190
CMGyroHandler handler = ^(CMGyroData *data, NSError *error) {
181
191
// double timestamp = data.timestamp;
182
192
self.gyroDataXLabel .text = [NSString stringWithFormat: @" %lf " , data.rotationRate.x];
183
193
self.gyroDataYLabel .text = [NSString stringWithFormat: @" %lf " , data.rotationRate.y];
184
194
self.gyroDataZLabel .text = [NSString stringWithFormat: @" %lf " , data.rotationRate.z];
185
195
};
196
+ // センサーの利用開始
186
197
[self .manager startGyroUpdatesToQueue: [NSOperationQueue currentQueue ] withHandler: handler];
187
198
}
188
199
}
189
200
190
201
- (void )startCMMagnetometerData : (int )frequency
191
202
{
203
+ // 磁力計の有無を確認
192
204
if (5.0 < _systemVersion && self.manager .magnetometerAvailable ) {
193
- self.manager .magnetometerUpdateInterval = 1 / frequency;
205
+ // 更新間隔の指定
206
+ self.manager .magnetometerUpdateInterval = 1 / frequency; // 秒
207
+ // ハンドラ
194
208
CMMagnetometerHandler handler = ^(CMMagnetometerData *data, NSError *error) {
195
209
// double timestamp = data.timestamp;
196
210
self.magnetometerDataXLabel .text = [NSString stringWithFormat: @" %lf " , data.magneticField.x];
197
211
self.magnetometerDataYLabel .text = [NSString stringWithFormat: @" %lf " , data.magneticField.y];
198
212
self.magnetometerDataZLabel .text = [NSString stringWithFormat: @" %lf " , data.magneticField.z];
199
213
};
214
+ // センサーの利用開始
200
215
[self .manager startMagnetometerUpdatesToQueue: [NSOperationQueue currentQueue ] withHandler: handler];
201
216
}
202
217
}
203
218
204
219
- (void )startCMDeviceMotion : (int )frequency
205
220
{
206
- if (self.manager .isDeviceMotionAvailable ) {
207
- self.manager .deviceMotionUpdateInterval = 1 / frequency;
221
+ // センサーの有無を確認
222
+ if (self.manager .deviceMotionAvailable ) {
223
+ // 更新間隔の指定
224
+ self.manager .deviceMotionUpdateInterval = 1 / frequency; // 秒
225
+ // ハンドラ
208
226
CMDeviceMotionHandler handler = ^(CMDeviceMotion *motion, NSError *error) {
209
227
// double timestamp = motion.timestamp;
210
228
0 commit comments