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

Commit 2d2d8936 authored by Andy Hung's avatar Andy Hung
Browse files

AudioTrack.Builder should throw exception on failure.

Should throw UnsupportedOperationException instead of returning
an uninitialized track object.

Bug: 21890643
Change-Id: I34df73b316fcb490be05eb3beff06b795645fd4c
parent e244922a
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -661,9 +661,10 @@ public class AudioTrack
        /**
         * Builds an {@link AudioTrack} instance initialized with all the parameters set
         * on this <code>Builder</code>.
         * @return a new {@link AudioTrack} instance.
         * @return a new successfully initialized {@link AudioTrack} instance.
         * @throws UnsupportedOperationException if the parameters set on the <code>Builder</code>
         *     were incompatible, or if they are not supported by the device.
         *     were incompatible, or if they are not supported by the device,
         *     or if the device was not available.
         */
        public @NonNull AudioTrack build() throws UnsupportedOperationException {
            if (mAttributes == null) {
@@ -686,7 +687,13 @@ public class AudioTrack
                    mBufferSizeInBytes = mFormat.getChannelCount()
                            * mFormat.getBytesPerSample(mFormat.getEncoding());
                }
                return new AudioTrack(mAttributes, mFormat, mBufferSizeInBytes, mMode, mSessionId);
                final AudioTrack track = new AudioTrack(
                        mAttributes, mFormat, mBufferSizeInBytes, mMode, mSessionId);
                if (track.getState() == STATE_UNINITIALIZED) {
                    // release is not necessary
                    throw new UnsupportedOperationException("Cannot create AudioTrack");
                }
                return track;
            } catch (IllegalArgumentException e) {
                throw new UnsupportedOperationException(e.getMessage());
            }