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

Активное шумоподавление

Читайте текущие настройки ANC подключённого устройства и изменяйте режим, уровни усиления и плавность перехода.

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

  • Устройство подключено и готово к работе.
  • Устройство поддерживает DeviceANCAPI.
  • Перед включением элементов управления ANC значение ancMode отличается от .unknown.

Реализация с помощью AI

Разработка с AI

Реализуйте этот сценарий с AI

Используйте официальный навык «Настройка шумоподавления AIBuds» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/configure-aibuds-anc. Используйте этот навык, чтобы реализовать «Настройка шумоподавления AIBuds» в данном iOS-проекте и проверить результат.
Открыть официальный навык

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

Swift
import AIBuds
import AIBudsFoundation

Протокол

Настройки и команды определены протоколом DeviceANCAPI.

Swift
/// The protocol for device API that supports Active Noise Cancellation (ANC).
protocol DeviceANCAPI: DeviceAPI {
    /// The current Active Noise Cancellation (ANC) mode of the device.
    var ancMode: ANCMode { get }

    /// The current ANC gain value of the device.
    var ancGain: NSNumber? { get }

    /// The current transparency gain value of the device.
    var transparencyGain: NSNumber? { get }

    /// Indicates whether the ANC fade feature is currently enabled.
    var isAncFadeOn: Bool { get }

    /// Sets the Active Noise Cancellation (ANC) mode for the device.
    /// - Parameters:
    ///   - mode: The desired ANC mode to apply.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: Indicates whether the operation completed successfully.
    ///     - error: An optional error object that provides details if the operation failed; `nil` if the operation succeeded.
    func setAncMode(
        _ mode: ANCMode,
        completion: AIBudsCompletionHandler?
    )

    /// Sets the ANC gain value for the device.
    /// - Parameters:
    ///   - ancGain: The desired ANC gain value to apply.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: Indicates whether the operation completed successfully.
    ///     - error: An optional error object that provides details if the operation failed; `nil` if the operation succeeded.
    func setAncGain(
        _ ancGain: Int,
        completion: AIBudsCompletionHandler?
    )

    /// Sets the transparency gain value for the device.
    /// - Parameters:
    ///   - transparencyGain: The desired transparency gain value to apply.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: Indicates whether the operation completed successfully.
    ///     - error: An optional error object that provides details if the operation failed; `nil` if the operation succeeded.
    func setTransparencyGain(
        _ transparencyGain: Int,
        completion: AIBudsCompletionHandler?
    )

    /// Enables or disables the ANC fade feature for the device.
    /// - Parameters:
    ///   - isOn: A Boolean value indicating whether to enable (`true`) or disable (`false`) the ANC fade feature.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: Indicates whether the operation completed successfully.
    ///     - error: An optional error object that provides details if the operation failed; `nil` if the operation succeeded.
    func setAncFadeOn(
        _ isOn: Bool,
        completion: AIBudsCompletionHandler?
    )
}

Свойства

СвойствоТипОписание
ancModeANCModeТекущий режим ANC.
ancGainNSNumber?Текущий уровень ANC либо nil, если он недоступен.
transparencyGainNSNumber?Текущий уровень прозрачности либо nil, если он недоступен.
isAncFadeOnBool / BOOLВключён ли плавный переход ANC.

Методы экземпляра

МетодНазначение
setAncModeИзменить режим ANC.
setAncGainИзменить уровень ANC.
setTransparencyGainИзменить уровень прозрачности.
setAncFadeOnВключить или отключить плавный переход ANC.

Параметры

ПараметрТипОписание
modeANCMode / AIBudsANCMode.normal, .anc или .transparency. Не передавайте .unknown.
ancGainInt / NSIntegerТребуемый уровень ANC. Текущее демо использует диапазон 0...100; единый диапазон пока не гарантирован открытым SDK.
transparencyGainInt / NSIntegerТребуемый уровень прозрачности. Текущее демо использует диапазон 0...100; единый диапазон пока не гарантирован открытым SDK.
isOnBool / BOOLНужно ли включить плавный переход ANC.
completionAIBudsCompletionHandler?Необязательный обработчик завершения.

Методы не возвращают значение напрямую. Обработчик завершения получает success и необязательный NSError.

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

Чтение текущих настроек

Swift
import AIBuds

guard let device = device as? DeviceANCAPI,
    device.ancMode != .unknown
else {
    print("Device does not support ANC")
    return
}

print("Mode: \(device.ancMode)")
print("ANC gain: \(device.ancGain?.intValue.description ?? "Unavailable")")
print("Transparency gain: \(device.transparencyGain?.intValue.description ?? "Unavailable")")
print("ANC fade: \(device.isAncFadeOn)")

Изменение режима ANC

Swift
device.setAncMode(.anc) { success, error in
    guard success else {
        print("Failed to change ANC mode: \(error?.localizedDescription ?? "Unknown error")")
        return
    }
    print("ANC mode updated")
}

Изменение уровней и плавного перехода

Значения ниже соответствуют текущему демо SDK. Пересмотрите их, когда SDK опубликует ограничения для конкретных устройств.

Swift
device.setAncGain(60, completion: nil)
device.setTransparencyGain(40, completion: nil)
device.setAncFadeOn(true, completion: nil)

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

Если команда завершилась ошибкой, верните интерфейс к значениям, которые сейчас сообщает устройство, и покажите ошибку обработчика, если она доступна. Специальные коды ошибок ANC открытым API не определены.