通过穿戴式设备播放音频

本指南介绍 Wear OS 上的应用如何使用熟悉的 Android API 播放音频。

检测音频设备

Wear OS 应用首先必须检测穿戴式设备是否具有适当的音频输出。在以下示例中,应用结合使用 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 设备可以触发时钟闹钟或定时器闹钟,并辅以音频通知。健身应用也可以使用扬声器提供运动说明。

请参阅以下相关资源: