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

Commit 4c3ecce0 authored by Nick Moukhine's avatar Nick Moukhine Committed by Android (Google) Code Review
Browse files

Merge "Add system service for music recognition."

parents 7c3ee071 cf47bdd8
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ package android {
    field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
    field public static final String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
    field public static final String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
    field public static final String BIND_MUSIC_RECOGNITION_SERVICE = "android.permission.BIND_MUSIC_RECOGNITION_SERVICE";
    field public static final String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
    field public static final String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
    field public static final String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
@@ -120,6 +121,7 @@ package android {
    field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
    field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION";
    field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
    field public static final String MANAGE_MUSIC_RECOGNITION = "android.permission.MANAGE_MUSIC_RECOGNITION";
    field public static final String MANAGE_ONE_TIME_PERMISSION_SESSIONS = "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS";
    field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
@@ -4617,6 +4619,58 @@ package android.media.audiopolicy {
}
package android.media.musicrecognition {
  public class MusicRecognitionManager {
    method @RequiresPermission(android.Manifest.permission.MANAGE_MUSIC_RECOGNITION) public void beginStreamingSearch(@NonNull android.media.musicrecognition.RecognitionRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.musicrecognition.MusicRecognitionManager.RecognitionCallback);
    field public static final int RECOGNITION_FAILED_AUDIO_UNAVAILABLE = 7; // 0x7
    field public static final int RECOGNITION_FAILED_NOT_FOUND = 1; // 0x1
    field public static final int RECOGNITION_FAILED_NO_CONNECTIVITY = 2; // 0x2
    field public static final int RECOGNITION_FAILED_SERVICE_KILLED = 5; // 0x5
    field public static final int RECOGNITION_FAILED_SERVICE_UNAVAILABLE = 3; // 0x3
    field public static final int RECOGNITION_FAILED_TIMEOUT = 6; // 0x6
    field public static final int RECOGNITION_FAILED_UNKNOWN = -1; // 0xffffffff
  }
  public static interface MusicRecognitionManager.RecognitionCallback {
    method public void onAudioStreamClosed();
    method public void onRecognitionFailed(@NonNull android.media.musicrecognition.RecognitionRequest, int);
    method public void onRecognitionSucceeded(@NonNull android.media.musicrecognition.RecognitionRequest, @NonNull android.media.MediaMetadata, @Nullable android.os.Bundle);
  }
  public abstract class MusicRecognitionService extends android.app.Service {
    ctor public MusicRecognitionService();
    method public abstract void onRecognize(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @NonNull android.media.musicrecognition.MusicRecognitionService.Callback);
  }
  public static interface MusicRecognitionService.Callback {
    method public void onRecognitionFailed(int);
    method public void onRecognitionSucceeded(@NonNull android.media.MediaMetadata, @Nullable android.os.Bundle);
  }
  public final class RecognitionRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.media.AudioAttributes getAudioAttributes();
    method @NonNull public android.media.AudioFormat getAudioFormat();
    method public int getCaptureSession();
    method public int getIgnoreBeginningFrames();
    method public int getMaxAudioLengthSeconds();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.media.musicrecognition.RecognitionRequest> CREATOR;
  }
  public static final class RecognitionRequest.Builder {
    ctor public RecognitionRequest.Builder();
    method @NonNull public android.media.musicrecognition.RecognitionRequest build();
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setAudioFormat(@NonNull android.media.AudioFormat);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setCaptureSession(int);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setIgnoreBeginningFrames(int);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setMaxAudioLengthSeconds(int);
  }
}
package android.media.session {
  public final class MediaSessionManager {
+51 −0
Original line number Diff line number Diff line
@@ -2035,6 +2035,57 @@ package android.media.audiopolicy {

}

package android.media.musicrecognition {

  public class MusicRecognitionManager {
    field public static final int RECOGNITION_FAILED_AUDIO_UNAVAILABLE = 7; // 0x7
    field public static final int RECOGNITION_FAILED_NOT_FOUND = 1; // 0x1
    field public static final int RECOGNITION_FAILED_NO_CONNECTIVITY = 2; // 0x2
    field public static final int RECOGNITION_FAILED_SERVICE_KILLED = 5; // 0x5
    field public static final int RECOGNITION_FAILED_SERVICE_UNAVAILABLE = 3; // 0x3
    field public static final int RECOGNITION_FAILED_TIMEOUT = 6; // 0x6
    field public static final int RECOGNITION_FAILED_UNKNOWN = -1; // 0xffffffff
  }

  public static interface MusicRecognitionManager.RecognitionCallback {
    method public void onAudioStreamClosed();
    method public void onRecognitionFailed(@NonNull android.media.musicrecognition.RecognitionRequest, int);
    method public void onRecognitionSucceeded(@NonNull android.media.musicrecognition.RecognitionRequest, @NonNull android.media.MediaMetadata, @Nullable android.os.Bundle);
  }

  public abstract class MusicRecognitionService extends android.app.Service {
    ctor public MusicRecognitionService();
    method public abstract void onRecognize(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @NonNull android.media.musicrecognition.MusicRecognitionService.Callback);
  }

  public static interface MusicRecognitionService.Callback {
    method public void onRecognitionFailed(int);
    method public void onRecognitionSucceeded(@NonNull android.media.MediaMetadata, @Nullable android.os.Bundle);
  }

  public final class RecognitionRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.media.AudioAttributes getAudioAttributes();
    method @NonNull public android.media.AudioFormat getAudioFormat();
    method public int getCaptureSession();
    method public int getIgnoreBeginningFrames();
    method public int getMaxAudioLengthSeconds();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.media.musicrecognition.RecognitionRequest> CREATOR;
  }

  public static final class RecognitionRequest.Builder {
    ctor public RecognitionRequest.Builder();
    method @NonNull public android.media.musicrecognition.RecognitionRequest build();
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setAudioFormat(@NonNull android.media.AudioFormat);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setCaptureSession(int);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setIgnoreBeginningFrames(int);
    method @NonNull public android.media.musicrecognition.RecognitionRequest.Builder setMaxAudioLengthSeconds(int);
  }

}

package android.media.tv {

  public final class TvInputManager {
+13 −0
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ import android.media.MediaRouter;
import android.media.MediaTranscodeManager;
import android.media.midi.IMidiManager;
import android.media.midi.MidiManager;
import android.media.musicrecognition.IMusicRecognitionManager;
import android.media.musicrecognition.MusicRecognitionManager;
import android.media.projection.MediaProjectionManager;
import android.media.soundtrigger.SoundTriggerManager;
import android.media.tv.ITvInputManager;
@@ -1119,6 +1121,17 @@ public final class SystemServiceRegistry {
                return new AutofillManager(ctx.getOuterContext(), service);
            }});

        registerService(Context.MUSIC_RECOGNITION_SERVICE, MusicRecognitionManager.class,
                new CachedServiceFetcher<MusicRecognitionManager>() {
                    @Override
                    public MusicRecognitionManager createService(ContextImpl ctx) {
                        IBinder b = ServiceManager.getService(
                                Context.MUSIC_RECOGNITION_SERVICE);
                        return new MusicRecognitionManager(
                                IMusicRecognitionManager.Stub.asInterface(b));
                    }
                });

        registerService(Context.CONTENT_CAPTURE_MANAGER_SERVICE, ContentCaptureManager.class,
                new CachedServiceFetcher<ContentCaptureManager>() {
            @Override
+8 −0
Original line number Diff line number Diff line
@@ -4501,6 +4501,14 @@ public abstract class Context {
     */
    public static final String SOUND_TRIGGER_MIDDLEWARE_SERVICE = "soundtrigger_middleware";

    /**
     * Used to access {@link MusicRecognitionManagerService}.
     *
     * @hide
     * @see #getSystemService(String)
     */
    public static final String MUSIC_RECOGNITION_SERVICE = "music_recognition";

    /**
     * Official published name of the (internal) permission service.
     *
+13 −0
Original line number Diff line number Diff line
@@ -3488,6 +3488,14 @@
    <permission android:name="android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE"
                android:protectionLevel="signature" />

    <!-- Must be declared by a android.service.musicrecognition.MusicRecognitionService,
         to ensure that only the system can bind to it.
         @SystemApi @hide This is not a third-party API (intended for OEMs and system apps).
         <p>Protection level: signature
    -->
    <permission android:name="android.permission.BIND_MUSIC_RECOGNITION_SERVICE"
        android:protectionLevel="signature" />

    <!-- Must be required by a android.service.autofill.augmented.AugmentedAutofillService,
         to ensure that only the system can bind to it.
         @SystemApi @hide This is not a third-party API (intended for OEMs and system apps).
@@ -4879,6 +4887,11 @@
    <permission android:name="android.permission.MANAGE_CONTENT_CAPTURE"
        android:protectionLevel="signature" />

    <!-- @SystemApi Allows an application to manage the music recognition service.
         @hide  <p>Not for use by third-party applications.</p> -->
    <permission android:name="android.permission.MANAGE_MUSIC_RECOGNITION"
        android:protectionLevel="signature" />

    <!-- @SystemApi Allows an application to manage the content suggestions service.
         @hide  <p>Not for use by third-party applications.</p> -->
    <permission android:name="android.permission.MANAGE_CONTENT_SUGGESTIONS"
Loading