iosobjective-cuidevice

How to get the battery temperature details in iOS?


I am getting battery status and others .

UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
float batLeft = [myDevice batteryLevel];
int i=[myDevice batteryState];

int batinfo=(batLeft*100);

NSLog(@"Battry Level is :%d and Battery Status is :%d",batinfo,i);

switch (i)
{
    case UIDeviceBatteryStateUnplugged:
    {

        break;
    }
    case UIDeviceBatteryStateCharging:
    {

        break;
    }
    case UIDeviceBatteryStateFull:
    {

        break;
    }
    default:
    {

        break;
    }
}

Now i am trying to get the temperature details is it possible to get the battery temperature from device .


Solution

  • Brother I gone through the answer for your question and which indicates that you can get and generally it shows the following states

    Battery design capacity
    Battery current raw capacity (in mAh)
    Battery cycle count
    Current battery temperature
    Current battery voltage
    Current battery discharge rate (device power consumption), in mA
    

    Also following shows the results of battery

    {
    AdapterDetails =     {
        Amperage = 1000;
        Description = "usb host";
        FamilyCode = "-536854528";
        PMUConfiguration = 1000;
        Watts = 5;
    };
    AdapterInfo = 16384;
    Amperage = 1000;
    AppleRawCurrentCapacity = 1279;
    AppleRawMaxCapacity = 1275;
    AtCriticalLevel = 0;
    AtWarnLevel = 0;
    BatteryData =     {
        BatterySerialNumber = REDACTED;
        ChemID = 355;
        CycleCount = 524;
        DesignCapacity = 1420;
        Flags = 640;
        FullAvailableCapacity = 1325;
        ManufactureDate = REDACTED;
        MaxCapacity = 1273;
        MfgData = REDACTED;
        QmaxCell0 = 1350;
        StateOfCharge = 100;
        Voltage = 4194;
    };
    BatteryInstalled = 1;
    BatteryKey = "0003-default";
    BootBBCapacity = 52;
    BootCapacityEstimate = 2;
    BootVoltage = 3518;
    CFBundleIdentifier = "com.apple.driver.AppleD1815PMU";
    ChargerConfiguration = 990;
    CurrentCapacity = 1275;
    CycleCount = 524;
    DesignCapacity = 1420;
    ExternalChargeCapable = 1;
    ExternalConnected = 1;
    FullyCharged = 1;
    IOClass = AppleD1815PMUPowerSource;
    IOFunctionParent64000000 = <>;
    IOGeneralInterest = "IOCommand is not serializable";
    IOInterruptControllers =     (
        IOInterruptController34000000,
        IOInterruptController34000000,
        IOInterruptController34000000,
        IOInterruptController34000000
    );
    IOInterruptSpecifiers =     (
        <03000000>,
        <26000000>,
        <04000000>,
        <24000000>
    );
    IOMatchCategory = AppleD1815PMUPowerSource;
    IOPowerManagement =     {
        CurrentPowerState = 2;
        DevicePowerState = 2;
        MaxPowerState = 2;
    };
    IOProbeScore = 0;
    IOProviderClass = AppleD1815PMU;
    InstantAmperage = 0;
    IsCharging = 0;
    Location = 0;
    Manufacturer = A;
    MaxCapacity = 1275;
    Model = "0003-A";
    Serial = REDACTED;
    Temperature = 2590;
    TimeRemaining = 0;
    UpdateTime = 1461830702;
    Voltage = 4182;
    "battery-data" =     {
        "0003-default" = <...>;
        "0004-default" = <...>;
        "0005-default" = <...};
    "built-in" = 1;
    }
    

    Above things are from UIDeviceListener

    I run with sample code I got below temparature

    enter image description here

    enter image description here

    in EEPowerInformation.m class I put the breakpoint and check that.It is called and brings all information about battery.

    - (void) listenerDataUpdated: (NSNotification *) notification
    {
      latestPowerDictionary = notification.userInfo;
      NSLog(@"The latest Power Dictionary is - %@",latestPowerDictionary);
      NSLog(@"The battery Temperature is - %@",[latestPowerDictionary objectForKey:@"Temperature"]);
      if (self.delegate != nil)
        [self.delegate powerInformationUpdated: self];
    }
    

    The Printed Statements are

    The latest Power Dictionary is - {
    AdapterDetails =     {
        Amperage = 1000;
        Description = "usb host";
        FamilyCode = "-536854528";
        PMUConfiguration = 970;
        Watts = 5;
    };
    AdapterInfo = 16384;
    Amperage = 1000;
    AppleChargeRateLimitIndex = 0;
    AppleRawBrickIDVoltages =     (
                (
            39,
            420
        )
    );
    AppleRawCurrentCapacity = 1084;
    AppleRawExternalConnected = 1;
    AppleRawMaxCapacity = 1221;
    AtCriticalLevel = 0;
    AtWarnLevel = 0;
    BatteryInstalled = 1;
    BatteryKey = "0003-default";
    BootBBCapacity = 673;
    BootCapacityEstimate = 29;
    BootVoltage = 3810;
    CFBundleIdentifier = "com.apple.driver.AppleARMPlatform";
    ChargerConfiguration = 900;
    CurrentCapacity = 1222;
    CycleCount = 343;
    DesignCapacity = 1430;
    ExternalChargeCapable = 1;
    ExternalConnected = 1;
    FullyCharged = 0;
    IOClass = AppleARMPMUCharger;
    IOFunctionParent5E000000 = <>;
    IOGeneralInterest = "IOCommand is not serializable";
    IOMatchCategory = IODefaultMatchCategory;
    IONameMatch = charger;
    IONameMatched = charger;
    IOPowerManagement =     {
        CapabilityFlags = 32832;
        CurrentPowerState = 2;
        DevicePowerState = 2;
        MaxPowerState = 2;
    };
    IOProbeScore = 1000;
    IOProviderClass = IOService;
    InstantAmperage = 198;
    IsCharging = 1;
    Location = 0;
    Manufacturer = A;
    MaxCapacity = 1300;
    Model = "0003-A";
    Temperature = 3120;
    TimeRemaining = 67;
    UpdateTime = 1470665642;
    Voltage = 4188;
    "built-in" = 1;
    }
    

    Finally the Printed result of battery Temperature is

    The battery Temperature is - 3120