セキュリティの問題: どのように発生するかはわかりませんが、この質問の読者は、この問題の解決策がセキュリティ上の脅威であるという考えを思いつきます。したがって、私が興味を持っているすべてのデータは、ユーザーの活動時間の測定であることを覚えておいてください。それで全部です。ユーザーが何をしたか -- 私はまったく興味がありません!
必要なのは非常に単純な概念ですが、解決策が見つかりません。プロセスを (バックグラウンドで) 実行し、リスナーとユーザーのやり取りを行いたいと考えています。
したがって、ユーザーが画面に触れる --> 私のメソッドがトリガーされます。
ユーザーが電話のロックを解除 --> 私のメソッドがトリガーされます。
ユーザーが物理キーボードで入力 --> メソッドがトリガーされます。
つまり、電話がテーブルの上にまだある場合、私のメソッドはトリガーされません:-)対話は電話全体であり、アプリではなく、ユーザーが文字「K」を入力したことに興味がないことに注意してください。ユーザーが何かを入力したことに興味さえありません。私が気にするのは、ユーザーが何らかの方法で電話を使用したことだけです。
ところで。ユーザーが音楽を聴きながら歩いているときの状態 (携帯電話がポケットに入っている) -- これはインタラクションではありません。
私が探しているのはトリガーです - のようなものINTERACTION_DETECTED
、または (逆に) のように設定されたコールバック メソッドでreportInactiveUser(10*1000)
、ユーザーが 10 秒間非アクティブだった場合に呼び出されます。
QUESTIONユーザー インタラクションを検出する方法は?
目的: 電話を手動で使用する時間を測定します。
(欠けている)PROGRESS
BatteryStatsImpl
必要なデータを保持できることがわかりました。そのインスタンスは によって保持されますがBatteryStatsService
、アクセスは許可されず、IBatteryStats
興味深いメソッドが 1 つしかありgetStatistics
ません。また、出力にはユーザー アクティビティ カウンターが含まれません (またはすべてゼロです。すべてのアクセス許可をに設定します)。 )。ですから、これまでのところ -- 不運です。
これらのクラスはとにかく利用できないため、すべての呼び出しはリフレクションによって行う必要があります;-)。