日記#285#286

#285 5月11日

考えていた打開策が全て空振りで終わってしまったため、今日もonReceive内でセンサー値が取得できない事象の原因を探ることになった。
今日はセンサー値取得が上手くいく側といかない側で差分を確認した。

まず、getInstance関数内の結果がこちら。

上手くいった時

上手くいかなかった時

どちらも最終的にはgetInstance取得できていることが分かった。

今度はセンサー値を取得できるクラス内を調べることにした。

上手くいったとき。

次は上手くいかなかった時。

ここで、onReceive内でセンサー値が取得できていないことが分かった。

以上の結果をまとめると

<メイン側>
AlarmManagerでonReceiveに情報を送り、onReceiveを起動させる

<onReceive側>
・getInstance関数を取得してセンサー値を取得できる準備をする
・センサー値を取得するonChangeSensorが起動しない状態で
 センサー値を取得する関数を呼び出してしまう
・センサー値を取得できないためnull値を取得してしまう

このことから次の推測が生じた。
onReceiveはAlarmManagerから情報を受け取るだけなのでonChangeSensorが起動しない

よって、現在の方法での歩数計の毎日更新はこれ以上改善が見込めないため、別なアプローチが必要になる。

#286 5月12日

今日はstecounterではなくstepdetectorの方を使用した。
stepdetectorは歩行を感知したときにそれを1.0の値に変換してくれるセンサーだ。
これを使って歩数をプラスしていく。

まず、stepdetectorが機能していることを確認する。

歩行検知と加算ができたことを確認した。
次はアプリを起動した状態で画面オフにした時にも機能するのかを確認する。

これも確認できた。
最後にアプリを終了してからセンサー値を取得できるか確認した。

これはできなかった。
以上のことからstepdetectorは当てにならないことが分かった。
stepcounterのセンサー値をなんとか0時に取得できるように考えるしかなくなってしまった。

この記事が気に入ったらサポートをしてみませんか?