Перейти к основному содержимому

Состояние распознавания ношения

Получите включённое состояние функции и сведения о том, надет ли сейчас ни один, один или оба наушника.

Предварительные условия

  • Устройство подключено и готово к работе.
  • Устройство поддерживает DeviceWearDetectionAPI.

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

Swift
import AIBuds

Протокол

Swift
/// The protocol for device wear detection API.
protocol DeviceWearDetectionAPI: DeviceAPI {
    /// Indicates whether wear detection is currently enabled
    var isWearDetectionEnabled: Bool { get }

    /// The current wear status of the device.
    var wearStatus: WearStatus { get }
}

Свойства

СвойствоТипОписание
isWearDetectionEnabledBool / BOOLВключено ли распознавание ношения сейчас.
wearStatusWearStatusТекущее состояние ношения левого и правого наушника.

Значения состояния ношения

SwiftObjective-CСмысл
.unknownAIBudsWearStatusUnknownСостояние ношения неизвестно.
.notWearingAIBudsWearStatusNotWearingНи один наушник не надет.
.leftWearingAIBudsWearStatusLeftWearingНадет только левый наушник.
.rightWearingAIBudsWearStatusRightWearingНадет только правый наушник.
.bothWearingAIBudsWearStatusBothWearingНадеты оба наушника.

Примеры использования

Swift
import AIBuds

guard let device = device as? DeviceWearDetectionAPI else {
    print("Device does not support wear detection")
    return
}

print("Wear detection enabled: \(device.isWearDetectionEnabled)")

switch device.wearStatus {
case .unknown:
    print("Wear state is unknown")
case .notWearing:
    print("Neither side is worn")
case .leftWearing:
    print("Only the left side is worn")
case .rightWearing:
    print("Only the right side is worn")
case .bothWearing:
    print("Both sides are worn")
@unknown default:
    print("Unsupported wear-state value")
}

Обработка ошибок

Это синхронные свойства-снимки, не возвращающие ошибок. Явно обрабатывайте неподдерживаемый протокол и .unknown. Состояние может измениться после чтения.

Рекомендации

  1. Разделяйте включённое состояние и ношение: false и .notWearing описывают разные понятия.
  2. Следите за обновлениями: реализуйте didWearDetectionEnabledChanged и didWearStatusChanged, если интерфейс должен оставаться актуальным.
  3. Обновляйте интерфейс в главном потоке: при необходимости направляйте изменения из делегата в главную очередь.

Примечания

  • SDK предоставляет свойства, а не getWearDetectionSwitchStatus или запросы на основе Result.
  • .unknown нельзя отображать как «не надето».