diff options
author | Benson Huang <benson.huang@mediatek.com> | 2015-03-25 00:14:58 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-03-25 00:14:58 +0000 |
commit | 3f85241cd6fec88073f7d471d261dd88147f53ec (patch) | |
tree | a7f8d807d76eb22b2d27dd22ade47cc3ca52f3b6 | |
parent | 7a8034bebce15e3b062b2defff844d6aea173186 (diff) | |
parent | 06ba26e7da989bfab8e49fe7fae03efd563472ae (diff) | |
download | FMRadio-3f85241cd6fec88073f7d471d261dd88147f53ec.tar.gz |
am 06ba26e7: am 3e855750: am 4f33aa31: [FM] Earphone mode incoming call ringtone issue in loudspeaker
* commit '06ba26e7da989bfab8e49fe7fae03efd563472ae':
[FM] Earphone mode incoming call ringtone issue in loudspeaker
-rw-r--r-- | src/com/android/fmradio/FmService.java | 18 | ||||
-rw-r--r-- | src/com/android/fmradio/FmUtils.java | 24 |
2 files changed, 42 insertions, 0 deletions
diff --git a/src/com/android/fmradio/FmService.java b/src/com/android/fmradio/FmService.java index 76aab98..d98e108 100644 --- a/src/com/android/fmradio/FmService.java +++ b/src/com/android/fmradio/FmService.java @@ -1927,6 +1927,10 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan * @return true, success; false, fail; */ public boolean requestAudioFocus() { + if (FmUtils.getIsSpeakerModeOnFocusLost(mContext)) { + setForceUse(true); + FmUtils.setIsSpeakerModeOnFocusLost(mContext, false); + } if (mIsAudioFocusHeld) { return true; } @@ -2034,6 +2038,7 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } } handlePowerDown(); + forceToHeadsetMode(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: @@ -2055,9 +2060,14 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } } handlePowerDown(); + forceToHeadsetMode(); break; case AudioManager.AUDIOFOCUS_GAIN: + if (FmUtils.getIsSpeakerModeOnFocusLost(mContext)) { + setForceUse(true); + FmUtils.setIsSpeakerModeOnFocusLost(mContext, false); + } if ((mPowerStatus != POWER_UP) && mPausedByTransientLossOfFocus) { final int bundleSize = 1; mFmServiceHandler.removeMessages(FmListener.MSGID_POWERUP_FINISHED); @@ -2078,6 +2088,14 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } } + private void forceToHeadsetMode() { + if (mIsSpeakerUsed && isHeadSetIn()) { + AudioSystem.setForceUse(FOR_PROPRIETARY, AudioSystem.FORCE_NONE); + // save user's option to shared preferences. + FmUtils.setIsSpeakerModeOnFocusLost(mContext, true); + } + } + /** * FM Radio listener record */ diff --git a/src/com/android/fmradio/FmUtils.java b/src/com/android/fmradio/FmUtils.java index 608ced7..b6219fd 100644 --- a/src/com/android/fmradio/FmUtils.java +++ b/src/com/android/fmradio/FmUtils.java @@ -61,6 +61,7 @@ public class FmUtils { private static final String FM_LOCATION_LATITUDE = "fm_location_latitude"; private static final String FM_LOCATION_LONGITUDE = "fm_location_longitude"; private static final String FM_IS_FIRST_TIME_PLAY = "fm_is_first_time_play"; + private static final String FM_IS_SPEAKER_MODE = "fm_is_speaker_mode"; private static final String FM_IS_FIRST_ENTER_STATION_LIST = "fm_is_first_enter_station_list"; // StorageManager For FM record private static StorageManager sStorageManager = null; @@ -298,4 +299,27 @@ public class FmUtils { iconLayout.destroyDrawingCache(); return largeIcon; } + + /** + * Get whether speaker mode is in use when audio focus lost. + * @param context the Context + * @return true for speaker mode, false for non speaker mode + */ + public static boolean getIsSpeakerModeOnFocusLost(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + + return prefs.getBoolean(FM_IS_SPEAKER_MODE, false); + } + + /** + * Set whether speaker mode is in use. + * @param context the Context + * @param isSpeaker speaker state + */ + public static void setIsSpeakerModeOnFocusLost(Context context, boolean isSpeaker) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(FM_IS_SPEAKER_MODE, isSpeaker); + editor.commit(); + } } |