- 2012-07-03 (火) 2:58
- くだらない話
WakeLock
AIR for Androidでスリープを抑制する場合、パーミッションに
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
を指定するようにAdobeのドキュメントに書かれています。
その上で、
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
を実行するとスリープが抑制されます。このままではバックグラウンドへ回ってもスリープが抑制されたままですので、Event.DEACTIVATEのタイミングでSystemIdleMode.NORMALへ、Event.ACTIVATEで再びSystemIdleMode.KEEP_AWAKEにします。
追記:一度SystemIdleMode.KEEP_AWAKEにしてしまうと、SystemIdleMode.NORMALを指定してもアクティブ時にスリープしないようです。バックグラウンド時のみスリープします。
追記2:Flex SDK4.6+AIR SDK3.3です。
と、ここまですると希望通りにスリープを抑制出来ますが、電源ボタンを押してサスペンドさせると、復帰時にキーロック画面が出ません。
DISABLE_KEYGUARDはキーロック解除のパーミッションなので、内部でキーロックを無効化しているのかもしれません。
<!--<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />--> <uses-permission android:name="android.permission.WAKE_LOCK" />
とりあえずコメントアウトして実行してみます。
そうすると、スリープ抑制しつつ、サスペンドから復帰時にキーロック画面が出ます。
しかし、バックグラウンドに回ってもスリープが抑制されたままです。もちろん、先ほどのコードのままですので、 SystemIdleMode.NORMALになっています。
一度も SystemIdleMode.KEEP_AWAKEを指定しない場合は、スリープしています。一度でも指定するとSystemIdleMode.NORMALを指定しても戻せなくなるようです。
ちょっと、どうすればいいか分かりません。
スリープ抑制をするならキーロックを諦めるか、バックグラウンドに回ってもスリープ抑制するか、スリープ抑制自体を諦めるしかないようです。
コメント:0
トラックバック:1
- このエントリーのトラックバックURL
- https://www.ku-da.net/hogwash/air-for-android-sleep.html/trackback
- Listed below are links to weblogs that reference
- AIR for Androidのスリープ ~ くだらないページ
- trackback ~ Akkii 12-07-02 (月) 17:58
-
ブログに投稿しました: AIR for Androidのスリープ http://t.co/G0L3Rdth