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

Commit e935a72f authored by Christian Frank's avatar Christian Frank Committed by Automerger Merge Worker
Browse files

Merge "Address corner case in which empty audio is requested and...

Merge "Address corner case in which empty audio is requested and MusicRecognitionManagerService crashes." into sc-dev am: 2b14f17e

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

Change-Id: I6636926f773360dae34404f78271555360819974
parents 85a76668 2b14f17e
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -208,6 +208,24 @@ public final class MusicRecognitionManagerPerUserService extends
            @NonNull RecognitionRequest recognitionRequest,
            IMusicRecognitionManagerCallback clientCallback,
            ParcelFileDescriptor audioSink) {
        int maxAudioLengthSeconds = Math.min(recognitionRequest.getMaxAudioLengthSeconds(),
                MAX_STREAMING_SECONDS);
        if (maxAudioLengthSeconds <= 0) {
            // TODO(b/192992319): A request to stream 0s of audio can be used to initialize the
            //  music recognition service implementation, hence not reporting an error here.
            // The TODO for Android T is to move this functionality into an init() API call.
            Slog.i(TAG, "No audio requested. Closing stream.");
            try {
                audioSink.close();
                clientCallback.onAudioStreamClosed();
            } catch (IOException e) {
                Slog.e(TAG, "Problem closing stream.", e);
            } catch (RemoteException ignored) {
                // Ignored.
            }
            return;
        }

        try {
            startRecordAudioOp(attributionTag);
        } catch (SecurityException e) {
@@ -224,8 +242,6 @@ public final class MusicRecognitionManagerPerUserService extends
            return;
        }

        int maxAudioLengthSeconds = Math.min(recognitionRequest.getMaxAudioLengthSeconds(),
                MAX_STREAMING_SECONDS);
        AudioRecord audioRecord = createAudioRecord(recognitionRequest, maxAudioLengthSeconds);
        try (OutputStream fos =
                     new ParcelFileDescriptor.AutoCloseOutputStream(audioSink)) {