Возможности и уровни громкости
Получите возможности регулировки и доступные сейчас уровни громкости устройства.
Предварительные условия
- Устройство подключено и готово к работе.
- Устройство поддерживает
DeviceVolumeControlAPI.
Справочник API
Фреймворк
AIBuds.xcframework
Импорт
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>Протокол
- Swift
- Objective-C
/// 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 }
}/// The protocol for device volume control API.
@protocol AIBudsDeviceVolumeControlAPI <AIBudsDeviceAPI>
/// The device's volume-set capability.
@property(nonatomic, readonly) enum AIBudsVolumeSetCapability volumeSetCapability;
/// Current volumes information of the device, or `nil` if unavailable.
@property(nonatomic, readonly, strong) AIBudsVolumesInfoModel *_Nullable volumesInfo;
@endСвойства
| Свойство | Тип | Описание |
|---|---|---|
volumeSetCapability | VolumeSetCapability | Возможность регулировки громкости. |
volumesInfo | VolumesInfoModel? | Текущие уровни или nil, если они недоступны. |
Значения возможности
| Значение | Смысл в текущем SDK |
|---|---|
.none | Регулировка громкости недоступна. |
.common | Можно настраивать системные подсказки, медиа и звук звонка. |
.advanced | Снимок также содержит громкость локального воспроизведения, но открытого сеттера для неё пока нет. |
Сведения о громкости
| Свойство | Тип | Диапазон | Описание |
|---|---|---|---|
systemPromptVolume | NSNumber? | 0–100 | Текущая громкость системных подсказок. |
mediaVolume | NSNumber? | 0–100 | Текущая громкость воспроизведения медиа. |
callVolume | NSNumber? | 0–100 | Текущая громкость звонка. |
localPlaybackVolume | NSNumber? | 0–100 | Текущая громкость локального воспроизведения; в открытом API доступна только для чтения. |
Примеры использования
- Swift
- Objective-C
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")")
}#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
id<AIBudsDeviceVolumeControlAPI> device = (id<AIBudsDeviceVolumeControlAPI>)self.device;
if ([device conformsToProtocol:@protocol(AIBudsDeviceVolumeControlAPI)]) {
AIBudsVolumesInfoModel *volumes = device.volumesInfo;
NSLog(@"System prompt: %@", volumes.systemPromptVolume);
NSLog(@"Media: %@", volumes.mediaVolume);
NSLog(@"Call: %@", volumes.callVolume);
NSLog(@"Local playback: %@", volumes.localPlaybackVolume);
}Обработка ошибок
У этих свойств нет обработчика завершения. Обрабатывайте неподдерживаемый протокол, модель nil и значения nil отдельных каналов, не подставляя вымышленные значения по умолчанию.
Рекомендации
- Сохраняйте необязательность: не показывайте
nilкак ноль. - Учитывайте возможность в интерфейсе: скрывайте все элементы изменения для
.none. - Следите за обновлениями: при необходимости актуальных значений обновляйтесь из
didVolumesChanged.
Примечания
- SDK предоставляет синхронные свойства, а не
getVolumeControlSupportили запрос на основеResult. - Громкость локального воспроизведения сейчас можно читать, но нельзя изменять отдельно.