透過穿戴式裝置播放音訊

本指南將說明 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 的意圖即可達到此效果。

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 裝置可以觸發時鐘或計時器鬧鐘,並搭配音訊通知。健身應用程式也可以透過喇叭提供運動相關指示。

請參閱下列相關資源: