本指南介绍 Wear OS 上的应用如何使用熟悉的 Android API 播放音频。
检测音频设备
Wear OS 应用首先必须检测穿戴式设备是否具有适当的音频输出。在以下示例中,应用结合使用 getDevices()
方法与 FEATURE_AUDIO_OUTPUT
的值,枚举所有音频输出。
开发者希望穿戴式设备可以实现以下音频输出结果中的一种或两种:
AudioDeviceInfo.TYPE_BUILTIN_SPEAKER
(在具有内置扬声器的设备上)AudioDeviceInfo.TYPE_BLUETOOTH_A2DP
(如果蓝牙耳机已配对并连接)
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 设备可以触发时钟闹钟或定时器闹钟,并辅以音频通知。健身应用也可以使用扬声器提供运动说明。
请参阅以下相关资源: