Android x Google Play Servicesで取得するconfidenceが理解しにくかったので私なりにまとめてみた。


きっかけ

仕事でGoogle Play Servicesの ActivityRecognitionApiを使うことになった。
Google Play Servicesの ActivityRecognitionApiはユーザーの行動を取得する API で、徒歩で移動中か、自転車で移動中かなど「ユーザーが何をしているか」ということが把握できるので使用してみました。が!DetectedActivityで取得するconfidenceがなんとも理解しにくい!
activityTypeを使っている例がいっぱいあるけど、confidenceを使っている例がないので、ちょっと覚書のためにメモ。

やってみたこと

activityTypeはわかるんです。
「IN_VEHICLE」や「on_foot」など車なのか?歩いてるのか?走っているのか?って値がactivityTypeなのでif文で使うと

if(activityType === 0 )

てな感じになる。
しかし、confidenceの説明が公式サイトにはこう書いてあります。

value from 0 to 100 indicating how likely it is that the user is performing this activity.
ユーザーがアクティビティを実行している可能性があることを0〜100の値で示す。(Google先生翻訳)

とのこと....可能性? if文でどうやって使うの?と思ったので色々なケースでif文を書いてみた。

検証した結果

confidenceの値が100の場合
if(activityType === 0 && confidence > 100)
(間違いなく車やな!)
confidenceの値が100の場合
if(activityType === 0 && confidence > 75)
(多分、車とちゃうかなぁ〜)
confidenceの値が100の場合
if(activityType === 0 && confidence > 50)
(あれ?車とちゃうかなぁ〜でも、ビミョー)

こんな感じで使えるのだと思う。一応、ちゃんと動いている....
ん〜でも、これだとactivityTypeが0で全て通ってしまわないのだろうか?

まとめ

まとめるほどではないが、公式文章を読むと書いてあることはわかるんだけど、何に使うかわからない時は使ってみて覚えるのが一番だなぁ〜と思った。
でも、くだらない内容なので、あまり誰も役にも立たないと思うw

参考にしたサイト

公式ページDetectedActivity