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

Commit 7b0a8387 authored by Simon Bowden's avatar Simon Bowden Committed by Android (Google) Code Review
Browse files

Merge "Create a Builder for Ringtone, add unit tests."

parents 85fd8f41 a75567ae
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -42,18 +42,22 @@ public class LocalRingtonePlayer

    private final MediaPlayer mMediaPlayer;
    private final AudioAttributes mAudioAttributes;
    private final Ringtone.Injectables mInjectables;
    private final AudioManager mAudioManager;
    private final VolumeShaper mVolumeShaper;
    private HapticGenerator mHapticGenerator;

    private LocalRingtonePlayer(@NonNull MediaPlayer mediaPlayer,
            @NonNull AudioAttributes audioAttributes, @NonNull AudioManager audioManager,
            @Nullable HapticGenerator hapticGenerator, @Nullable VolumeShaper volumeShaper) {
            @NonNull AudioAttributes audioAttributes, @NonNull Ringtone.Injectables injectables,
            @NonNull AudioManager audioManager, @Nullable HapticGenerator hapticGenerator,
            @Nullable VolumeShaper volumeShaper) {
        Objects.requireNonNull(mediaPlayer);
        Objects.requireNonNull(audioAttributes);
        Objects.requireNonNull(injectables);
        Objects.requireNonNull(audioManager);
        mMediaPlayer = mediaPlayer;
        mAudioAttributes = audioAttributes;
        mInjectables = injectables;
        mAudioManager = audioManager;
        mVolumeShaper = volumeShaper;
        mHapticGenerator = hapticGenerator;
@@ -67,6 +71,7 @@ public class LocalRingtonePlayer
    static LocalRingtonePlayer create(@NonNull Context context,
            @NonNull AudioManager audioManager, @NonNull Uri soundUri,
            @NonNull AudioAttributes audioAttributes,
            @NonNull Ringtone.Injectables injectables,
            @Nullable VolumeShaper.Configuration volumeShaperConfig,
            @Nullable AudioDeviceInfo preferredDevice, boolean initialHapticGeneratorEnabled,
            boolean initialLooping, float initialVolume) {
@@ -74,7 +79,7 @@ public class LocalRingtonePlayer
        Objects.requireNonNull(soundUri);
        Objects.requireNonNull(audioAttributes);
        Trace.beginSection("createLocalMediaPlayer");
        MediaPlayer mediaPlayer = new MediaPlayer();
        MediaPlayer mediaPlayer = injectables.newMediaPlayer();
        HapticGenerator hapticGenerator = null;
        try {
            mediaPlayer.setDataSource(context, soundUri);
@@ -83,7 +88,7 @@ public class LocalRingtonePlayer
            mediaPlayer.setLooping(initialLooping);
            mediaPlayer.setVolume(initialVolume);
            if (initialHapticGeneratorEnabled) {
                hapticGenerator = HapticGenerator.create(mediaPlayer.getAudioSessionId());
                hapticGenerator = injectables.createHapticGenerator(mediaPlayer);
                hapticGenerator.setEnabled(true);
            }
            VolumeShaper volumeShaper = null;
@@ -91,7 +96,7 @@ public class LocalRingtonePlayer
                volumeShaper = mediaPlayer.createVolumeShaper(volumeShaperConfig);
            }
            mediaPlayer.prepare();
            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, audioManager,
            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, injectables, audioManager,
                    hapticGenerator, volumeShaper);
        } catch (SecurityException | IOException e) {
            if (hapticGenerator != null) {
@@ -113,6 +118,7 @@ public class LocalRingtonePlayer
    static LocalRingtonePlayer createForFallback(
            @NonNull AudioManager audioManager, @NonNull AssetFileDescriptor afd,
            @NonNull AudioAttributes audioAttributes,
            @NonNull Ringtone.Injectables injectables,
            @Nullable VolumeShaper.Configuration volumeShaperConfig,
            @Nullable AudioDeviceInfo preferredDevice,
            boolean initialLooping, float initialVolume) {
@@ -122,7 +128,7 @@ public class LocalRingtonePlayer
        Objects.requireNonNull(audioAttributes);
        Trace.beginSection("createFallbackLocalMediaPlayer");

        MediaPlayer mediaPlayer = new MediaPlayer();
        MediaPlayer mediaPlayer = injectables.newMediaPlayer();
        try {
            if (afd.getDeclaredLength() < 0) {
                mediaPlayer.setDataSource(afd.getFileDescriptor());
@@ -140,7 +146,7 @@ public class LocalRingtonePlayer
                volumeShaper = mediaPlayer.createVolumeShaper(volumeShaperConfig);
            }
            mediaPlayer.prepare();
            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, audioManager,
            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, injectables, audioManager,
                    /* hapticGenerator= */ null, volumeShaper);
        } catch (SecurityException | IOException e) {
            Log.e(TAG, "Failed to open fallback ringtone");
@@ -202,7 +208,7 @@ public class LocalRingtonePlayer
    @Override
    public void setHapticGeneratorEnabled(boolean enabled) {
        if (enabled && mHapticGenerator == null) {
            mHapticGenerator = HapticGenerator.create(mMediaPlayer.getAudioSessionId());
            mHapticGenerator = mInjectables.createHapticGenerator(mMediaPlayer);
        }
        if (mHapticGenerator != null) {
            mHapticGenerator.setEnabled(enabled);
Loading