LoginSignup
1
1

音声認識中のAndroidの通知音をミュートする方法

Posted at

はじめに

AndroidのSpeech Recognizerを利用して音声認識機能を実装する際、音声認識の開始を示すための"ピロン"や"ポロン"といった通知音が自動的に鳴ることがある。これらの音はシステムによって生成されるため、通知音を無効にしてSpeech Recognizerを実行する直接的な方法は存在しない。

しかし、この通知音が頻繁に鳴り、場合によっては邪魔になることもあります。実装したい機能によっては、音を一時的にミュートしたい状況が生じるかもしれない。最近のAndroidバージョンでは、adjustStreamVolumeメソッドを用いて通知音をミュートするのが良いようだ。 今回の内容はAndroid 9で動作確認した。

adjustStreamVolumeを使用して音声認識の通知音をミュートする

adjustStreamVolumeを使用する場合、特に問題なく通知音をミュートすることができる。

val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
// 通知音をミュート
audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_MUTE, 0)
// ミュートを解除
audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_UNMUTE, 0)

参考資料

getStreamVolumeを使用して通知音をミュートしようとすると失敗する

getStreamVolumeを使用してAudioManager.STREAM_NOTIFICATIONのボリュームを0に設定しようとすると、java.lang.SecurityException: Not allowed to change Do Not Disturb stateという例外エラーが発生し、操作が失敗する。

val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
val currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION)
// ボリュームをゼロに設定
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 0)
// ボリュームを元に戻す
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, currentVolume, 0)

参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1