欢迎参加我们将于 6 月 3 日举行的 #Android11:Beta 版发布会

使用穿戴式设备上的扬声器

一些 Wear OS 设备配有扬声器,使其能够支持应用发出声音,并增加了与用户互动的途径。配有扬声器的 Wear 设备可以触发时钟或定时器闹钟,并辅以音频通知。如此声色并茂,令 Wear 版游戏的娱乐性越来越强。

本页介绍了 Wear 上的应用如何使用熟悉的 Android API 通过设备扬声器播放声音。

请参阅以下相关资源:

检测扬声器

Wear 应用必须首先检测穿戴式设备是否配有扬声器。在以下示例中,应用结合 getDevices() 方法与 FEATURE_AUDIO_OUTPUT 的值确认设备是否配备了扬声器。

Kotlin

    val packageManager: PackageManager = context.packageManager
    val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager

    // Check whether the device has a speaker.
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
            // Check FEATURE_AUDIO_OUTPUT to guard against false positives.
            packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
        val devices: Array<AudioDeviceInfo> = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
        devices.any { it.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER }
    } else {
        false
    }
    

Java

    PackageManager packageManager = context.getPackageManager();
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

    // Check whether the device has a speaker.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
            // Check FEATURE_AUDIO_OUTPUT to guard against false positives.
            packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
        AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
        for (AudioDeviceInfo device : devices) {
            if (device.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
                return true;
            }
        }
    }
    return false;
    

播放声音

检测到扬声器后,在 Wear OS 上播放声音的过程与在手机或其他设备上相同。有关详情,请参阅媒体播放

如果您还想通过穿戴式设备上的麦克风录制音频,则应用还必须获得使用麦克风的权限。要了解详情,请参阅 Wear OS 上的权限