ライフログを計測する Android アプリの開発
初めまして。下川と申します。技術開発本部で Android アプリ開発を担当しております。
この記事では、私が担当している Android アプリについて、ライフログを計測するという観点で書いていきたいと思います。
現在弊社のアプリでは、ライフログを計測するために様々なデバイスやセンサーと連携し、データを取得できるようにしています。
今後もより便利なアプリにするべく、デバイス連携やセンサー活用を模索しております。
今回はその中でも特に注目している Google Awareness API について、触れたいと思います。
Awareness APIとは
Google 社が昨年の Google I/O 2016 で発表したサービスで、様々なユーザーの状況を検知することが出来ます。
主に、ユーザーアクティビティ、位置情報、天気などといった情報を取得することができ、それらをキーにしたサービス開発のためのサービスです。
最も大きな特徴は、次の2点です。
- 単一のインターフェースで様々な機能を利用可能
- バッテリー等のシステムリソースへ配慮した動作
参考サイト
- Google Awareness API (by Google Developers)
- Google Awareness API で状況をインテリジェントに認識するアプリを作成する (by Google Developer Japan)
サンプルアプリを作ってみました
実際にどのような形で情報を取得できるのか、サンプルアプリを作成して試してみました。今回はユーザーアクティビティの検知機能を実装しております。
導入手順は、公式サイトが詳しいので割愛しますが、ここではアプリで必要な手順だけピックアップしていきます。
手順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 では、デバイスやセンサーを活用したアプリ開発に興味がある、エンジニアを募集しております。