Home > くだらない話 > AIR for Androidのスリープ

AIR for Androidのスリープ

Pocket

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

コメント フォーム
Remember personal info

トラックバック:1

このエントリーのトラックバックURL
http://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

検索
Feed
アーカイブ
Meta

Return to page top