TTY: Telecomm
This CL makes the following changes:
1. Added TtyManager. This class contains code that used
to live in PhoneGlobals to listen to preferred TTY
mode changes. Current TTY mode is based on the
preferred mode, wired headset state, and device TTY
support.
2. Moved ownership of WiredHeadsetManager to CallsManager
so that TtyManager can listen to headset plugged events.
3. Added plumbing to TelecommServiceImpl to impement
isTtySupported and getCurrentTtyMode.
4. Added tty_enabled to config.xml. This is moved over
from Telephony.
Change-Id: I652b095af30cc2732a06829dc23492e5355660da
diff --git a/src/com/android/telecomm/WiredHeadsetManager.java b/src/com/android/telecomm/WiredHeadsetManager.java
index 329df71..e59f1a5 100644
--- a/src/com/android/telecomm/WiredHeadsetManager.java
+++ b/src/com/android/telecomm/WiredHeadsetManager.java
@@ -22,12 +22,14 @@
import android.content.IntentFilter;
import android.media.AudioManager;
-/**
- * Listens for and caches headset state. Used By the CallAudioManger for maintaining
- * overall audio state for use in the UI layer. Also provides method for connecting the bluetooth
- * headset to the phone call.
- */
+import java.util.HashSet;
+
+/** Listens for and caches headset state. */
class WiredHeadsetManager {
+ interface Listener {
+ void onWiredHeadsetPluggedInChanged(boolean oldIsPluggedIn, boolean newIsPluggedIn);
+ }
+
/** Receiver for wired headset plugged and unplugged events. */
private class WiredHeadsetBroadcastReceiver extends BroadcastReceiver {
@Override
@@ -41,15 +43,13 @@
}
}
- private final CallAudioManager mCallAudioManager;
private final WiredHeadsetBroadcastReceiver mReceiver;
private boolean mIsPluggedIn;
+ private final HashSet<Listener> mListeners = new HashSet<>();
- WiredHeadsetManager(CallAudioManager callAudioManager) {
- mCallAudioManager = callAudioManager;
+ WiredHeadsetManager(Context context) {
mReceiver = new WiredHeadsetBroadcastReceiver();
- Context context = TelecommApp.getInstance();
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mIsPluggedIn = audioManager.isWiredHeadsetOn();
@@ -58,6 +58,14 @@
context.registerReceiver(mReceiver, intentFilter);
}
+ void addListener(Listener listener) {
+ mListeners.add(listener);
+ }
+
+ void removeListener(Listener listener) {
+ mListeners.remove(listener);
+ }
+
boolean isPluggedIn() {
return mIsPluggedIn;
}
@@ -68,7 +76,9 @@
isPluggedIn);
boolean oldIsPluggedIn = mIsPluggedIn;
mIsPluggedIn = isPluggedIn;
- mCallAudioManager.onHeadsetPluggedInChanged(oldIsPluggedIn, mIsPluggedIn);
+ for (Listener listener : mListeners) {
+ listener.onWiredHeadsetPluggedInChanged(oldIsPluggedIn, mIsPluggedIn);
+ }
}
}
}