/*
 * Copyright (C) 2019 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.car.media;

import android.car.media.ICarMediaSourceListener;
import android.content.ComponentName;

/**
 * Binder interface for {@link android.car.media.CarMediaManager}.
 * Check {@link android.car.media.CarMediaManager} APIs for expected behavior of each call.
 *
 * @hide
 */
interface ICarMedia {
    /** Gets the currently active media source for the provided mode */
    ComponentName getMediaSource(int mode, int userId);
    /** Sets the currently active media source for the provided mode */
    void setMediaSource(in ComponentName mediaSource, int mode, int userId);
    /** Register a callback that receives updates to the active media source */
    void registerMediaSourceListener(in ICarMediaSourceListener callback, int mode, int userId);
    /** Unregister a callback that receives updates to the active media source */
    void unregisterMediaSourceListener(in ICarMediaSourceListener callback, int mode, int userId);
    /** Retrieve a list of media sources, ordered by most recently used */
    List<ComponentName> getLastMediaSources(int mode, int userId);
    /** Returns whether the browse and playback sources can be changed independently. */
    boolean isIndependentPlaybackConfig(int userId);
    /** Sets whether the browse and playback sources can be changed independently. */
    void setIndependentPlaybackConfig(boolean independent, int userId);
}
