ウェアラブル端末でのスピーカーの使用

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 におけるパーミッションをご覧ください。