ライフログを計測する Android アプリの開発

Takahiro Shimokawa
FiNC Tech Blog
Published in
4 min readMay 11, 2017

初めまして。下川と申します。技術開発本部で Android アプリ開発を担当しております。
この記事では、私が担当している Android アプリについて、ライフログを計測するという観点で書いていきたいと思います。

現在弊社のアプリでは、ライフログを計測するために様々なデバイスやセンサーと連携し、データを取得できるようにしています。

各ライフログで選択できるデータソース

今後もより便利なアプリにするべく、デバイス連携やセンサー活用を模索しております。

今回はその中でも特に注目している Google Awareness API について、触れたいと思います。

Awareness APIとは

Google 社が昨年の Google I/O 2016 で発表したサービスで、様々なユーザーの状況を検知することが出来ます。

主に、ユーザーアクティビティ、位置情報、天気などといった情報を取得することができ、それらをキーにしたサービス開発のためのサービスです。

最も大きな特徴は、次の2点です。

  • 単一のインターフェースで様々な機能を利用可能
  • バッテリー等のシステムリソースへ配慮した動作

参考サイト

サンプルアプリを作ってみました

実際にどのような形で情報を取得できるのか、サンプルアプリを作成して試してみました。今回はユーザーアクティビティの検知機能を実装しております。

導入手順は、公式サイトが詳しいので割愛しますが、ここではアプリで必要な手順だけピックアップしていきます。

手順1: AwarenessAPI のライブラリを build.gradle に設定

dependencies {
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.google.android.gms:play-services-awareness:10.2.0'
...
}

手順2: GoogleApiClient に接続する

val client = GoogleApiClient.Builder(applicationContext)
.addApi(Awareness.API)
.build()
if (!client.isConnected) {
client.connect()
}

手順3: アクティビティを検知する

Awareness.SnapshotApi.getDetectedActivity(client)
.setResultCallback({ result ->
if (!result.status.isSuccess) {
return@setResultCallback
}
val currentActivity = result.activityRecognitionResult.mostProbableActivity
Log.d(TAG, "Change activity : " + currentActivity.toString())
})

上記で検知したアクティビティを通知に表示できるようにし、実際に行動してみた結果が下図となります。(なおアクティビティの type は、Awareness API 側でこのような定数が用意されています。)

様々なシチュエーションで検知させたアクティビティ

まとめ

  • 実装はとてもシンプルで扱いやすい
  • アクティビティ検知は移動開始に対する精度は良かった

プロダクトに組み込むとしたら、他の情報と組み合わせることがこのサービスの真価だと思うので、今度は組み合わせて何が出来るのかを試してみたいと考えています。

FiNC では、デバイスやセンサーを活用したアプリ開発に興味がある、エンジニアを募集しております。

株式会社FiNCの採用/求人一覧 - Wantedly

--

--

Takahiro Shimokawa
FiNC Tech Blog

都内でエンジニアしてます。あとはAndroid関係でコミュニティ活動もやってます。