HardwarePropertiesManager類提供訪問設備硬件狀態的機制:CPU,GPU和電池溫度,每個內核的CPU使用率,風扇速度等。
API 說明:https://www.apiref.com/android-zh/android/os/HardwarePropertiesManager.html
source code: http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/os/HardwarePropertiesManager.java
常量:
int DEVICE_TEMPERATURE_BATTERY 電池溫度以攝氏度表示。 int DEVICE_TEMPERATURE_CPU CPU的溫度,以攝氏度表示。 int DEVICE_TEMPERATURE_GPU GPU的溫度,以攝氏度表示。 int DEVICE_TEMPERATURE_SKIN 設備皮膚溫度,以攝氏度表示。 int TEMPERATURE_CURRENT 獲取當前溫度。 int TEMPERATURE_SHUTDOWN 獲取關機溫度閾值。 int TEMPERATURE_THROTTLING 獲取節流溫度閾值。 int TEMPERATURE_THROTTLING_BELOW_VR_MIN 獲得節流溫度閾值,高於此溫度閾值將不會滿足VR模式的最低時鍾頻率。 float UNDEFINED_TEMPERATURE 未定義的溫度常數。
方法:
CpuUsageInfo[] getCpuUsages() 為每個核心返回一組CPU使用率信息。 float[] getDeviceTemperatures(int type, int source) 以攝氏度返回設備溫度數組。 float[] getFanSpeeds() 以RPM為單位返回風扇速度數組。
使用實例:
import android.os.HardwarePropertiesManager; private HardwarePropertiesManager mHardwarePropertiesManager; mHardwarePropertiesManager = (HardwarePropertiesManager)context.getSystemService(Context.HARDWARE_PROPERTIES_SERVICE); float[] temps = mHardwarePropertiesManager.getDeviceTemperatures( HardwarePropertiesManager.DEVICE_TEMPERATURE_CPU, HardwarePropertiesManager.TEMPERATURE_CURRENT); for(int i=0; i<temps.length; i++) Log.d(TAG, "CPU Temperatures="+temps[i]);