Merge "AudioTrack.Builder should throw exception on failure." into mnc-dev
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index f395cb3..62810c6 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -661,9 +661,10 @@
         /**
          * 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 @@
                     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());
             }