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

Commit ce48965c authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android (Google) Code Review
Browse files

Merge "Audio focus: SDK/System API updates"

parents 503b5ccc 50750ff1
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -20976,8 +20976,6 @@ package android.media {
    method public boolean acceptsDelayedFocusGain();
    method public android.media.AudioAttributes getAudioAttributes();
    method public int getFocusGain();
    method public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
    method public android.os.Handler getOnAudioFocusChangeListenerHandler();
    method public boolean willPauseWhenDucked();
  }
+5 −4
Original line number Diff line number Diff line
@@ -22729,8 +22729,7 @@ package android.media {
    method public boolean acceptsDelayedFocusGain();
    method public android.media.AudioAttributes getAudioAttributes();
    method public int getFocusGain();
    method public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
    method public android.os.Handler getOnAudioFocusChangeListenerHandler();
    method public boolean locksFocus();
    method public boolean willPauseWhenDucked();
  }
@@ -22741,6 +22740,7 @@ package android.media {
    method public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
    method public android.media.AudioFocusRequest.Builder setAudioAttributes(android.media.AudioAttributes);
    method public android.media.AudioFocusRequest.Builder setFocusGain(int);
    method public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
    method public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(android.media.AudioManager.OnAudioFocusChangeListener, android.os.Handler);
    method public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
  }
@@ -22821,7 +22821,7 @@ package android.media {
  public class AudioManager {
    method public deprecated int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
    method public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
    method public deprecated int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
    method public int abandonAudioFocusRequest(android.media.AudioFocusRequest);
    method public void adjustStreamVolume(int, int, int);
    method public void adjustSuggestedStreamVolume(int, int, int);
@@ -22863,7 +22863,8 @@ package android.media {
    method public deprecated int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
    method public int requestAudioFocus(android.media.AudioFocusRequest);
    method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
    method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
    method public deprecated int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
    method public int requestAudioFocus(android.media.AudioFocusRequest, android.media.audiopolicy.AudioPolicy);
    method public deprecated void setBluetoothA2dpOn(boolean);
    method public void setBluetoothScoOn(boolean);
    method public void setMicrophoneMute(boolean);
+0 −2
Original line number Diff line number Diff line
@@ -21078,8 +21078,6 @@ package android.media {
    method public boolean acceptsDelayedFocusGain();
    method public android.media.AudioAttributes getAudioAttributes();
    method public int getFocusGain();
    method public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
    method public android.os.Handler getOnAudioFocusChangeListenerHandler();
    method public boolean willPauseWhenDucked();
  }
+48 −8
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.media;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.media.AudioManager.OnAudioFocusChangeListener;
import android.os.Handler;
import android.os.Looper;
@@ -48,7 +49,6 @@ public final class AudioFocusRequest {
    private final int mFocusGain;
    private final int mFlags;

    //TODO implement use of optional handler
    private AudioFocusRequest(OnAudioFocusChangeListener listener, Handler handler,
            AudioAttributes attr, int focusGain, int flags) {
        mFocusListener = listener;
@@ -77,6 +77,7 @@ public final class AudioFocusRequest {
    }

    /**
     * @hide
     * Returns the focus change listener set for this {@code AudioFocusRequest}.
     * @return null if no {@link AudioManager.OnAudioFocusChangeListener} was set.
     */
@@ -85,6 +86,7 @@ public final class AudioFocusRequest {
    }

    /**
     * @hide
     * Returns the {@link Handler} to be used for the focus change listener.
     * @return the same {@code Handler} set in.
     *   {@link Builder#setOnAudioFocusChangeListener(OnAudioFocusChangeListener, Handler)}, or null
@@ -134,6 +136,18 @@ public final class AudioFocusRequest {
                == AudioManager.AUDIOFOCUS_FLAG_DELAY_OK;
    }

    /**
     * @hide
     * Returns whether audio focus will be locked (i.e. focus cannot change) as a result of this
     * focus request being successful.
     * @return whether this request will lock focus.
     */
    @SystemApi
    public boolean locksFocus() {
        return (mFlags & AudioManager.AUDIOFOCUS_FLAG_LOCK)
                == AudioManager.AUDIOFOCUS_FLAG_LOCK;
    }

    int getFlags() {
        return mFlags;
    }
@@ -158,9 +172,16 @@ public final class AudioFocusRequest {
     *  ...
     * mMediaPlayer.setAudioAttributes(mPlaybackAttributes);
     *  ...
     * mAudioManager.requestAudioFocus(mFocusRequest);
     *  ...
     * mAudioManager.abandonAudioFocusRequest(mFocusRequest);
     * boolean mPlaybackAuthorized = true;;
     * int res = mAudioManager.requestAudioFocus(mFocusRequest);
     * if (res == AUDIOFOCUS_REQUEST_FAILED) {
     *     mPlaybackAuthorized = false;
     *     cancelPlayback();
     * } else if (res == AUDIOFOCUS_REQUEST_DELAYED) {
     *     playbackDelayed();
     * } else { // res == AUDIOFOCUS_REQUEST_GRANTED
     *     playbackNow();
     * }
     * </pre>
     *
     */
@@ -171,6 +192,7 @@ public final class AudioFocusRequest {
        private int mFocusGain;
        private boolean mPausesOnDuck = false;
        private boolean mDelayedFocus = false;
        private boolean mFocusLocked = false;

        /**
         * Constructs a new {@code Builder}, and specifies how audio focus
@@ -178,7 +200,8 @@ public final class AudioFocusRequest {
         * {@link AudioManager#AUDIOFOCUS_GAIN}, {@link AudioManager#AUDIOFOCUS_GAIN_TRANSIENT},
         * {@link AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK}, and
         * {@link AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE}.
         * <p>By default there is no focus change listener, and the <code>AudioAttributes</code>
         * <p>By default there is no focus change listener, delayed focus is not supported, ducking
         * is suitable for the application, and the <code>AudioAttributes</code>
         * have a usage of {@link AudioAttributes#USAGE_MEDIA}.
         * @param focusGain the type of audio focus gain that will be requested
         * @throws IllegalArgumentException thrown when an invalid focus gain type is used
@@ -258,11 +281,11 @@ public final class AudioFocusRequest {
         * in {@code AudioTrack}.
         * @param attributes the {@link AudioAttributes} for the focus request.
         * @return this {@code Builder} instance.
         * @throws IllegalArgumentException thrown when using null for the attributes.
         * @throws NullPointerException thrown when using null for the attributes.
         */
        public @NonNull Builder setAudioAttributes(@NonNull AudioAttributes attributes) {
            if (attributes == null) {
                throw new IllegalArgumentException("Illegal null AudioAttributes");
                throw new NullPointerException("Illegal null AudioAttributes");
            }
            mAttr = attributes;
            return this;
@@ -298,6 +321,22 @@ public final class AudioFocusRequest {
            return this;
        }

        /**
         * @hide
         * Marks this focus request as locking audio focus so granting is temporarily disabled.
         * This feature can only be used by owners of a registered
         * {@link android.media.audiopolicy.AudioPolicy} in
         * {@link AudioManager#requestAudioFocus(AudioFocusRequest, android.media.audiopolicy.AudioPolicy)}.
         * Setting to false is the same as the default behavior.
         * @param focusLocked true when locking focus
         * @return this {@code Builder} instance
         */
        @SystemApi
        public @NonNull Builder setLocksFocus(boolean focusLocked) {
            mFocusLocked = focusLocked;
            return this;
        }

        /**
         * Builds a new {@code AudioFocusRequest} instance combining all the information gathered
         * by this {@code Builder}'s configuration methods.
@@ -313,7 +352,8 @@ public final class AudioFocusRequest {
            }
            final int flags = 0
                    | (mDelayedFocus ? AudioManager.AUDIOFOCUS_FLAG_DELAY_OK : 0)
                    | (mPausesOnDuck ? AudioManager.AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS : 0);
                    | (mPausesOnDuck ? AudioManager.AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS : 0)
                    | (mFocusLocked  ? AudioManager.AUDIOFOCUS_FLAG_LOCK : 0);
            return new AudioFocusRequest(mFocusListener, mListenerHandler,
                    mAttr, mFocusGain, flags);
        }
+153 −99

File changed.

Preview size limit exceeded, changes collapsed.

Loading