【问题标题】:How to use powerHint in an android application?如何在 Android 应用程序中使用 powerHint?
【发布时间】:2015-07-03 10:57:06
【问题描述】:
我正在优化功耗。
是否可以从应用程序中调用PowerManagerService 中的powerHint?
我怎么称呼它?有没有办法通过下面的pm调用方法?
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
【问题讨论】:
标签:
java
android
power-management
android-powermanager
【解决方案1】:
IPowerManager.powerHint() 方法只是 PowerHAL 的 powerHint() 到 nativePowerHint() 的包装函数。
static void nativeSendPowerHint(JNIEnv *env, jclass clazz, jint hintId, jint data)
{
int data_param = data;
if (gPowerModule && gPowerModule->powerHint) {
if(data)
gPowerModule->powerHint(gPowerModule, (power_hint_t)hintId, &data_param);
else {
gPowerModule->powerHint(gPowerModule, (power_hint_t)hintId, NULL);
}
}
}
如果您希望 HAL 做某事,您应该实现自己的与 hintId 相关的操作,例如 POWER_HINT_INTERACTION、POWER_HINT_LOW_POWER 等。
我认为直接调用 powerHint() 是 SDK 实现区域的一部分。参考these会谈。
【解决方案2】:
它不是 SDK 的一部分。因此,apk 无法调用它。它是自动管理的。
如果你想管理它,修改你的目标......
powerHint 用于破坏用户交互或正在进行的图形活动(UI / UX 动画)的性能
除了您应该查看 powerHAL 的示例实现以了解人们如何为特定硬件实现它并为您的硬件模仿它们之外,没有什么可说的了。准备好后,您只需添加“力量”。到您设备的 AndroidProducts.mk(或 AndroidProducts 包含的 mk 文件)中的 PRODUCT_PACKAGES 列表中,并且您有一个 Power HAL。
来自http://thegnar.org/sync/?p=275