goToSleep()?
ついこの間、学校でAndroid君をいじっていたら、教師に電源を切るよう怒られましたorz
別に電源を切ること自体はなんでもないんですが、やることいっぱいで忙しいこのときにリブートには時間がかかるわけですよ、、、
なので、こんなときのためのジョークアプリ作ってみましたww
単にシャットダウンダイアログを出してスリープにする、とういうだけの作業だったのですが、意外と苦労しました。
それは、スリープに移行する権限をuses-permissionでは指定できないから!!
本来なら、AndroidをスリープさせるgoToSleepはPowerManagerに含まれているので、『android.permission.DEVICE_POWER』を許可してやりゃいい筈なんですが・・・
ERROR:user *** nor process doesn't have permission "android.permission.DEVICE_POWER".
あれま。
どうやら、goToSleep()はシステムからしか操作できないようで
だったら、別の方式で攻めましょう。
バックライト点灯時間の操作です。
[java] if*1==-1) finish(); halting = new ProgressDialog(this);
AlertDialog.Builder confirm = new AlertDialog.Builder(this); confirm.setIcon(android.R.drawable.ic_dialog_alert); confirm.setTitle("電源を切る"); confirm.setMessage("携帯電話の電源を切ります。");
[/java]
システムのバックライト消灯時間を頭で取得して、その後ダイアログを出します。
[java]
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 500);
[/java]
ひとまずこれで消灯時間を500ミリ秒にして、、、
[java] @Override public void onPause(){ super.onPause(); halting.dismiss(); halting = null; }
@Override public void onDismiss(DialogInterface arg0) { // TODO Auto-generated method stub Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, defTime); finish(); }
[/java]
消灯後にonPauseでダイアログを消し、onDismissでそれに続いて設定を戻して終了です。
これは『android.permission.WRITE_SETTINGS』を必要としますので、少々インストールを拒みたくなりますが、怖いことはしてないので安心してくださいww ものはこれ です。
*1:defTime = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, -1