2012年10月10日水曜日

Androidで設定を参照, 操作するあれこれ -画面の設定編-

今回はいったいいつ使うのかわからないネタ


android端末の画面の設定を操作


うん…普通に設定開けば良いじゃんとか言わない.アーアー<'(;´Д`)>キコエナイー
見つけて使ってみたから書く…うん


0. 下準備

まず始めに準備するのが.ManifestのUse-Parmission.
ここに

android.permission.WRITE_SETTINGS

これを許可してやる.
許可しないと基本設定を書き込めません.
一部読むだけなら要らないのもあるけれど…

そして


import android.provider.Settings.System;

をimportしておくことをお勧めする.
でないとSystemと一口に言っても, System.out.printlnでおなじみのjava.langや, android.osなどにもSystemがある.
そのため, 以降別のSystemを眺めながら「そんなメソッド見つからない!」とかIDEさんに理不尽に怒られる可能性があります.('A`)コレハヒドイ

1. 画面の点灯時間の設定

いわゆるオートスリープまでの時間の設定.
まずは, 今の設定を呼び出すメソッド.

System.getInt(getContentResolver(),System.SCREEN_OFF_TIMEOUT)

これだけ.
もしくは,
System.getInt(getContentResolver(),System.SCREEN_OFF_TIMEOUT, -1)

これだけ.
最初の引数はContentRe
最後の引数の-1は今回は特に関係ないようです.getIntによくあるデフォルト値?
ちなみに-1は「消灯しない」の設定みたい
第一引数のContentResolverはともかく
第二引数のSystem.SCREEN_OFF_TIMEOUT, これでどの情報にアクセスするかを設定しているみたい.

これで現在の設定が取得可能. 取得はミリ秒単位.

取得したら今度は設定.


System.putInt(getContentResolver(), System.SCREEN_OFF_TIMEOUT, 設定したい時間(ミリ秒));

これだけ.
設定したい時間に好きな値を放り込めばOK.
本体の設定アプリにない値も設定できます.



だれか一年とか設定してみた人いないのかな|・ω・`)チラッ


2. 画面の回転の設定

Notification Barを引っ張れば良いとか言わない.
Widget出せば良いとか言わない.

System.getInt(getContentResolver(),System.ACCELEROMETER_ROTATION)

まずは設定の取得. 既視感?少し上を見れば解決するかと.
基本Settings.Systemはこのメソッドで何とかなりそう.
返ってくる値は0(ロック状態), 1(ロック解除状態)の2種類.
表示するなら一工夫必要.

そして設定.

System.putInt(getContentResolver(),System.ACCELEROMETER_ROTATION, 0 or 1);

大方の予想通りでございます. はい.
0 or 1 でロック or アンロック を指定できます.

非常にシンプルなのでボタン一個で設定できるのもうなずけます.

とりあえずはこのあたり.











コード少ないなぁ…(・ω・`)

1 件のコメント:

AWS CDKで立てたEC2インスタンスのTimeZoneとかいじりたかった話

EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが  AWS::CloudFormation:...