RoBoHon開発めも
RoBoHoN開発のことをめもしていきます!
スリープ早すぎない?
スリープ時間は1分に設定されてるみたい(なんとなく)
これだと、アプリの実行中にスリープしちゃうので調べてみました。
マニュアルを見てみる
6.4.1 プロジェクター照射中のWakeLock について
プロジェクターマネージャーでは照射中にWakeLock をかけない仕様のため、一定時間無操作の画面OFF 時はプロジ
ェクター照射を終了します。一定時間以上プロジェクター照射を継続したい場合は、アプリ側にて適宜WakeLock を
かける必要があります。その際、設定するWakeLock は「SCREEN_DIM_WAKE_LOCK」としてください。
引用:0401_SR01MW_Application_Programming_Guide_V01_00_00.pdf
これしかみあたらなかった。普通のアプリの時はどうすればいいのかな?
サンプルプログラムを見てみる
WakeLock_Onっていう、なぜか命名規約がほかと違うメソッドを呼んでました。
/**
* WakeLock開始
*/
private void WakeLock_On() {
Log.d(TAG, "WakeLock_On()");
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
synchronized (mLock) {
if (mWakelock == null || !mWakelock.isHeld()) {
mWakelock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, MainActivity.class.getName());
mWakelock.acquire();
}
}
}
/**
* WakeLock終了
*/
private void WakeLock_Off() {
Log.d(TAG, "WakeLock_Off()");
synchronized (mLock) {
if (mWakelock != null && mWakelock.isHeld()) {
mWakelock.release();
mWakelock = null;
}
}
}
SCREEN_DIM_WAKE_LOCKは非推奨ですね。

でもまあ、とりあえず、プロジェクターを使う際には、プロジェクター起動時にWakeLock_On()して、プロジェクター終了時にWakeLock_Off()すればいいみたい!
アプリ実行中のスリープ解除って出来るの?
素朴な疑問が・・・そもそもスリープ解除ってできるのでしょうか?タッチパネルも効かなくなるし、頭のボタンや電源ボタンを押すとホームに戻るから解除できない?そのへんも、マニュアルを探したけどよくわかりませんでした。
まとめ
プロジェクターじゃないときは結局どうすればいいかわからなかった。
なぜ非推奨の命令をあえて使ってるのか?
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
FLAG_KEEP_SCREEN_ON じゃだめなのかが知りたい。
よくわかんないなー。
ロボホンテストルームで聞いてきた!(追記)
SCREEN_DIM_WAKE_LOCKだと画面をちょびっと暗くできるので、こっちを推しているそうです。
電池の減りをすこしでも少なくする工夫とのこと。
別に、FLAG_KEEP_SCREEN_ONでもいけるとのことでした。
ちなみに、アプリ実行中のスリープ解除は話を聞いた限り出来なそう。
なので、スリープしたらアプリ終了させるのが正解みたい。(たぶん)