FM: Disable speaker option when A2DP connected
As the audio framework not supported to set the speaker option,
disabling the device switch option when A2DP is connected.
Change-Id: I0e3d61aefa400b8df3338af81b1417338880a786
CRs-Fixed: 892109
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 12693cf..20270e3 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -1858,6 +1858,19 @@
return(mRtPlusSupported);
}
+ private boolean isA2DPConnected() {
+ boolean A2DPConnected = false;
+ if (mService != null) {
+ try {
+ A2DPConnected = mService.isA2DPConnected();
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+ Log.d(LOGTAG, "A2DPConnected: " + A2DPConnected);
+ return(A2DPConnected);
+ }
+
private boolean isSpeakerEnabled() {
boolean speakerEnabled = false;
if (mService != null) {
@@ -2047,6 +2060,10 @@
}else{
mSpeakerButton.setImageResource(R.drawable.btn_earphone);
}
+ if (isA2DPConnected())
+ mSpeakerButton.setClickable(false);
+ else
+ mSpeakerButton.setClickable(true);
}
}
@@ -2225,6 +2242,16 @@
updateSearchProgress();
}
+ private void A2DPConnectionState(boolean state) {
+ Log.d(LOGTAG, "A2DPConnectionState with:" +state);
+ if (state) {
+ Log.d(LOGTAG, "make speaker button disable");
+ mSpeakerButton.setClickable(false);
+ } else {
+ Log.d(LOGTAG, "make speaker button enable");
+ mSpeakerButton.setClickable(true);
+ }
+ }
/** Scan related */
private void initiateSearch(int pty) {
synchronized (this) {
@@ -3144,6 +3171,10 @@
Log.d(LOGTAG, "mServiceCallbacks.onSeekNextStation:");
SeekNextStation();
}
+ public void onA2DPConnectionstateChanged(boolean state){
+ Log.d(LOGTAG, "mServiceCallbacks.onA2DPConnectionstateChanged :");
+ A2DPConnectionState(state);
+ }
};
private void registerFMSettingListner() {
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 4918680..6cebdb3 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -557,6 +557,12 @@
boolean bA2dpConnected =
mA2dpDeviceState.isConnected(intent);
Log.d(LOGTAG, "bA2dpConnected:" +bA2dpConnected);
+ try {
+ if ((mServiceInUse) && (mCallbacks != null))
+ mCallbacks.onA2DPConnectionstateChanged(bA2dpConnected);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
if (!bA2dpConnected) {
Log.d(LOGTAG, "A2DP device is dis-connected!");
mA2dpDisconnected = true;
@@ -1982,6 +1988,11 @@
{
return(mService.get().isSSRInProgress());
}
+
+ public boolean isA2DPConnected()
+ {
+ return(mService.get().isA2DPConnected());
+ }
}
private final IBinder mBinder = new ServiceStub(this);
@@ -2220,6 +2231,9 @@
return mIsSSRInProgress;
}
+ public boolean isA2DPConnected() {
+ return (mA2dpConnected);
+ }
/* Returns whether FM hardware is ON.
*
* @return true if FM was tuned, searching. (at the end of
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index ddefd89..961f04b 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -2716,6 +2716,9 @@
public void onSeekNextStation() {
Log.d(LOGTAG, "mServiceCallbacks.onSeekNextStation:");
}
+ public void onA2DPConnectionstateChanged(boolean state){
+ Log.d(LOGTAG, "mServiceCallbacks.onA2DPConnectionstateChanged :");
+ }
};
/* Radio Vars */
private Handler mHandler = new Handler();
diff --git a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
index 6140f0d..a02c593 100644
--- a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
+++ b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
@@ -74,5 +74,6 @@
boolean isSleepTimerActive();
boolean isSSRInProgress();
boolean isRtPlusSupported();
+ boolean isA2DPConnected();
}
diff --git a/fmapp2/src/com/caf/fmradio/IFMRadioServiceCallbacks.aidl b/fmapp2/src/com/caf/fmradio/IFMRadioServiceCallbacks.aidl
index 6a8deb5..e6fded7 100644
--- a/fmapp2/src/com/caf/fmradio/IFMRadioServiceCallbacks.aidl
+++ b/fmapp2/src/com/caf/fmradio/IFMRadioServiceCallbacks.aidl
@@ -47,4 +47,5 @@
void onExtenRadioTextChanged();
void onRecordingStarted();
void onSeekNextStation();
+ void onA2DPConnectionstateChanged(boolean state);
}