1

実際の電流、電圧などのAndroidデバイスのバッテリーに関する情報を取得しようとしています...電圧、レベルの取得に成功しました...しかし、残念ながら、API 16で実行される電話があり、パラメーターBatteryManager.BATTERY_PROPERTY_CURRENT_NOWはありません' API 21 で表示されるため、この API には存在しません。

では、たとえばこのデバイスの現在の情報とバッテリー容量の情報を取得するにはどうすればよいでしょうか?

前もって感謝します。

4

2 に答える 2

2

BatteryManager は API 16 で動作するため、次のユーティリティが役立ちます。

package com.example.utils;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;

import com.example.app.AppContext;
import com.example.app.AppManager;

public class BatteryUtils {

    public static Intent getBatteryIntent() {
        IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        return AppContext.getInstance().registerReceiver(null, ifilter);
    }

    public static int getScale(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
    }

    public static int getLevel(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    }

    public static int getChargeStatus(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
    }

    public static boolean isCharging(int status) {
        return status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
    }

    public static boolean isCharging(Intent intent) {
        int status = getChargeStatus(intent);
        return isCharging(status);
    }

    public static void test() {
        Intent intent = BatteryUtils.getBatteryIntent();
        DebugUtils.log("isCharging:" + BatteryUtils.isCharging(intent) + ";level:" + BatteryUtils.getLevel(intent) + ";Scale:" + BatteryUtils.getScale(intent));
    }

}
于 2016-07-12T15:46:38.327 に答える
1

BatteryManager を使用してみてください。API 16 で動作します。

https://developer.android.com/reference/android/os/BatteryManager.html

それを使用すると、ステータス(充電中、フル、放電)、容量、USBまたはワイヤレスで充電しているかどうか、バッテリーの状態などを取得できます

于 2016-07-12T15:42:57.460 に答える