summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSatish Kodishala <skodisha@codeaurora.org>2014-11-20 15:34:46 +0530
committerSatish Kodishala <skodisha@codeaurora.org>2014-12-04 16:19:50 +0530
commit454dd9e1aca4bbe8c341cc23da11c7ff906cab6f (patch)
treed5ad13fd59d9e45ef9a14b46855b0a3fec05f40b
parent3b55b8546e06e691cb655a0d5983f09401452ead (diff)
downloadandroid_hardware_qcom_fm-454dd9e1aca4bbe8c341cc23da11c7ff906cab6f.tar.gz
android_hardware_qcom_fm-454dd9e1aca4bbe8c341cc23da11c7ff906cab6f.tar.bz2
android_hardware_qcom_fm-454dd9e1aca4bbe8c341cc23da11c7ff906cab6f.zip
FM: Auto turn ON FM after WCNSS SSR
After WCNSS SSR, auto turn ON FM from FM app. CRs-fixed: 749400 Change-Id: I9dfa0d9bae621658fdaea2f4ff87f290f748f9b1
-rw-r--r--fmapp2/src/com/caf/fmradio/FMRadio.java30
-rw-r--r--fmapp2/src/com/caf/fmradio/FMRadioService.java47
-rw-r--r--fmapp2/src/com/caf/fmradio/IFMRadioService.aidl1
3 files changed, 68 insertions, 10 deletions
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 08021cc..0acbc63 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -1620,6 +1620,20 @@ public class FMRadio extends Activity
boolean bStatus = false;
if (mService != null) {
try {
+ if(mService.isSSRInProgress()) {
+ Log.e(LOGTAG, "SSR In Progress, looping");
+ while(mService.isSSRInProgress()) {
+ try
+ {
+ Thread.sleep(500);
+ } catch (InterruptedException e)
+ {
+ break;
+ }
+ }
+ Log.e(LOGTAG, "SSR done, continuing");
+ }
+
if((false == mService.isFmOn()) && isAntennaAvailable()) {
bStatus = mService.fmOn();
if(bStatus) {
@@ -1680,11 +1694,21 @@ public class FMRadio extends Activity
}
if (mService != null) {
try {
- if(bSpeakerPhoneOn) {
- mService.enableSpeaker(false);
- }
mService.fmRadioReset();
enableRadioOnOffUI(false);
+
+ Log.e(LOGTAG, "Done with reset, restarting FM");
+ /* Start Turn ON sequence again */
+ mOnOffButton.setEnabled(false);
+ mOnOffButton.setClickable(false);
+ mOnOffButton.setOnClickListener(null);
+
+ mDisableRadioHandler.removeCallbacks(mDisableRadioTask);
+ mEnableRadioHandler.removeCallbacks(mEnableRadioTask);
+ mEnableRadioHandler.postDelayed(mEnableRadioTask, 0);
+
+ cleanupTimeoutHandler();
+ Log.e(LOGTAG, "Done with restart");
}catch (RemoteException e) {
e.printStackTrace();
}
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 9727050..f643ec3 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -181,6 +181,8 @@ public class FMRadioService extends Service
private boolean mUnMuteOnFocusLoss = false;
private boolean mSpeakerOnFocusLoss = false;
private MediaSession mSession;
+ private boolean mIsSSRInProgress = false;
+ private boolean mIsSSRInProgressFromActivity = false;
public FMRadioService() {
}
@@ -845,6 +847,14 @@ public class FMRadioService extends Service
mResumeAfterCall = false;
if ( true == mPlaybackInProgress ) // no need to resend event
return;
+
+ /* If audio focus lost while SSR in progress, don't request for Audio focus */
+ if ( (true == mIsSSRInProgress || true == mIsSSRInProgressFromActivity) &&
+ true == mStoppedOnFocusLoss) {
+ Log.d(LOGTAG, "Audio focus lost while SSR in progress, returning");
+ return;
+ }
+
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int granted = audioManager.requestAudioFocus(mAudioFocusListener, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
@@ -1718,6 +1728,11 @@ public class FMRadioService extends Service
{
return (mService.get().isSleepTimerActive());
}
+
+ public boolean isSSRInProgress()
+ {
+ return(mService.get().isSSRInProgress());
+ }
}
private final IBinder mBinder = new ServiceStub(this);
@@ -1845,6 +1860,9 @@ public class FMRadioService extends Service
// we disable
stop();
}
+
+ /* reset SSR flag */
+ mIsSSRInProgressFromActivity = false;
}
return(bStatus);
}
@@ -1889,12 +1907,6 @@ public class FMRadioService extends Service
* Reset (OFF) FM Operations: This resets all the current FM operations .
*/
private void fmOperationsReset() {
- if ( mSpeakerPhoneOn)
- {
- mSpeakerPhoneOn = false;
- AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NONE);
- }
-
if (isFmRecordingOn())
{
stopRecording();
@@ -1904,7 +1916,6 @@ public class FMRadioService extends Service
if(audioManager != null)
{
Log.d(LOGTAG, "audioManager.setFmRadioOn = false \n" );
- unMute();
resetFM();
//audioManager.setParameters("FMRadioOn=false");
Log.d(LOGTAG, "audioManager.setFmRadioOn false done \n" );
@@ -1958,6 +1969,10 @@ public class FMRadioService extends Service
return(bStatus);
}
+ public boolean isSSRInProgress() {
+ return mIsSSRInProgress;
+ }
+
/* Returns whether FM hardware is ON.
*
* @return true if FM was tuned, searching. (at the end of
@@ -2678,6 +2693,7 @@ public class FMRadioService extends Service
}
public void FmRxEvRadioReset()
{
+ boolean bStatus;
Log.d(LOGTAG, "FmRxEvRadioReset");
if(isFmOn()) {
// Received radio reset event while FM is ON
@@ -2690,7 +2706,24 @@ public class FMRadioService extends Service
*/
if((mServiceInUse) && (mCallbacks != null) )
{
+ mIsSSRInProgressFromActivity = true;
mCallbacks.onRadioReset();
+ } else {
+ Log.d(LOGTAG, "Activity is not in foreground, turning on from service");
+ if (isAntennaAvailable())
+ {
+ mIsSSRInProgress = true;
+ bStatus = fmOn();
+ if(bStatus)
+ {
+ bStatus = tune(FmSharedPreferences.getTunedFrequency());
+ if(!bStatus)
+ Log.e(LOGTAG, "Tuning after SSR from service failed");
+ } else {
+ Log.e(LOGTAG, "Turning on after SSR from service failed");
+ }
+ mIsSSRInProgress = false;
+ }
}
}
catch (RemoteException e)
diff --git a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
index 2f6f1e3..7b04d71 100644
--- a/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
+++ b/fmapp2/src/com/caf/fmradio/IFMRadioService.aidl
@@ -72,5 +72,6 @@ interface IFMRadioService
boolean setRxRepeatCount(int count);
long getRecordingStartTime();
boolean isSleepTimerActive();
+ boolean isSSRInProgress();
}