如何在iOS中获取电池温度详细信息?

我正在获得电池状态和其他人。

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; } } 

现在我试图得到温度细节是否有可能从设备获得电池温度。

兄弟,我为你的问题找到答案,这表明你可以得到并且通常它显示以下状态

 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 

以下显示电池的结果

 { 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; } 

以上内容来自UIDeviceListener

我运行的示例代码我得到的温度低于temparature

在此处输入图像描述

在此处输入图像描述

在EEPowerInformation.m类中,我放置断点并检查它。它被调用并带来有关电池的所有信息。

 - (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 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; } 

最后电池温度的打印结果是

 The battery Temperature is - 3120 

这是不可能的,没有公共API可供查找。 但是我在这里找到了一些答案可能会帮助你, 看一次 。 但是一些私有API你可以得到这个细节。

如果您在Apple Store上部署应用程序 ,则不能使用此示例应用程序 ,但在部署到TestFlight时它可能很有用