-3

受信してアクティビティに登録しACTION_BATTERY_LOWACTION_BATTERY_OKAYこれに従っていくつかの動作を変更しました。

しかし、アクティビティが開始されたときの初期状態を知りたいです。現在、私は次のコードでそれを行います:

Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
boolean batteryLow = 
    (status == BatteryManager.BATTERY_STATUS_DISCHARGING 
           || status == BatteryManager.BATTERY_STATUS_NOT_CHARGING)
    && level * 100 / scale < 15;

このコードはあまりにも冗長であり、Android が低いと考えているものとは異なる可能性があります。たとえばstatus==discharging、telnet に「power ac off」コマンドを発行すると、エミュレーターは を報告しません。「電源ステータス放電」も発行する必要があります。実際のデバイスについてはわかりません。

他に方法はありますか?

4

2 に答える 2

-1

私が知ったように、問題のコードは可能な限り単純なものです。警告はバッテリー レベル 15% で表示され、この値はパブリック API からは取得できません。画面が暗くなると、別のレベルの 10% もあります。これらの値はビルド時に定義されます。一部のメーカーや Android のバージョンによって変更される可能性があります。

この回答も参照してください。

于 2014-06-04T12:34:21.647 に答える