ユーザーがアイドル状態のときに発生し、ユーザーが戻ったときに通常の状態に戻る機能を備えた、純粋な AS3 で記述された Adobe AIR アプリケーションがあります。次のコードでこのアクティビティを検出しています。
NativeApplication.nativeApplication.idleThreshold = 180;
NativeApplication.nativeApplication.addEventListener(Event.USER_IDLE, onUserIdle);
NativeApplication.nativeApplication.addEventListener(Event.USER_PRESENT, onUserPresent);
onUserIdle
メソッドは 3 分後に呼び出されるはずですが、その直後onUserPresent
にイベントが発生します。私は数ミリ秒後に話しています。これは、ユーザーの入力がまったくなくても発生します。奇妙なことに、これは Windows では発生せず、OSX でのみ発生します。そして、それは 10.6.3 にさかのぼるすべてのフレーバーの OSX で発生します。
Adobe のドキュメントは、これらのイベントがどのように決定されるかについて非常にあいまいであるため、問題を解決するためにシステム レベルでできることがあるかどうかはわかりません。誰もこの問題の経験がありますか?そうでない場合は、アプリにフォーカスがない場合でもユーザーのアイドル状態を検出する方法について他の提案はありますか?
提案を先取りするために、マウス/キーボードリスナーを使用して同じ動作をシミュレートすることはできません。アプリケーションがフォーカスを失った場合、NativeApplication
イベントは引き続き発生するため、マウス/キーボードリスナーは機能しないためです。またNativeProcess
、ioreg の出力を取得して、システムによって報告されたハードウェアのアイドル時間を取得していましたが、マウスの影響を受けていないようです。
どんな援助でも本当に感謝します。
編集:アプリケーションがOSXの管理者アカウントで実行されている場合、これは発生しないことがわかりました。それはユーザーアカウントでのみ発生し、私をさらに混乱させるだけです.