20

我使用下面添加的代码来获取 android 设备的连接音频设备。使用 AudioManager api 方法getDevices()并通过耳机、扬声器、耳机等连接设备获得结果。但此getDevices()方法仅在 android api level 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)的设备获取连接的音频设备。

4

1 回答 1

2

在 API 级别 23 之前似乎没有这样的 API,但是可以使用布尔方法来检查是否有某个音频设备处于打开状态:

  • isWiredHeadsetOn()- 在 API 级别 5 中添加,在 API 级别 15 中已弃用
  • isSpeakerphoneOn()- 在 API 级别 1 中添加
  • isBluetoothScoOn()- 在 API 级别 1 中添加
  • isBluetoothA2dpOn()- 在 API 级别 3 中添加,在 API 级别 26 中已弃用

如果在向 AndroidManifest.xml 添加MODIFY_AUDIO_SETTINGS权限时总是出现错误

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

检查后,您可以通过传递或方法来打开关闭设备:truefalse

  • setWiredHeadsetOn()- 在 API 级别 5 中添加,在 API 级别 5 中已弃用
  • setSpeakerphoneOn()- 在 API 级别 1 中添加
  • setBluetoothScoOn()- 在 API 级别 1 中添加
  • setBluetoothA2dpOn()- 在 API 级别 3 中添加,在 API 级别 5 中已弃用
于 2018-09-07T10:51:30.783 回答