1

バッテリーのブロードキャスト レシーバーには、次の 3 行のコードがあります。

int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0);
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0);

上記の 3 つの値は、2、2、および 4 になります。

これらの値をデコードして、健康状態など、ユーザーにとって意味のあるものを表示するにはどうすればよいでしょうか。バッテリーの状態が良い、悪い、または交換が必要な場合は、どうすればよいでしょうか。

前もって感謝します

4

2 に答える 2

2

これをバッテリーに使用

switch (health) {
    case BatteryManager.BATTERY_HEALTH_DEAD:

        break;
    case BatteryManager.BATTERY_HEALTH_GOOD:

        break;
    case BatteryManager.BATTERY_HEALTH_COLD:

        break;
    case BatteryManager.BATTERY_HEALTH_OVERHEAT:

        break;
    case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:

        break;

    default:
        break;
    }

プラグインに使用

switch (plugged ) {
    case BatteryManager.BATTERY_PLUGGED_AC:

        break;
    case BatteryManager.BATTERY_PLUGGED_USB:

        break;
    case BatteryManager.BATTERY_PLUGGED_WIRELESS:

        default:
        break;
    }

電圧に使用

switch (voltage) {
    case BatteryManager.BATTERY_STATUS_CHARGING:

        break;
    case BatteryManager.BATTERY_STATUS_DISCHARGING:

        break;
    case BatteryManager.BATTERY_STATUS_FULL:
        break;
    case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
        break;
    case BatteryManager.BATTERY_STATUS_UNKNOWN:
        break;
    default:
        break;
    }
于 2013-10-28T06:26:37.523 に答える
2

onCreateメソッドの下で使用

@Override
public void onCreate() {
    BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
        int scale = -1;
        int level = -1;
        int voltage = -1;
        int temp = -1;
        @Override
        public void onReceive(Context context, Intent intent) {
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
            voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
            Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
        }
    };
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryReceiver, filter);
}

レベル = 20/100 の場合、バッテリー残量は 20%、残りの温度は 320 で、温度は摂氏 32 度です。電圧が 4000 の場合、電圧は 4.000 ボルトです。

于 2013-10-28T06:29:31.513 に答える