diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-04-22 15:36:43 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-04-22 15:36:43 -0700 |
commit | 5fda6f9b29f62b20078bc04520faf363feff6d38 (patch) | |
tree | 9fec6af10ce79a2735fc2884d3e59976f2355219 /fmapp2/src/com/caf/fmradio/FMRadioService.java | |
parent | 69e94c64b880f69ffec73e468e146fee3ef40bd9 (diff) | |
parent | fd50fd447f34e8310c88f70e3686b8bfffa293b4 (diff) | |
download | android_hardware_qcom_fm-5fda6f9b29f62b20078bc04520faf363feff6d38.tar.gz android_hardware_qcom_fm-5fda6f9b29f62b20078bc04520faf363feff6d38.tar.bz2 android_hardware_qcom_fm-5fda6f9b29f62b20078bc04520faf363feff6d38.zip |
Merge "FM: Fix the audio noise issue"
Diffstat (limited to 'fmapp2/src/com/caf/fmradio/FMRadioService.java')
-rw-r--r-- | fmapp2/src/com/caf/fmradio/FMRadioService.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java index 565537f..1f2f60f 100644 --- a/fmapp2/src/com/caf/fmradio/FMRadioService.java +++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java @@ -106,6 +106,7 @@ public class FMRadioService extends Service private boolean mSleepActive = false; private BroadcastReceiver mRecordTimeoutListener = null; private BroadcastReceiver mDelayedServiceStopListener = null; + private BroadcastReceiver mAudioBecomeNoisyListener = null; private boolean mOverA2DP = false; private BroadcastReceiver mFmMediaButtonListener; private IFMRadioServiceCallbacks mCallbacks; @@ -204,6 +205,7 @@ public class FMRadioService extends Service // registering media button receiver seperately as we need to set // different priority for receiving media events registerFmMediaButtonReceiver(); + registerAudioBecomeNoisy(); if ( false == SystemProperties.getBoolean("ro.fm.mulinst.recording.support",true)) { mSingleRecordingInstanceSupported = true; } @@ -257,6 +259,10 @@ public class FMRadioService extends Service unregisterReceiver(mFmMediaButtonListener); mFmMediaButtonListener = null; } + if (mAudioBecomeNoisyListener != null) { + unregisterReceiver(mAudioBecomeNoisyListener); + mAudioBecomeNoisyListener = null; + } if (mSleepExpiredListener != null ) { unregisterReceiver(mSleepExpiredListener); mSleepExpiredListener = null; @@ -505,6 +511,40 @@ public class FMRadioService extends Service } } + public void registerAudioBecomeNoisy() { + if (mAudioBecomeNoisyListener == null) { + mAudioBecomeNoisyListener = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Log.d(LOGTAG, "FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY"); + String intentAction = intent.getAction(); + if (FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY.equals(intentAction)) { + if (isFmOn()) + { + /* Disable FM and let the UI know */ + fmOff(); + try + { + /* Notify the UI/Activity, only if the service is "bound" + by an activity and if Callbacks are registered + */ + if((mServiceInUse) && (mCallbacks != null) ) + { + mCallbacks.onDisabled(); + } + } catch (RemoteException e) + { + e.printStackTrace(); + } + } + } + } + }; + IntentFilter intentFilter = new IntentFilter(FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY); + registerReceiver(mAudioBecomeNoisyListener, intentFilter); + } + } + public void registerMusicServiceCommandReceiver() { if (mMusicCommandListener == null) { mMusicCommandListener = new BroadcastReceiver() { @@ -599,6 +639,8 @@ public class FMRadioService extends Service /* Update the UI based on the state change of the headset/antenna*/ if(!isAntennaAvailable()) { + if (!isFmOn()) + return; /* Disable FM and let the UI know */ fmOff(); try |