Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f85241c authored by Benson Huang's avatar Benson Huang Committed by Android Git Automerger
Browse files

am 06ba26e7: am 3e855750: am 4f33aa31: [FM] Earphone mode incoming call...

am 06ba26e7: am 3e855750: am 4f33aa31: [FM] Earphone mode incoming call ringtone issue in loudspeaker

* commit '06ba26e7':
  [FM] Earphone mode incoming call ringtone issue in loudspeaker
parents 7a8034be 06ba26e7
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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
     */
+24 −0
Original line number Diff line number Diff line
@@ -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();
    }
}