在穿戴式设备上播放音频

本指南将介绍 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 设备可能会触发时钟闹钟或计时器闹钟,并辅以音频通知;健身应用可能会使用扬声器提供锻炼指示。

如需了解详情,请参阅 WearSpeakerSample