Androidで携帯電話の電力情報を取得

1906 ワード

現在の携帯電話の電力量を取得する必要があります.この場合、ブロードキャストを使用する必要があります.動的にブロードキャストを登録するときは、BroadcastReceiverクラスのオブジェクトを転送する必要があります.また、IntentFilterを意図的にフィルタする必要があります.通常、カスタムブロードキャストを使用する場合、IntentFilterのactionは任意の形式でカスタマイズできますが、過去のシステムの電力量を必要とする場合は、このシステムを使って私たちに良いactionを提供する必要があります.ACTION_BATTERY_CHANGED.同様に、システムブロードキャストを傍受しているので、ブロードキャストの送信者はシステムであり、変更ブロードキャストを受信するクラスにブロードキャストを登録するだけでよい.
 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

ラジオを書く
package ggcomic.rabbit.lx.ggcomic.broadcastReceiver;
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.TextView;
/***携帯電話システムの残電量を傍受取得*Created by Lx on 2016/9/17. */public class BatteryReceiver extends BroadcastReceiver {     private TextView pow;
    public BatteryReceiver(TextView pow) {         this.pow = pow;     }
@Override public void onReceive(Context context,Intent intent){int current=intent.getExtras().getInt("level");//現在の電力int total=intent.getExtras()/getInt("scale");//総電力int percent=current*100/total;pow.setText(percent+"%");    } }
 
intent.getExtras()メソッドはintentが携帯するBundleの集合を得て、システムは私たちが使用する「level」、「scale」などのフィールドを書いて、それぞれ記憶している現在の電力量と総電力量の情報です.これは約束通りです.Googleの開発エンジニアが書いてくれたので、覚えておけばいいです.ここでは、現在の電力量を1つのコントロールに示す必要があります.そこで、ブロードキャスト受信機の構造関数にコントロールの例を伝えました.現在の電力量と総電力量を取得すると、現在の電力量の残りのパーセントを計算し、コントロールに設定できます.ブロードキャスト受信機をカスタマイズした後、次のようにブロードキャストを受信するクラスにブロードキャストを登録する必要があります.
1 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
2 receiver = new BatteryReceiver(tvElectric);
3 registerReceiver(receiver, filter);

もちろん、動的登録ブロードキャストなので、ライフサイクルのonDestroy()メソッドでブロードキャストの登録をキャンセルすることを忘れないでください.
@Override
protected void onDestroy() {
super.onDestroy();
//放送破棄
unregisterReceiver(receiver);
}