diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java index 34b3d236b20a03984445ac6ebebb265e702c98e7..43fd2efaffdd308dcf83803df2065c0e4055a8dc 100644 --- a/fmapp2/src/com/caf/fmradio/FMRadio.java +++ b/fmapp2/src/com/caf/fmradio/FMRadio.java @@ -1413,6 +1413,11 @@ public class FMRadio extends Activity return(dlgBuilder.create()); } private void RestoreDefaults() { + try { + mService.restoreDefaults(); + } catch (RemoteException e) { + e.printStackTrace(); + } FmSharedPreferences.SetDefaults(); mPrefs.Save(); } diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java index 86f2b6366d2529806723d925023639dc5587e391..6554c90dd3f4ce6d8834cc2d8d719f622fee996f 100644 --- a/fmapp2/src/com/caf/fmradio/FMRadioService.java +++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java @@ -157,6 +157,7 @@ public class FMRadioService extends Service //Track FM playback for reenter App usecases private boolean mPlaybackInProgress = false; private boolean mStoppedOnFocusLoss = false; + private boolean mStoppedOnFactoryReset = false; private File mSampleFile = null; long mSampleStart = 0; // Messages handled in FM Service @@ -673,8 +674,6 @@ public class FMRadioService extends Service } }; AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - mA2dpConnected = am.isBluetoothA2dpOn(); - mA2dpDisconnected = !mA2dpConnected; IntentFilter iFilter = new IntentFilter(); iFilter.addAction(Intent.ACTION_HEADSET_PLUG); iFilter.addAction(mA2dpDeviceState.getActionSinkStateChangedString()); @@ -1046,23 +1045,14 @@ public class FMRadioService extends Service mStoppedOnFocusLoss = false; - if (!mA2dpDeviceState.isDeviceAvailable()) { - Log.d(LOGTAG, "FMRadio: Requesting to start FM"); - //reason for resending the Speaker option is we are sending - //ACTION_FM=1 to AudioManager, the previous state of Speaker we set - //need not be retained by the Audio Manager. - if (isSpeakerEnabled()) { - mSpeakerPhoneOn = true; - Log.d(LOGTAG, "Audio source set it as speaker"); + if (mStoppedOnFactoryReset) { + mStoppedOnFactoryReset = false; + mSpeakerPhoneOn = false; + // In FM stop, the audio route is set to default audio device + } else if (mSpeakerPhoneOn) { + String temp = mA2dpConnected ? "A2DP HS" : "Speaker"; + Log.d(LOGTAG, "Route audio to " + temp); AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_SPEAKER); - } else { - Log.d(LOGTAG, "Audio source set it as headset"); - AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NONE); - } - } else { - Log.d(LOGTAG, "A2DP is connected, set audio source to A2DP HS"); - AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_SPEAKER); - mSpeakerPhoneOn = true; } mPlaybackInProgress = true; @@ -1829,6 +1819,7 @@ public class FMRadioService extends Service public void enableSpeaker(boolean speakerOn) { + mService.get().enableSpeaker(speakerOn); } @@ -2045,12 +2036,10 @@ public class FMRadioService extends Service { return (mService.get().isSleepTimerActive()); } - public boolean isSSRInProgress() { return(mService.get().isSSRInProgress()); } - public boolean isA2DPConnected() { return(mService.get().isA2DPConnected()); @@ -2060,6 +2049,11 @@ public class FMRadioService extends Service { return(mService.get().getExtenCountryCode()); } + + public void restoreDefaults() + { + mService.get().restoreDefaults(); + } } private final IBinder mBinder = new ServiceStub(this); @@ -2197,6 +2191,18 @@ public class FMRadioService extends Service return(bStatus); } + private void resetAudioRoute() { + if (isSpeakerEnabled() == true) { + if (mA2dpConnected == true) { + Log.d(LOGTAG, "A2DP connected, de-select BT"); + AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NO_BT_A2DP); + } else { + Log.d(LOGTAG, "A2DP is not connected, force none"); + AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NONE); + } + } + } + /* * Turn OFF FM Operations: This disables all the current FM operations . */ @@ -2224,8 +2230,8 @@ public class FMRadioService extends Service Log.d(LOGTAG, "audioManager.setFmRadioOn false done \n" ); } // reset FM audio settings - if (isSpeakerEnabled() == true) - enableSpeaker(false); + resetAudioRoute(); + if (isMuted() == true) unMute(); @@ -3736,11 +3742,12 @@ public class FMRadioService extends Service mA2dpProfile = (BluetoothA2dp) proxy; mA2dpDeviceList = mA2dpProfile.getConnectedDevices(); - if (mA2dpDeviceList == null) + if (mA2dpDeviceList.isEmpty()) mA2dpConnected = false; else mA2dpConnected = true; mA2dpDisconnected = !mA2dpConnected; + mSpeakerPhoneOn = mA2dpConnected; Log.d(LOGTAG, "A2DP Status: " + mA2dpConnected); } @@ -3758,4 +3765,8 @@ public class FMRadioService extends Service Log.d(LOGTAG, "Failed to get A2DP profile proxy"); } } + + private void restoreDefaults () { + mStoppedOnFactoryReset = true; + } } diff --git a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl index 50706af6df829d1d99a664f6b69cef51a3a38bfe..07d210eb55a1446fe8d3e691a66a4c960f361e5a 100644 --- a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl +++ b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl @@ -79,5 +79,6 @@ interface IFMRadioService boolean getIntfDetLowTh(); boolean getIntfDetHighTh(); boolean getRxRepeatCount(); + void restoreDefaults(); }