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

Возможности и уровни громкости

Получите возможности регулировки и доступные сейчас уровни громкости устройства.

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

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

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

Swift
import AIBuds

Протокол

Swift
/// The protocol for device volume control API.
protocol DeviceVolumeControlAPI: DeviceAPI {
    /// The device's volume-set capability.
    var volumeSetCapability: VolumeSetCapability { get }

    /// Current volumes information of the device, or `nil` if unavailable.
    var volumesInfo: VolumesInfoModel? { get }
}

Свойства

СвойствоТипОписание
volumeSetCapabilityVolumeSetCapabilityВозможность регулировки громкости.
volumesInfoVolumesInfoModel?Текущие уровни или nil, если они недоступны.

Значения возможности

ЗначениеСмысл в текущем SDK
.noneРегулировка громкости недоступна.
.commonМожно настраивать системные подсказки, медиа и звук звонка.
.advancedСнимок также содержит громкость локального воспроизведения, но открытого сеттера для неё пока нет.

Сведения о громкости

СвойствоТипДиапазонОписание
systemPromptVolumeNSNumber?0–100Текущая громкость системных подсказок.
mediaVolumeNSNumber?0–100Текущая громкость воспроизведения медиа.
callVolumeNSNumber?0–100Текущая громкость звонка.
localPlaybackVolumeNSNumber?0–100Текущая громкость локального воспроизведения; в открытом API доступна только для чтения.

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

Swift
import AIBuds

guard let device = device as? DeviceVolumeControlAPI else {
    print("Device does not support volume control")
    return
}

print("Capability: \(device.volumeSetCapability)")

if let volumes = device.volumesInfo {
    print("System prompt: \(volumes.systemPromptVolume?.intValue.description ?? "Unavailable")")
    print("Media: \(volumes.mediaVolume?.intValue.description ?? "Unavailable")")
    print("Call: \(volumes.callVolume?.intValue.description ?? "Unavailable")")
    print("Local playback: \(volumes.localPlaybackVolume?.intValue.description ?? "Unavailable")")
}

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

У этих свойств нет обработчика завершения. Обрабатывайте неподдерживаемый протокол, модель nil и значения nil отдельных каналов, не подставляя вымышленные значения по умолчанию.

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

  1. Сохраняйте необязательность: не показывайте nil как ноль.
  2. Учитывайте возможность в интерфейсе: скрывайте все элементы изменения для .none.
  3. Следите за обновлениями: при необходимости актуальных значений обновляйтесь из didVolumesChanged.

Примечания

  • SDK предоставляет синхронные свойства, а не getVolumeControlSupport или запрос на основе Result.
  • Громкость локального воспроизведения сейчас можно читать, но нельзя изменять отдельно.