本指南将介绍 Wear OS 上的应用如何使用熟悉的 Android API 播放音频。
检测音频设备
Wear OS 应用首先必须检测穿戴式设备是否具有合适的音频输出方式。对开发者来说,穿戴式设备可能会具有以下音频输出方式中的一种或两种:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
:在具有内置扬声器的设备上AudioDeviceInfo.TYPE_BLUETOOTH_A2DP
:如果蓝牙耳机已配对并连接
在以下示例中,应用结合使用 getDevices()
方法与 FEATURE_AUDIO_OUTPUT
的值,枚举所有音频输出方式。
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); fun audioOutputAvailable(type: Int): Boolean { if (!packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) { return false } return audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS).any { it.type == type } } audioOutputAvailable(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) // True if the device has a speaker audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) // True if a Bluetooth headset is connected
等待连接蓝牙耳机
与内置扬声器(只要设备配备便始终可用)不同,蓝牙耳机可在应用运行时配对或取消配对。应用可使用 registerAudioDeviceCallback
注册回调来检测发生这种情况的时间:
audioManager.registerAudioDeviceCallback(object : AudioDeviceCallback() { override fun onAudioDevicesAdded(addedDevices: Array<out AudioDeviceInfo>?) { super.onAudioDevicesAdded(addedDevices) if (audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)) { // A Bluetooth headset has just been connected } } override fun onAudioDevicesRemoved(removedDevices: Array<out AudioDeviceInfo>?) { super.onAudioDevicesRemoved(removedDevices) if (!audioOutputAvailable(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)) { // A Bluetooth headset is no longer connected } } }, null)
提示用户连接耳机
如果应用需要使用耳机才能继续操作,请提出将用户直接转到蓝牙设置,以便他们更轻松地建立连接,而不要向用户显示错误消息。使用 ACTION_BLUETOOTH_SETTINGS
发送 intent 可以做到这一点:
val intent = with (Intent(Settings.ACTION_BLUETOOTH_SETTINGS)) { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) putExtra("EXTRA_CONNECTION_ONLY", true) putExtra("EXTRA_CLOSE_ON_CONNECT", true) putExtra("android.bluetooth.devicepicker.extra.FILTER_TYPE", 1) } startActivity(intent)
播放音频
检测到合适的音频输出方式后,在 Wear OS 上播放音频的过程和在移动设备或其他设备上播放音频相同。如需了解详情,请参阅 MediaPlayer 概览。如果想更轻松地使用更为高级的功能(例如在线播放和下载媒体内容),不妨使用 ExoPlayer。请务必遵循针对音频应用的最佳实践,例如管理音频焦点
.使用扬声器
一些 Wear OS 设备配有扬声器。在这些设备上启用扬声器,即可让应用发出声音并增加与用户互动的途径。例如,配有扬声器的 Wear OS 设备可能会触发时钟闹钟或计时器闹钟,并辅以音频通知;健身应用可能会使用扬声器提供锻炼指示。
如需了解详情,请参阅 WearSpeakerSample。