我想设置一个Playground,以获取Macbook的电池状态。
我已经尝试了以下方法:
import Cocoa
import IOKit
import Foundation
var blob = IOPSCopyPowerSourcesInfo()
我目前收到如下错误
使用未解决的标识符“ IOPSCopyPowerSourcesInfo”
它在Playground中不起作用,但在真实的应用程序中起作用。
但是,我只能IOPowerSources.h
用Swift 无法访问头文件import IOKit
:我不得不与Objective-C建立桥梁。
这是我的解决方案:
添加IOKit.framework
到您的项目(单击+
进入Linked Frameworks and Libraries
)
.m
无论名称如何,都创建一个新的空文件。然后,Xcode将询问是否应创建“桥接标头”。说是。
忽略.m
文件。在YOURAPPNAME-Bridging-Header.h
Xcode刚刚创建的新文件中,添加该行#import <IOKit/ps/IOPowerSources.h>
(不要import IOKit
在您的Swift文件中添加)
您现在可以访问大多数IOPowerSources
功能。
例:
func getBatteryStatus() -> String {
let timeRemaining: CFTimeInterval = IOPSGetTimeRemainingEstimate()
if timeRemaining == -2.0 {
return "Plugged"
} else if timeRemaining == -1.0 {
return "Recently unplugged"
} else {
let minutes = timeRemaining / 60
return "Time remaining: \(minutes) minutes"
}
}
let batteryStatus = getBatteryStatus()
print(batteryStatus)
注意:我无法像
这样访问常量kIOPSTimeRemainingUnlimited
,kIOPSTimeRemainingUnknown
因此我使用了它们的原始值(-2.0和-1.0),但是如果这些常量仍然存在于某个地方,那将更好。
又如 ,具有IOPSCopyPowerSourcesInfo
:
let blob = IOPSCopyPowerSourcesInfo()
let list = IOPSCopyPowerSourcesList(blob.takeRetainedValue())
print(list.takeRetainedValue())
结果:
=内部; 类型= InternalBattery; } )
问题内容: 如何获得电池电量和状态(插入,放电,充电等)?我研究了开发人员文档,并找到了BatteryManager类。但是它不包含任何方法,仅包含常量。我什至如何使用它? 问题答案: 这是一个代码示例,解释了如何获取电池信息。 综上所述,动态地设置了该意图的广播接收器,因为只有通过使用显式注册它才能通过清单中声明的组件来接收它。
问题内容: 我想弄清楚当前的电池容量和设计容量。 到目前为止,我能使用的是Win32_Battery()类,该类不能提供我需要的所有信息(至少在我的系统上不提供)。我为此使用了纯Python的wmi库。 另一方面,我发现此方法在Python中有效,如何检测计算机是否由电池供电?,但是很遗憾,它也没有提供有关“容量”的任何信息。 为此,电池信息结构和电池状态结构似乎很完美。现在,我知道必须使用D
实现很漂亮的电池柱状图Demo,有三维效果。有3种自定义样式,可以进行扩展。 [Code4App.com]
问题内容: 我刚启动Swift,一直在寻找一种检查电池电量的方法。我找到了该资源并一直在使用它,但是由于某种原因似乎无法使它正常工作。 我不太确定如何解决此问题。有任何想法吗? 问题答案: Xcode 11•Swift 5.1 首先只需启用电池监控: 然后,您可以创建一个计算属性以返回电池电量: 电池电量从0.0(完全放电)到1.0(100%充电)。访问此属性之前,请确保已启用电池监视。如果未启用
问题内容: 表现: 在此代码中,Toast始终显示“不收费!”。我在实际设备上进行了测试,将其插入交流或USB电源时,它仍显示“ Not Charging!”(未充电!)。吐司 问题答案: 您无法通过清单进行注册,因此您不会收到这些广播。您正在尝试从中获得额外收入,而这些没有额外收入(例如)。结果,您将获得默认值。
我正在尝试构建一个应用程序,以获取当前连接的蓝牙耳机的电池电量。此应用程序可以在没有内置此功能的手机上使用 在stackoverflow上搜索时,我发现如何在android中获取蓝牙耳机电池状态这个问题。我使用BluetoothProfile获得了当前连接的蓝牙耳机。耳机情景模式 但是在BluetoothDevice类型的device对象中,我看不到任何获取蓝牙耳机电池电量的方法或属性 我可以获取