diff --git a/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt b/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt index 55ad558..ce8c87d 100644 --- a/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt +++ b/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt @@ -4,6 +4,8 @@ import android.app.AlertDialog import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent +import android.media.AudioManager +import android.os.Build import android.os.Bundle import android.speech.RecognitionListener import android.speech.RecognizerIntent @@ -16,6 +18,7 @@ import java.util.* import kotlin.math.max import kotlin.math.min + class SttDialog : DialogFragment() { var matchActivity: MatchActivity? = null var partialResultsTextView: TextView? = null @@ -64,6 +67,15 @@ class SttDialog : DialogFragment() { } override fun onError(errorCode: Int) { + muteAudio() + + // Restart STT + stt?.apply{ + stopListening() + cancel() + destroy() + } + stt = SpeechRecognizer.createSpeechRecognizer(activity).apply { setRecognitionListener(SttListener()) startListening(sttIntent) @@ -117,5 +129,49 @@ class SttDialog : DialogFragment() { super.onStop() stt?.stopListening() stt?.destroy() + + unMuteAudio() + } + + @Suppress("DEPRECATION") + fun muteAudio() { + activity?.apply { + (getSystemService(Context.AUDIO_SERVICE) as AudioManager).apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_MUTE, 0) + adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_MUTE, 0) + adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0) + adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_MUTE, 0) + adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_MUTE, 0) + } else { + setStreamMute(AudioManager.STREAM_NOTIFICATION, true) + setStreamMute(AudioManager.STREAM_ALARM, true) + setStreamMute(AudioManager.STREAM_MUSIC, true) + setStreamMute(AudioManager.STREAM_RING, true) + setStreamMute(AudioManager.STREAM_SYSTEM, true) + } + } + } + } + + @Suppress("DEPRECATION") + fun unMuteAudio() { + activity?.apply { + (getSystemService(Context.AUDIO_SERVICE) as AudioManager).apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_UNMUTE, 0) + adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_UNMUTE, 0) + adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE, 0) + adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_UNMUTE, 0) + adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_UNMUTE, 0) + } else { + setStreamMute(AudioManager.STREAM_NOTIFICATION, false) + setStreamMute(AudioManager.STREAM_ALARM, false) + setStreamMute(AudioManager.STREAM_MUSIC, false) + setStreamMute(AudioManager.STREAM_RING, false) + setStreamMute(AudioManager.STREAM_SYSTEM, false) + } + } + } } } \ No newline at end of file