From e978e8f6c209972f093f909bc5ed86cb13c3fea4 Mon Sep 17 00:00:00 2001 From: jannis Date: Tue, 3 Mar 2020 15:51:01 +0100 Subject: [PATCH] #51 Detect bluetooth headsets --- app/src/main/AndroidManifest.xml | 1 + .../fitness/announcement/VoiceAnnouncements.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 79648e4..f9f929e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ package="de.tadris.fitness"> + diff --git a/app/src/main/java/de/tadris/fitness/announcement/VoiceAnnouncements.java b/app/src/main/java/de/tadris/fitness/announcement/VoiceAnnouncements.java index 5bf90b8..243c28c 100644 --- a/app/src/main/java/de/tadris/fitness/announcement/VoiceAnnouncements.java +++ b/app/src/main/java/de/tadris/fitness/announcement/VoiceAnnouncements.java @@ -19,6 +19,8 @@ package de.tadris.fitness.announcement; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothHeadset; import android.content.Context; import android.media.AudioManager; import android.speech.tts.TextToSpeech; @@ -115,7 +117,7 @@ public class VoiceAnnouncements { // Cannot speak return; } - if (currentMode == AnnouncementMode.HEADPHONES && !audioManager.isWiredHeadsetOn()) { + if (currentMode == AnnouncementMode.HEADPHONES && !isHeadsetOn()) { // Not allowed to speak return; } @@ -123,6 +125,14 @@ public class VoiceAnnouncements { textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null, "announcement" + (++speakId)); } + private boolean isHeadsetOn() { + BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + boolean bluetoothHeadsetConnected = mBluetoothAdapter != null && mBluetoothAdapter.isEnabled() + && mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED; + + return audioManager.isWiredHeadsetOn() || bluetoothHeadsetConnected; + } + public void destroy() { textToSpeech.shutdown(); }