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

Commit 22483664 authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge changes from topic "startAudioSource_issues" am: 45da2609 am: 28ccf9bf

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1678048

Change-Id: I3de8128a6e2860e99effc18a6753eeea25213767
parents 2c8ec7bb 28ccf9bf
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -35,7 +35,13 @@ public class HwAudioSource extends PlayerBase {
    private final AudioDeviceInfo mAudioDeviceInfo;
    private final AudioAttributes mAudioAttributes;

    private int mNativeHandle;
    /**
     * The value of the native handle encodes the HwAudioSource state.
     * The native handle returned by {@link AudioSystem#startAudioSource} is either valid
     * (aka > 0, so successfully started) or hosting an error code (negative).
     * 0 corresponds to an untialized or stopped HwAudioSource.
     */
    private int mNativeHandle = 0;

    /**
     * Class constructor for a hardware audio source based player.
@@ -127,29 +133,38 @@ public class HwAudioSource extends PlayerBase {

    /**
     * Starts the playback from {@link AudioDeviceInfo}.
     * Starts does not return any error code, caller must check {@link HwAudioSource#isPlaying} to
     * ensure the state of the HwAudioSource encoded in {@link mNativeHandle}.
     */
    public void start() {
        Preconditions.checkState(!isPlaying(), "HwAudioSource is currently playing");
        baseStart();
        mNativeHandle = AudioSystem.startAudioSource(
                mAudioDeviceInfo.getPort().activeConfig(),
                mAudioAttributes);
        if (isPlaying()) {
            baseStart();
        }
    }

    /**
     * Checks whether the HwAudioSource player is playing.
     * It checks the state of the HwAudioSource encoded in {@link HwAudioSource#isPlaying}.
     * 0 corresponds to a stopped or uninitialized HwAudioSource.
     * Negative value corresponds to a status reported by {@link AudioSystem#startAudioSource} to
     * indicate a failure when trying to start the HwAudioSource.
     *
     * @return true if currently playing, false otherwise
     */
    public boolean isPlaying() {
        return mNativeHandle != 0;
        return mNativeHandle > 0;
    }

    /**
     * Stops the playback from {@link AudioDeviceInfo}.
     */
    public void stop() {
        baseStop();
        if (mNativeHandle > 0) {
            baseStop();
            AudioSystem.stopAudioSource(mNativeHandle);
            mNativeHandle = 0;
        }