Loading src/com/android/fmradio/FmService.java +18 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -2034,6 +2038,7 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } } handlePowerDown(); forceToHeadsetMode(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: Loading @@ -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); Loading @@ -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 */ Loading src/com/android/fmradio/FmUtils.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } Loading
src/com/android/fmradio/FmService.java +18 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -2034,6 +2038,7 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan } } handlePowerDown(); forceToHeadsetMode(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: Loading @@ -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); Loading @@ -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 */ Loading
src/com/android/fmradio/FmUtils.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } }