gpt4 book ai didi

swift - 如何使用 Swift 和 AppKit(适用于 MacOS 的 Xcode)获取 IOBluetoothDevice 的电池电量

转载 作者:行者123 更新时间:2023-12-03 16:04:09 26 4
gpt4 key购买 nike

我正在使用Xcode开发一个MacOS应用程序,基于CocoaAppKit,用<强> swift 。

我正在使用IOBluetoothDevice我的应用程序中包含多个对象,并且我希望能够显示设备的电池电量(如果可以的话)。

我希望电池电量在操作系统的蓝牙设置中可见的设备(见下图)也可以通过编程方式访问(例如 AirPods、妙控键盘等)。但是,我在任何地方都找不到这个。

我也考虑过执行终端命令,发现 this thread ,但它也不起作用。

谢谢

Bluetooth device battery level available to the OS

最佳答案

您可以使用 IOKit 从 IORegistry 获取蓝牙设备的电池电量。

这是获取 Magic Trackpad 2 电池电量的简单示例

import IOKit

var serialPortIterator = io_iterator_t()
var object : io_object_t
let port: mach_port_t
if #available(macOS 12.0, *) {
port = kIOMainPortDefault // New name in macOS 12 and higher
} else {
port = kIOMasterPortDefault // Old name in macOS 11 and lower
}
let matchingDict : CFDictionary = IOServiceMatching("AppleDeviceManagementHIDEventService")
let kernResult = IOServiceGetMatchingServices(port, matchingDict, &serialPortIterator)

if KERN_SUCCESS == kernResult {
repeat {
object = IOIteratorNext(serialPortIterator)
if object != 0, let percent = IORegistryEntryCreateCFProperty(object, "BatteryPercent" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Int {
print(percent)
break
}
} while object != 0
IOObjectRelease(object)
}
IOObjectRelease(serialPortIterator)

对于其他设备,您必须将 AppleDeviceManagementHIDEventServiceTrackpad2 替换为适当的值。您可以使用 ioreg -l 在 Terminal.app 中显示整个 IORegistry。

关于swift - 如何使用 Swift 和 AppKit(适用于 MacOS 的 Xcode)获取 IOBluetoothDevice 的电池电量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55785359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com