Что такое андроид api для получения списка подключенных аудиоустройств?

Я использовал приведенный ниже код, чтобы получить подключенные аудиоустройства для устройства Android. Использовал API-метод getDevices() и получил результат с подключенными устройствами, такими как наушники, динамик, наушники. Но этот getDevices() доступен только для Android API 23 уровня (Marshmallow).

Но мое приложение должно поддерживать с уровня API 21 (Lollipop). Пожалуйста, кто-нибудь может дать мне знать альтернативный API, чтобы получить доступное аудиоустройство для устройства Android.

Код, используемый с уровнем API 23.

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    AudioDeviceInfo[] adi = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
}

Пожалуйста, помогите мне, предоставив способ получить подключенные аудиоустройства для устройств с версией Android OS ниже Marshmallow (уровень API 23).

Ответ 1

Кажется, до API уровня 23 такого API не было, но можно использовать логические методы, чтобы проверить, было ли включено какое-либо аудиоустройство:

  • isWiredHeadsetOn() - добавлено на уровне API 5, устарело на уровне API 14
  • isSpeakerphoneOn() - добавлено на уровне API 1
  • isBluetoothScoOn() - добавлено на уровне API 1
  • isBluetoothA2dpOn() - добавлено на уровне API 3, устарело на уровне API 26

Если вы всегда получаете false, когда добавляете разрешение MODIFY_AUDIO_SETTINGS в AndroidManifest.xml

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 

После проверки вы можете установить устройство включения или выключения, передавая true или false методы:

  • setWiredHeadsetOn() - добавлено на уровне API 5, устарело на уровне API 5
  • setSpeakerphoneOn() - добавлено на уровне API 1
  • setBluetoothScoOn() - добавлено на уровне API 1
  • setBluetoothA2dpOn() - добавлено на уровне API 3, устарело на уровне API 5