[android][error] BatteryService 패치

  • 위치 : frameworks/base/services/jni
  • 파일 : com_android_server_BatteryService.cpp
  • 에러메세지 :
    1. E/BatteryService( 1866): Could not open '/junk_battery/class/power_supply/battery/status'

    2. W/BatteryService( 1866): Unknown battery health[2] '100'

  • 패치 내용 :
static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{
#if 0
    setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
    setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
    setBooleanField(env, obj, BATTERY_PRESENT_PATH, gFieldIds.mBatteryPresent);
   
    setIntField(env, obj, BATTERY_CAPACITY_PATH, gFieldIds.mBatteryLevel);
    setIntField(env, obj, BATTERY_VOLTAGE_PATH, gFieldIds.mBatteryVoltage);
    setIntField(env, obj, BATTERY_TEMPERATURE_PATH, gFieldIds.mBatteryTemperature);
   
    const int SIZE = 128;
    char buf[SIZE];
   
    if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf));
   
    if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf));

    if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf));
#else
    env->SetBooleanField(obj, gFieldIds.mAcOnline, true);
    env->SetBooleanField(obj, gFieldIds.mUsbOnline, false);
    env->SetBooleanField(obj, gFieldIds.mBatteryPresent, false);

    env->SetIntField(obj, gFieldIds.mBatteryLevel, 100);
    env->SetIntField(obj, gFieldIds.mBatteryVoltage, 15);
    env->SetIntField(obj, gFieldIds.mBatteryTemperature, 20);

    const int SIZE = 128;
    char buf[SIZE];
   
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus("F"));
   
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth("G"));

        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF("Nemus"));
#endif
}