Я пытаюсь получить данные с подключенного устройства Bluetooth (например, уровни звука).
Устройство подключено к моему Mac и работает нормально.Устройство поддерживает HFP (профиль громкой связи), который я хочу использовать для получения некоторой информации об устройстве.
Вот код:
func connect()
{
if let bluetoothDevice = IOBluetoothDevice(addressString: "Bluetooth Device ID")
{
if !bluetoothDevice.isPaired() || !bluetoothDevice.isConnected() { continue }
// Device is connected and paired, everything works fine until here.
if bluetoothDevice.isHandsFreeDevice
{
// This line will also be executed, so the device supports the HFP.
let handsFree = IOBluetoothHandsFree(device: bluetoothDevice, delegate: self)
// handsFree?.connect()
// Swift.print(handsFree?.isConnected) // returns false.
let batteryValue = handsFree?.indicator(IOBluetoothHandsFreeIndicatorBattChg)
Swift.print(batteryValue) // Always returns zero, can't be true.
Swift.print(handsFree?.outputVolume) // Always returns 0.5.
}
}
}
extension Controller : IOBluetoothHandsFreeDelegate
{
func handsFree(_ device: IOBluetoothHandsFree!, disconnected status: NSNumber!)
{
Swift.print("disconnected")
}
func handsFree(_ device: IOBluetoothHandsFree!, scoConnectionClosed status: NSNumber!)
{
Swift.print("scoConnectionClosed")
}
func handsFree(_ device: IOBluetoothHandsFree!, scoConnectionOpened status: NSNumber!)
{
Swift.print("scoConnectionOpened")
}
func handsFree(_ device: IOBluetoothHandsFree!, connected status: NSNumber!)
{
Swift.print("connected status: " + status.description)
}
func handsFree(_ device: IOBluetoothHandsFreeDevice!, batteryCharge: NSNumber!)
{
Swift.print("batteryCharge: " + batteryCharge.description)
}
}
При выполнении строки
let handsFree = IOBluetoothHandsFree(device: bluetoothDevice, delegate: self)
Я получаю следующие ошибки:
Подклассы должны переопределить (IOBluetoothSDPUUID *) deviceUUID Подклассы должны переопределить (IOBluetoothSDPUUID *) localUUID Получена ошибка от IOServiceOpen () - 0xe00002c7.NULLing из io_service_t.[AudioHAL_Client] AudioHardware.cpp: 1046: AudioObjectAddPropertyListener: AudioObjectAddPropertyListener: нет объекта с заданным идентификатором 0
Я предполагаю, что свойства должны быть переопределены в делегате, но такого свойства нет.Чего мне не хватает?Как правильно подключиться к устройствам (или использовать уже подключенные устройства) для связи с ними?