Androidの通話アプリは、近接センサーを利用して画面のON/OFFをしています。
これと同じ事を実装したかったので、てくぶ(Androidのセンサーを利用する)を読んで TYPE_PROXIMITY の値を取らないとなあ、とか調べていました。
Androidのよくあるパターンだと、こういうのは泥臭い実装が必要だったりするんですよね。
超簡単でした
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
wl.acquire();
...(この間有効)...
wl.release();
※WakeLockのPermissionが必要です
このPowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCKというフラグが、まさしく「近接センサーが反応している間だけ画面をOFFにする」という機能を提供しているのでした。
SDKドキュメントによるとAPIレベル21となっていますが、@hide宣言されてるだけでAndroid2.2でも存在していますので、compileSdkVersion
に21以降を指定してコンパイルすれば古い端末でもばっちり動作します。
ネタ元:
http://stackoverflow.com/questions/3018716/android-turn-off-screen-when-close-to-face
以上です。