質問編集履歴
1
文書の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -109,3 +109,105 @@
|
|
109
109
|
###補足情報(言語/FW/ツール等のバージョンなど)
|
110
110
|
|
111
111
|
Android(5.x)で開発を進めています。
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
###追記(2017/08/09)
|
116
|
+
|
117
|
+
下記ソースでバックグラウンド時もセンサの値を取得することには成功しました。(おそらく)
|
118
|
+
|
119
|
+
ただ、0.2秒ごとにセンサの値を取得して判定するというのはプログラム的にどうなのかという疑問が残ります。。
|
120
|
+
|
121
|
+
もっとスマートな方法は無いでしょうか。。。
|
122
|
+
|
123
|
+
```JavaScript
|
124
|
+
|
125
|
+
document.addEventListener('deviceready', onDeviceReady, false);
|
126
|
+
|
127
|
+
function onDeviceReady() {
|
128
|
+
|
129
|
+
// 重力加速度のしきい値
|
130
|
+
|
131
|
+
var GRAVITY_MIN = 9.8;
|
132
|
+
|
133
|
+
var GRAVITY_MAX = 12.00;
|
134
|
+
|
135
|
+
// 歩数
|
136
|
+
|
137
|
+
var _step = 0;
|
138
|
+
|
139
|
+
// 現在歩いているかどうか
|
140
|
+
|
141
|
+
var _isStep = false;
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
//センサ取得成功時
|
146
|
+
|
147
|
+
function onSuccess(acceleration) {
|
148
|
+
|
149
|
+
var ag = acceleration;
|
150
|
+
|
151
|
+
// 重力加速度ベクトルの大きさを取得
|
152
|
+
|
153
|
+
var acc = Math.sqrt(ag.x*ag.x + ag.y*ag.y + ag.z*ag.z);
|
154
|
+
|
155
|
+
console.log(acc);
|
156
|
+
|
157
|
+
if (_isStep) {
|
158
|
+
|
159
|
+
// 歩行中にしきい値よりも低ければ一歩とみなす
|
160
|
+
|
161
|
+
if (acc < GRAVITY_MIN) {
|
162
|
+
|
163
|
+
_step++;
|
164
|
+
|
165
|
+
_isStep = false;
|
166
|
+
|
167
|
+
}
|
168
|
+
|
169
|
+
} else {
|
170
|
+
|
171
|
+
// しきい値よりも大きければ歩いているとみなす
|
172
|
+
|
173
|
+
if (acc > GRAVITY_MAX) {
|
174
|
+
|
175
|
+
_isStep = true;
|
176
|
+
|
177
|
+
$('#hosu').text(_step);
|
178
|
+
|
179
|
+
console.log(_step + "歩");
|
180
|
+
|
181
|
+
}
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
}
|
186
|
+
|
187
|
+
//センサ取得失敗時
|
188
|
+
|
189
|
+
function onError() {
|
190
|
+
|
191
|
+
console.log('watchAcceleration on Error!');
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
//0.2sごとにセンサの値を取得
|
198
|
+
|
199
|
+
var options = { frequency: 200 };
|
200
|
+
|
201
|
+
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
cordova.plugins.backgroundMode.enable();
|
208
|
+
|
209
|
+
cordova.plugins.backgroundMode.on('enable', window.addEventListener('devicemotion', watchID));
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
```
|