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

Commit 970adf07 authored by Kyunglyul Hyun's avatar Kyunglyul Hyun
Browse files

[Media ML] Let MCS manage MediaSession2

This CL adds
 - MediaCommunicationManager#notifySession2Created
 - MediaCommunicationManager#getSession2Tokens
, which replaces the same methods in MediaSessionManager

to let MediacommunicationService manage MediaSession2.

MediaSessionService gets notified of created MediaSession2 instances
by adding a callback to MCM.

Bug: 180417011
Test: atest MediaSessionManagerTest MediaCommunicationManagerTest
Change-Id: Ia5ffdcd15573d1223ca520cfa8eca3b976874118
parent fdcfd2a2
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -15,7 +15,17 @@
 */
package android.media;

import android.media.Session2Token;
import android.media.IMediaCommunicationServiceCallback;
import android.media.MediaParceledListSlice;

/** {@hide} */
interface IMediaCommunicationService {
    void notifySession2Created(in Session2Token sessionToken);
    boolean isTrusted(String controllerPackageName, int controllerPid, int controllerUid);
    MediaParceledListSlice getSession2Tokens(int userId);

    void registerCallback(IMediaCommunicationServiceCallback callback, String packageName);
    void unregisterCallback(IMediaCommunicationServiceCallback callback);
}
+26 −0
Original line number Diff line number Diff line
/**
 * Copyright 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.media;

import android.media.Session2Token;
import android.media.MediaParceledListSlice;

/** {@hide} */
interface IMediaCommunicationServiceCallback {
    void onSession2Created(in Session2Token token);
    void onSession2Changed(in MediaParceledListSlice tokens);
}
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ package android.media {
  }

  public class MediaCommunicationManager {
    method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens();
    method @IntRange(from=1) public int getVersion();
  }

+10 −0
Original line number Diff line number Diff line
// Signature format: 2.0
package android.media {

  public class MediaCommunicationManager {
    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void registerSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaCommunicationManager.SessionCallback);
    method public void unregisterSessionCallback(@NonNull android.media.MediaCommunicationManager.SessionCallback);
  }

  public static interface MediaCommunicationManager.SessionCallback {
    method public default void onSession2TokenCreated(@NonNull android.media.Session2Token);
    method public default void onSession2TokensChanged(@NonNull java.util.List<android.media.Session2Token>);
  }

  public class MediaFrameworkInitializer {
    method public static void registerServiceWrappers();
    method public static void setMediaServiceManager(@NonNull android.media.MediaServiceManager);
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.os.ResultReceiver;
import java.util.Objects;

/**
 * Handles incoming commands from {@link MediaSession2} to both {@link MediaController2}.
 * Handles incoming commands from {@link MediaSession2} to {@link MediaController2}.
 * @hide
 */
// @SystemApi
Loading