電話のプログラミング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でのみテストされましたが、おそらく他のデバイスでも動作します。 お使いの携帯電話に焦点が合っているかどうか私に書いてください。

Source: https://habr.com/ru/post/J104627/


All Articles