Android Marketには、FlashLightという名前(または、それに似た名前)の懐中電灯アプリが、たくさん公開されています。
FlashLightとは
画面全体を白色などの塗りつぶしで表示し、携帯のバックライトを懐中電灯として使うためのアプリケーション。
以前、まいむぞう先生の「照明スイッチからベッドまでのお供に「Flashlight」 | Androidあぷぷ -Androidのオススメアプリ情報を毎日お届け-」
という記事でも紹介されていました。

FlashLight仕様(機能)
実際に実機にインストールして仕様を調べてみたところ、以下のような機能がありました。
- フルスクリーンで単一色(一般的には、白)の塗りつぶしを表示する
- 任意の色に変更する
- タッチされている間だけ色を変更する
- 自動的に複数の色を変更させることにより、点滅表示する
- (画面の)明るさを変更する
FlashLightを自作する
なるほど、こんな簡単な仕様なら、自分でも作れそうだということで、作成してみたところ、結構ハマリました。。。
まず、最初にハマったのが、フルスクリーン表示。
フルスクリーン表示しているアプリってあったかと考え、
そういえば、デフォルトでインストールされている「Camera」アプリがそうだったと思い出し、
packages\apps\Camera\src\com\android\camera\ViewImage.java
[platform/packages/apps/Camera.git] / src / com / android / camera / ViewImage.java
に、それらしきコードがあることを発見し、解決。
※解決方法は、「フルスクリーン(Full Screen)/全画面表示をするには - 逆引きAndroid入門」へ掲載しました
※トラックバックをいただいていたサイト内の「完全にフルスクリーンにしたい - Androidで開発してみたい - android-dev」でも発見
そして次にハマったのが、色選択(カラーピッカー)。
今更ながら、Android SDKには、標準のウィジットがないことに気付きました。。。
こちらも、どっかで見たはず、と記憶をたどり、
Android SDKに同梱されている「API Demos」サンプルアプリの「Graphics」 > 「FingerPaint」で使用されている
ColorPickerDialogクラスがあったことを思い出しました。ソースコードは、こちら、
platforms\android-1.5\samples\ApiDemos\src\com\example\android\apis\graphic\ColorPickerDialog.java
しかしながら、このクラスは、com.example.android.apis.graphicsパッケージにあったため、今回は、実装を見送りました。。。
そして最後の難関が、画面の明るさの変更。
こちらも、どっかで見たはず、と記憶をたどり、
デフォルトでインストールされている「Settings」アプリの「Sound & Display」 > 「Brightness」で実現されていたことに気づき、
packages\apps\Settings\src\com\android\settings\BrightnessPreference.java
[platform/packages/apps/Settings.git] / src / com / android / settings / BrightnessPreference.java
に、それらしきコードがあることを発見。
しかしながら、その実装方法は、非公開APIを使用していたため、断念し、
再度、gitからrepoで落としてきたAndroidのソースコードを、brightnessで全検索し、
development\apps\Development\src\com\android\development\PointerLocation.java
[platform/development.git] / apps / Development / src / com / android / development / PointerLocation.java
に、もっと良い方法があることを発見。
※解決方法は、「画面の明るさ(Screen brightness)を変更するには - 逆引きAndroid入門」(長文)に掲載しました
(こんなとこにも、Android SDK 1.5 の変更があるとは。。。)
そして最後のオチ。
色々苦労した結果、原稿を書きあげ、仕上げにGoogle検索で、原稿をチェックしていたところ、
以下にズバリの記事/コードがありました。。。
- http://groups.google.co.jp/group/android-developers/browse_thread/thread/6de1cb84596a1c9b/cdf976ab4602c6b0?hl=ja&ie=UTF-8&q=android+screen+brightness#
- http://code.google.com/p/openintents/source/browse/trunk/Flashlight/src/org/openintents/flashlight/Flashlight.java?spec=svn1354&r=1354
- http://almondmendoza.com/2009/01/05/changing-the-screen-brightness-programatically/
