電話のプログラミングLED



Android APIでは、LEDインジケータまたはカメラのフラッシュを直接オンまたはオフにすることはできませんが、一部の電話にはこの機能があります。



カラフルなライトでプログラム的に点滅する方法、独自の「フラッシュライト」の書き方、またはデバイスの他のLEDを制御する方法については、以下で詳しく説明します。



それはすべて、 ES Explorerを使用してHTC Desireのファイルシステムを調べているときに、 /sys/class/leds/blue



/sys/class/leds/flashlight



などの不思議なディレクトリに偶然出会ったときに始まりました

青は他に何ですか?! オレンジ色と緑色のインジケータのみが表示されました。 しかし、最も興味深いのは、これらのディレクトリ内で書き込み権限を持つbrightness



ファイルであることが判明したことです! 私がすぐに利用したこと。



実際、これは単純なファイルではなく、LEDドライバーを操作するためのインターフェイスです。 したがって、ファイル/sys/class/leds/blue/brightness



に正の数を書き込むと、電話機の本体の青いインジケータがオンになり、0が書き込まれます。 同様に、黄色と緑色のインジケータがあります。 2つのLEDを同時にオンにすると、新しい色が得られます。: 色+青=紫; 緑+青=アクア。

/ sys / class / ledsのサブディレクトリ 責任は何ですか
液晶バックライト バックライトの輝度を表示します。 0〜255の数値が明るさファイルに書き込まれます。多いほど明るくなります。
懐中電灯 フラッシュLEDの明るさ。 可能な値:0、127、128、255。
ボタンバックライト ボタン照明(オン/オフ)。
mber色

緑色

オレンジ、緑、青のインジケータ(オン/オフ)、

マゼンタ(アンバー+ブルー)およびシアン(グリーン+ブルー)インジケーターと同様に。


そして今、それはすべてどのようにプログラムされていますか


public void ledControl(String name, int brightness) {<br>

try {<br>

FileWriter fw = new FileWriter( "/sys/class/leds/" + name + "/brightness" );<br>

fw.write(Integer.toString(brightness));<br>

fw.close();<br>

} catch (Exception e) {<br>

// LED <br>

}<br>

}<br>

<br>

// <br>

ledControl( "amber" , 255 );<br>

ledControl( "blue" , 255 );<br>

<br>

// <br>

ledControl( "lcd-backlight" , 30 );<br>

<br>

// <br>

ledControl( "button-backlight" , 0 );<br>

<br>

// <br>

ledControl( "flashlight" , 128 );<br>







ソースコード付きのサンプルアプリケーションはこちらからダウンロードできます





おわりに


それだけです! 今、電話はクリスマスツリーのように光ります。 コードはAndroid 2.2を実行しているHTC Desireでのみテストされましたが、おそらく他のデバイスでも動作します。 お使いの携帯電話に焦点が合っているかどうか私に書いてください。



All Articles