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

Commit 6a13e1b4 authored by Jaewan Kim's avatar Jaewan Kim
Browse files

MediaSession2: Initial commit of SessionPlayer2

Bug: 72537268, 72527248
Test: Run MediaComponents test once
Change-Id: I6d8239bbf90ca34b0a8a0d3d0270a06999bb3fe8
parent ecdf034b
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -36,9 +36,9 @@ import java.lang.annotation.RetentionPolicy;
 * @hide
 */
public class MediaItem2 {
    // TODO(jaewan): Keep DataSourceDesc.
    private final int mFlags;
    private MediaMetadata2 mMetadata;
    private DataSourceDesc mDataSourceDesc;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
@@ -64,8 +64,10 @@ public class MediaItem2 {
     * @param metadata metadata with the media id.
     * @param flags The flags for this item.
     */
    public MediaItem2(@NonNull MediaMetadata2 metadata, @Flags int flags) {
    public MediaItem2(@Nullable MediaMetadata2 metadata,
            @Nullable DataSourceDesc data, @Flags int flags) {
        mFlags = flags;
        mDataSourceDesc = data;
        setMetadata(metadata);
    }

@@ -139,4 +141,8 @@ public class MediaItem2 {
    public @Nullable String getMediaId() {
        return mMetadata.getMediaId();
    }

    public @Nullable DataSourceDesc getDataSourceDesc() {
        return mDataSourceDesc;
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -64,7 +64,9 @@ public interface MediaPlayerInterface {
    @Nullable
    AudioAttributes getAudioAttributes();

    void setPlaylist(List<MediaItem2> item, PlaylistParams param);
    void setPlaylist(List<MediaItem2> list, PlaylistParams param);
    List<MediaItem2> getPlaylist();

    void setCurrentPlaylistItem(int index);
    void setPlaylistParams(PlaylistParams params);
    PlaylistParams getPlaylistParams();
+4 −0
Original line number Diff line number Diff line
@@ -1262,6 +1262,10 @@ public class MediaSession2 implements AutoCloseable {
        mProvider.setPlaylist_impl(playlist, param);
    }

    public List<MediaItem2> getPlaylist() {
        return mProvider.getPlaylist_impl();
    }

    /**
     * Sets the {@link PlaylistParams} for the current play list. Repeat/shuffle mode and metadata
     * for the list can be set by calling this method.
+142 −0
Original line number Diff line number Diff line
/*
 * Copyright 2018 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.annotation.SystemApi;
import android.content.Context;
import android.media.MediaSession2.PlaylistParams;
import android.media.update.ApiLoader;
import android.media.update.SessionPlayer2Provider;

import java.util.List;
import java.util.concurrent.Executor;

/**
 * Implementation of the {@link MediaPlayerInterface} which is backed by the {@link MediaPlayer2}
 * @hide
 */
public class SessionPlayer2 implements MediaPlayerInterface {
    private final SessionPlayer2Provider mProvider;

    public SessionPlayer2(Context context) {
        mProvider = ApiLoader.getProvider(context).createSessionPlayer2(context, this);
    }

    @Override
    public void play() {
        mProvider.play_impl();
    }

    @Override
    public void prepare() {
        mProvider.prepare_impl();
    }

    @Override
    public void pause() {
        mProvider.pause_impl();
    }

    @Override
    public void stop() {
        mProvider.stop_impl();
    }

    @Override
    public void skipToPrevious() {
        mProvider.skipToPrevious_impl();
    }

    @Override
    public void skipToNext() {
        mProvider.skipToNext_impl();
    }

    @Override
    public void seekTo(long pos) {
        mProvider.seekTo_impl(pos);
    }

    @Override
    public void fastForward() {
        mProvider.fastForward_impl();
    }

    @Override
    public void rewind() {
        mProvider.rewind_impl();
    }

    @Override
    public PlaybackState2 getPlaybackState() {
        return mProvider.getPlaybackState_impl();
    }

    @Override
    public void setAudioAttributes(AudioAttributes attributes) {
        mProvider.setAudioAttributes_impl(attributes);
    }

    @Override
    public AudioAttributes getAudioAttributes() {
        return mProvider.getAudioAttributes_impl();
    }

    @Override
    public void setPlaylist(List<MediaItem2> list, PlaylistParams param) {
        mProvider.setPlaylist_impl(list, param);
    }

    @Override
    public List<MediaItem2> getPlaylist() {
        return mProvider.getPlaylist_impl();
    }

    @Override
    public void setCurrentPlaylistItem(int index) {
        mProvider.setCurrentPlaylistItem_impl(index);
    }

    @Override
    public void setPlaylistParams(PlaylistParams params) {
        mProvider.setPlaylistParams_impl(params);
    }

    @Override
    public PlaylistParams getPlaylistParams() {
        return mProvider.getPlaylistParams_impl();
    }

    @Override
    public void addPlaybackListener(Executor executor, PlaybackListener listener) {
        mProvider.addPlaybackListener_impl(executor, listener);
    }

    @Override
    public void removePlaybackListener(PlaybackListener listener) {
        mProvider.removePlaybackListener_impl(listener);
    }

    public MediaPlayer2 getPlayer() {
        return mProvider.getPlayer_impl();
    }

    @SystemApi
    public SessionPlayer2Provider getProvider() {
        return mProvider;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public interface MediaSession2Provider extends TransportControlProvider {
            ResultReceiver receiver);
    void sendCustomCommand_impl(Command command, Bundle args);
    void setPlaylist_impl(List<MediaItem2> playlist, PlaylistParams param);
    List<MediaItem2> getPlaylist_impl();
    void setPlaylistParams_impl(PlaylistParams params);
    PlaylistParams getPlaylistParams_impl();

Loading