2016-07-12 6 views
0

私のアプリケーションでは、ユーザーが起床して午前、午後、または起床するたびに携帯電話の電源を入れると、ウェルカムメッセージで起動するかどうかを検出する必要があります。ホームスクリーンやピンなどにパターンを入力してください。デバイスが使用されていない時間を特定する方法は?

私は、デバイスが前回使用された時間を測定することによってこれをしたいです。私は8時間の睡眠を前提としています。最後のスイッチオフから8時間が経過すると、次回携帯電話の電源を入れたときに、アプリケーションが起動します(それぞれ内部の機能)。

ので数えてはならないユーザーとの対話が、アラームまたは何も起こって画面。

私はlogcatを見て、それは私に有用な情報I/PowerManagerService: Going to sleep due to power buttonを与えました。そのため、PowerManagerServiceListenerが可能です。私はhttps://developer.android.com/reference/android/os/PowerManager.htmlを見つけましたが、積極的に表示を維持するためであり、受動的に報告するためではありません。

別の候補者は、KeyguardViewMediator: onStartedGoingToSleep(2)KeyguardServiceDelegate: onScreenTurnedOff()です。

確かに、私はlogcatを通じて見えポーリングアプリケーションを作成することができ、それは強く、電池排水のアプローチのように聞こえます。

私が欲しいものを達成するためには、パフォーマンスに優しい方法はありますか?

答えて

0

あなたの説明によれば、時間単位の細分化に興味があります。次に、1時間ごとに繰り返しアラームをスケジュールすることができます(Scheduling Repeating Alarms参照)。共有優先度で時間を保存し、BOOT_COMPLETEDブロードキャストを受信し、時刻を比較して何をすべきかを決定します。

しかし、私は多くのユーザーが自分のデバイスの電源をオフにしていないので、私はあなたのアプローチのベースとなる仮定が有効であるかどうかを確認しようと思います。

getDetectedActivity()Snapshot Awareness APIから試して、DetectedActivityが特定の間隔でたとえばSTILLであるかどうかを確認することもできます。

+0

終了までの手段です。画面をタップしたり、電源ボタンを押したりするなど、デバイスとのやりとりの時間をどのように測定しますか? –

関連する問題