ユーザーの行動を把握してアプリを適応させる

モバイル デバイスは、今や多くの人にとって日常生活の一部になっています。ユーザーは車、ウォーキング、エクササイズ、仕事、遊びを丸 1 日かけてスマートフォンを持ち歩いています。

ユーザーが現実世界で何をしているかを理解すると、アプリはそれを使ってより上手に交流する方法を賢くできるようになります。たとえば、ランニングを開始したときのハートビートのトラッキングを開始するアプリや、ユーザーが運転を開始したことを検知する別のアプリに切り替えることができます。

アクティビティ認識 API は、デバイスで利用可能なセンサーの上に構築されています。デバイス センサーを使用すると、ユーザーの現在の行動に関するインサイトが得られます。しかし、複数のセンサーから得られる多数のシグナルと、人のやり方に多少の変動があるため、ユーザーが何をしているのかの検出は容易ではありません。

Activity Recognition API は、センサーデータの短いバーストを定期的に読み取り、機械学習モデルを使用して処理することで、アクティビティを自動的に検出します。リソースを最適化するために、この API は、デバイスがしばらく操作されていない場合はアクティビティ レポートを停止し、低電力センサーを使用して動きを検出するとレポートを再開します。

最小限のリソースを使用してアクティビティに関する情報を受信

一部のアプリでは、ユーザーが特定のアクティビティを開始または停止するタイミングを把握する必要があります。たとえば、ユーザーが走行を開始したときに走行距離のトラッキング アプリを起動したり、メッセージ アプリでユーザーが運転を停止するまですべての会話をミュートしたりできます。

Activity Recognition Transition API では、ユーザーのアクティビティの変化の検出に関連する手間のかかる作業を行うことで、こうしたシナリオを実現できます。アプリは目的のアクティビティ遷移に登録し、API は必要な場合にのみアプリに通知します。アクティビティの開始または終了を検出する複雑なヒューリスティックを実装する必要はありません。

Activity Recognition API はコールバックに結果を渡します。コールバックは、通常、アプリの IntentService として実装されます。指定した間隔で結果が配信されます。アプリは、他の電力を消費することなく、他のクライアントからリクエストされた結果を使用できます。

PendingIntent を使用して結果の提供方法を API に指示すると、アクティビティ検出のためにサービスをバックグラウンドでバックグラウンドで実行する必要がなくなります。アプリは API から対応する Intents を受け取り、検出されたアクティビティを抽出し、それによってアクションを行うかどうかを決定します。アクティビティが受信された場合にのみサービスを呼び出すことで、メモリなどのリソースが保持されます。

Activity Recognition API は、デバイスからの信号を処理して現在のアクティビティを識別することで、負荷の高い作業を行います。アプリは検出されたアクティビティのリストを受け取ります。各アクティビティには confidence プロパティと type プロパティが含まれます。

confidence プロパティは、ユーザーが結果に示されているアクティビティを実行する可能性を示します。type プロパティは、現実世界のエンティティに関連するデバイスの検出されたアクティビティを表します(例: デバイスが自転車に搭載されているデバイスがユーザーの上で実行されている)。