Promotion of fm.lnx.1.0-00010.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
968376 If9966a887a09a5fd6813637b61b075616362ff39 Disable/enable radio on factory reset
966644 I681b51f3a54abbc04223c60496aa3049b6769a1f Request for audio focus on activity resume
967753 I8d5f28cb9ce3545908362e83e787fcc43394a0ac Check for audio focus before enabling audio path
Change-Id: I95ccc2a2d75af1b296c7847febc59ea21dc9354c
CRs-Fixed: 966644, 967753, 968376
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index c364885..76b961c 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -493,42 +493,54 @@
@Override
public void onResume() {
+ Log.d(LOGTAG, "FMRadio: onResume");
+
super.onResume();
- try {
- if(mService != null) {
- mService.registerCallbacks(mServiceCallbacks);
- }
- }catch (RemoteException e) {
- e.printStackTrace();
+ if (null == mService) {
+ Log.e(LOGTAG, "FM Service is not running, returning");
+ return;
}
- if(isSleepTimerActive()) {
+
+ // TODO: We should return on exception or continue?
+ try {
+ mService.registerCallbacks(mServiceCallbacks);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+
+ if (isSleepTimerActive()) {
Log.d(LOGTAG, "isSleepTimerActive is true");
try {
- if(null != mService) {
- mService.cancelDelayedStop(FMRadioService.STOP_SERVICE);
- }
+ mService.cancelDelayedStop(FMRadioService.STOP_SERVICE);
if(null != mSleepUpdateHandlerThread) {
mSleepUpdateHandlerThread.interrupt();
}
- }catch (Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
}
initiateSleepThread();
}
- if(isRecording()) {
+
+ if (isRecording()) {
Log.d(LOGTAG,"isRecordTimerActive is true");
try {
- if (null != mService) {
- mService.cancelDelayedStop(FMRadioService.STOP_RECORD);
- }
- }catch (Exception e) {
- e.printStackTrace();
+ mService.cancelDelayedStop(FMRadioService.STOP_RECORD);
+ } catch (Exception e) {
+ e.printStackTrace();
}
if(isRecording()) {
initiateRecordThread();
}
}
- Log.d(LOGTAG, "FMRadio: onResume");
+
+ // we might lose audio focus between pause and restart,
+ // hence request it again
+ try {
+ mService.requestFocus();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
mStereo = FmSharedPreferences.getLastAudioMode();
mHandler.post(mUpdateProgramService);
mHandler.post(mUpdateRadioText);
@@ -958,9 +970,10 @@
String action = data.getAction();
if (action != null) {
if (action.equals(Settings.RESTORE_FACTORY_DEFAULT_ACTION)) {
+ disableRadio();
RestoreDefaults();
- enableRadioOnOffUI();
- tuneRadio(FmSharedPreferences.DEFAULT_NO_FREQUENCY);
+ FmSharedPreferences.setTunedFrequency(FmSharedPreferences.DEFAULT_NO_FREQUENCY);
+ enableRadio();
FmSharedPreferences.addStation("", FmSharedPreferences.DEFAULT_NO_FREQUENCY, 0);
}
}
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index a774f31..6f6f257 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -506,7 +506,13 @@
" mA2dpConnected:" + mA2dpConnected +
" isRecordSinking" + isRecordSinking() +
" mIsFMDeviceLoopbackActive:" + mIsFMDeviceLoopbackActive);
+
if (enable) {
+ if (mStoppedOnFocusLoss == true) {
+ Log.d(LOGTAG, "FM does not have audio focus, not enabling " +
+ "audio path");
+ return;
+ }
// stop existing playback path before starting new one
if (mA2dpConnected && mIsFMDeviceLoopbackActive) {
// on BT but earlier device loopback is active