#51 Detect bluetooth headsets

This commit is contained in:
jannis 2020-03-03 15:51:01 +01:00
parent 91d97ae805
commit e978e8f6c2
2 changed files with 12 additions and 1 deletions

View File

@ -23,6 +23,7 @@
package="de.tadris.fitness">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

View File

@ -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();
}