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

Commit 7492a4c1 authored by Jae Seo's avatar Jae Seo Committed by Android (Google) Code Review
Browse files

Merge "API review: android.media.tv" into lmp-dev

parents b67d7e23 2778f5a7
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -16726,10 +16726,10 @@ package android.media.tv {
  }
  public final class TvInputInfo implements android.os.Parcelable {
    method public android.content.Intent createSettingsIntent();
    method public android.content.Intent createSetupIntent();
    method public int describeContents();
    method public java.lang.String getId();
    method public android.content.Intent getIntentForSettingsActivity();
    method public android.content.Intent getIntentForSetupActivity();
    method public java.lang.String getParentId();
    method public android.content.pm.ServiceInfo getServiceInfo();
    method public int getType();
@@ -16737,7 +16737,8 @@ package android.media.tv {
    method public android.graphics.drawable.Drawable loadIcon(android.content.Context);
    method public java.lang.CharSequence loadLabel(android.content.Context);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final java.lang.String EXTRA_INPUT_ID = "inputId";
    field public static final android.os.Parcelable.Creator CREATOR;
    field public static final java.lang.String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
    field public static final int TYPE_COMPONENT = 1004; // 0x3ec
    field public static final int TYPE_COMPOSITE = 1001; // 0x3e9
    field public static final int TYPE_DISPLAY_PORT = 1008; // 0x3f0
@@ -16756,23 +16757,23 @@ package android.media.tv {
    method public java.util.List<android.media.tv.TvInputInfo> getTvInputList();
    method public boolean isParentalControlsEnabled();
    method public boolean isRatingBlocked(android.media.tv.TvContentRating);
    method public void registerListener(android.media.tv.TvInputManager.TvInputListener, android.os.Handler);
    method public void unregisterListener(android.media.tv.TvInputManager.TvInputListener);
    field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.TvInputManager.ACTION_BLOCKED_RATINGS_CHANGED";
    field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.TvInputManager.ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED";
    field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.TvInputManager.ACTION_QUERY_CONTENT_RATING_SYSTEMS";
    method public void registerCallback(android.media.tv.TvInputManager.TvInputCallback, android.os.Handler);
    method public void unregisterCallback(android.media.tv.TvInputManager.TvInputCallback);
    field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
    field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
    field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
    field public static final int INPUT_STATE_CONNECTED = 0; // 0x0
    field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1
    field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2
    field public static final java.lang.String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.TvInputManager.META_DATA_CONTENT_RATING_SYSTEMS";
    field public static final java.lang.String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
    field public static final int VIDEO_UNAVAILABLE_REASON_BUFFERING = 3; // 0x3
    field public static final int VIDEO_UNAVAILABLE_REASON_TUNING = 1; // 0x1
    field public static final int VIDEO_UNAVAILABLE_REASON_UNKNOWN = 0; // 0x0
    field public static final int VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL = 2; // 0x2
  }
  public static abstract class TvInputManager.TvInputListener {
    ctor public TvInputManager.TvInputListener();
  public static abstract class TvInputManager.TvInputCallback {
    ctor public TvInputManager.TvInputCallback();
    method public void onInputAdded(java.lang.String);
    method public void onInputRemoved(java.lang.String);
    method public void onInputStateChanged(java.lang.String, int);
@@ -16863,10 +16864,10 @@ package android.media.tv {
    method public boolean onUnhandledInputEvent(android.view.InputEvent);
    method public void reset();
    method public void selectTrack(int, java.lang.String);
    method public void setCallback(android.media.tv.TvView.TvInputCallback);
    method public void setCaptionEnabled(boolean);
    method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
    method public void setStreamVolume(float);
    method public void setTvInputListener(android.media.tv.TvView.TvInputListener);
    method public void tune(java.lang.String, android.net.Uri);
  }
@@ -16874,8 +16875,8 @@ package android.media.tv {
    method public abstract boolean onUnhandledInputEvent(android.view.InputEvent);
  }
  public static abstract class TvView.TvInputListener {
    ctor public TvView.TvInputListener();
  public static abstract class TvView.TvInputCallback {
    ctor public TvView.TvInputCallback();
    method public void onChannelRetuned(java.lang.String, android.net.Uri);
    method public void onConnectionFailed(java.lang.String);
    method public void onContentAllowed(java.lang.String);
+5 −9
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ public final class TvInputInfo implements Parcelable {
    /**
     * The ID of the TV input to provide to the setup activity and settings activity.
     */
    public static final String EXTRA_INPUT_ID = "inputId";
    public static final String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";

    private static SparseIntArray sHardwareTypeToTvInputType = new SparseIntArray();

@@ -319,9 +319,9 @@ public final class TvInputInfo implements Parcelable {
    }

    /**
     * Returns an intent to start the setup activity for this TV input service.
     * Returns an intent to start the setup activity for this TV input.
     */
    public Intent getIntentForSetupActivity() {
    public Intent createSetupIntent() {
        if (!TextUtils.isEmpty(mSetupActivity)) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setClassName(mService.serviceInfo.packageName, mSetupActivity);
@@ -332,9 +332,9 @@ public final class TvInputInfo implements Parcelable {
    }

    /**
     * Returns an intent to start the settings activity for this TV input service.
     * Returns an intent to start the settings activity for this TV input.
     */
    public Intent getIntentForSettingsActivity() {
    public Intent createSettingsIntent() {
        if (!TextUtils.isEmpty(mSettingsActivity)) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setClassName(mService.serviceInfo.packageName, mSettingsActivity);
@@ -532,10 +532,6 @@ public final class TvInputInfo implements Parcelable {
                DELIMITER_INFO_IN_ID, PREFIX_HARDWARE_DEVICE, hardwareInfo.getDeviceId());
    }

    /**
     * Used to make this class parcelable.
     * @hide
     */
    public static final Parcelable.Creator<TvInputInfo> CREATOR =
            new Parcelable.Creator<TvInputInfo>() {
        @Override
+38 −38
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ public final class TvInputManager {
     * The TV input is connected.
     * <p>
     * State for {@link #getInputState} and {@link
     * TvInputManager.TvInputListener#onInputStateChanged}.
     * TvInputManager.TvInputCallback#onInputStateChanged}.
     * </p>
     */
    public static final int INPUT_STATE_CONNECTED = 0;
@@ -84,7 +84,7 @@ public final class TvInputManager {
     * fully ready.
     * <p>
     * State for {@link #getInputState} and {@link
     * TvInputManager.TvInputListener#onInputStateChanged}.
     * TvInputManager.TvInputCallback#onInputStateChanged}.
     * </p>
     */
    public static final int INPUT_STATE_CONNECTED_STANDBY = 1;
@@ -92,7 +92,7 @@ public final class TvInputManager {
     * The TV input is disconnected.
     * <p>
     * State for {@link #getInputState} and {@link
     * TvInputManager.TvInputListener#onInputStateChanged}.
     * TvInputManager.TvInputCallback#onInputStateChanged}.
     * </p>
     */
    public static final int INPUT_STATE_DISCONNECTED = 2;
@@ -102,14 +102,14 @@ public final class TvInputManager {
     * {@link #isRatingBlocked}.
     */
    public static final String ACTION_BLOCKED_RATINGS_CHANGED =
            "android.media.tv.TvInputManager.ACTION_BLOCKED_RATINGS_CHANGED";
            "android.media.tv.action.BLOCKED_RATINGS_CHANGED";

    /**
     * Broadcast intent action when the parental controls enabled state changes. For use with the
     * {@link #isParentalControlsEnabled}.
     */
    public static final String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED =
            "android.media.tv.TvInputManager.ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED";
            "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";

    /**
     * Broadcast intent action used to query available content rating systems.
@@ -143,7 +143,7 @@ public final class TvInputManager {
     * @see TvContentRating
     */
    public static final String ACTION_QUERY_CONTENT_RATING_SYSTEMS =
            "android.media.tv.TvInputManager.ACTION_QUERY_CONTENT_RATING_SYSTEMS";
            "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";

    /**
     * Content rating systems metadata associated with {@link #ACTION_QUERY_CONTENT_RATING_SYSTEMS}.
@@ -153,15 +153,15 @@ public final class TvInputManager {
     * </p>
     */
    public static final String META_DATA_CONTENT_RATING_SYSTEMS =
            "android.media.tv.TvInputManager.META_DATA_CONTENT_RATING_SYSTEMS";
            "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";

    private final ITvInputManager mService;

    private final Object mLock = new Object();

    // @GuardedBy(mLock)
    private final List<TvInputListenerRecord> mTvInputListenerRecordsList =
            new LinkedList<TvInputListenerRecord>();
    private final List<TvInputCallbackRecord> mCallbackRecords =
            new LinkedList<TvInputCallbackRecord>();

    // A mapping from TV input ID to the state of corresponding input.
    // @GuardedBy(mLock)
@@ -177,7 +177,7 @@ public final class TvInputManager {

    private final ITvInputClient mClient;

    private final ITvInputManagerCallback mCallback;
    private final ITvInputManagerCallback mManagerCallback;

    private final int mUserId;

@@ -445,9 +445,9 @@ public final class TvInputManager {
    }

    /**
     * Interface used to monitor status of the TV input.
     * Callback used to monitor status of the TV input.
     */
    public abstract static class TvInputListener {
    public abstract static class TvInputCallback {
        /**
         * This is called when the state of a given TV input is changed.
         *
@@ -479,24 +479,24 @@ public final class TvInputManager {
        }
    }

    private static final class TvInputListenerRecord {
        private final TvInputListener mListener;
    private static final class TvInputCallbackRecord {
        private final TvInputCallback mCallback;
        private final Handler mHandler;

        public TvInputListenerRecord(TvInputListener listener, Handler handler) {
            mListener = listener;
        public TvInputCallbackRecord(TvInputCallback callback, Handler handler) {
            mCallback = callback;
            mHandler = handler;
        }

        public TvInputListener getListener() {
            return mListener;
        public TvInputCallback getCallback() {
            return mCallback;
        }

        public void postInputStateChanged(final String inputId, final int state) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    mListener.onInputStateChanged(inputId, state);
                    mCallback.onInputStateChanged(inputId, state);
                }
            });
        }
@@ -505,7 +505,7 @@ public final class TvInputManager {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    mListener.onInputAdded(inputId);
                    mCallback.onInputAdded(inputId);
                }
            });
        }
@@ -514,7 +514,7 @@ public final class TvInputManager {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    mListener.onInputRemoved(inputId);
                    mCallback.onInputRemoved(inputId);
                }
            });
        }
@@ -677,12 +677,12 @@ public final class TvInputManager {
                }
            }
        };
        mCallback = new ITvInputManagerCallback.Stub() {
        mManagerCallback = new ITvInputManagerCallback.Stub() {
            @Override
            public void onInputStateChanged(String inputId, int state) {
                synchronized (mLock) {
                    mStateMap.put(inputId, state);
                    for (TvInputListenerRecord record : mTvInputListenerRecordsList) {
                    for (TvInputCallbackRecord record : mCallbackRecords) {
                        record.postInputStateChanged(inputId, state);
                    }
                }
@@ -692,7 +692,7 @@ public final class TvInputManager {
            public void onInputAdded(String inputId) {
                synchronized (mLock) {
                    mStateMap.put(inputId, INPUT_STATE_CONNECTED);
                    for (TvInputListenerRecord record : mTvInputListenerRecordsList) {
                    for (TvInputCallbackRecord record : mCallbackRecords) {
                        record.postInputAdded(inputId);
                    }
                }
@@ -702,14 +702,14 @@ public final class TvInputManager {
            public void onInputRemoved(String inputId) {
                synchronized (mLock) {
                    mStateMap.remove(inputId);
                    for (TvInputListenerRecord record : mTvInputListenerRecordsList) {
                    for (TvInputCallbackRecord record : mCallbackRecords) {
                        record.postInputRemoved(inputId);
                    }
                }
            }
        };
        try {
            mService.registerCallback(mCallback, mUserId);
            mService.registerCallback(mManagerCallback, mUserId);
        } catch (RemoteException e) {
            Log.e(TAG, "mService.registerCallback failed: " + e);
        }
@@ -771,39 +771,39 @@ public final class TvInputManager {
    }

    /**
     * Registers a {@link TvInputListener}.
     * Registers a {@link TvInputCallback}.
     *
     * @param listener A listener used to monitor status of the TV inputs.
     * @param callback A callback used to monitor status of the TV inputs.
     * @param handler A {@link Handler} that the status change will be delivered to.
     * @throws IllegalArgumentException if any of the arguments is {@code null}.
     */
    public void registerListener(TvInputListener listener, Handler handler) {
        if (listener == null) {
    public void registerCallback(TvInputCallback callback, Handler handler) {
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null");
        }
        if (handler == null) {
            throw new IllegalArgumentException("handler cannot be null");
        }
        synchronized (mLock) {
            mTvInputListenerRecordsList.add(new TvInputListenerRecord(listener, handler));
            mCallbackRecords.add(new TvInputCallbackRecord(callback, handler));
        }
    }

    /**
     * Unregisters the existing {@link TvInputListener}.
     * Unregisters the existing {@link TvInputCallback}.
     *
     * @param listener The existing listener to remove.
     * @param callback The existing callback to remove.
     * @throws IllegalArgumentException if any of the arguments is {@code null}.
     */
    public void unregisterListener(final TvInputListener listener) {
        if (listener == null) {
    public void unregisterCallback(final TvInputCallback callback) {
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null");
        }
        synchronized (mLock) {
            for (Iterator<TvInputListenerRecord> it = mTvInputListenerRecordsList.iterator();
            for (Iterator<TvInputCallbackRecord> it = mCallbackRecords.iterator();
                    it.hasNext(); ) {
                TvInputListenerRecord record = it.next();
                if (record.getListener() == listener) {
                TvInputCallbackRecord record = it.next();
                if (record.getCallback() == callback) {
                    it.remove();
                    break;
                }
+28 −28
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ public class TvView extends ViewGroup {
    private Rect mOverlayViewFrame;
    private final TvInputManager mTvInputManager;
    private MySessionCallback mSessionCallback;
    private TvInputListener mListener;
    private TvInputCallback mCallback;
    private OnUnhandledInputEventListener mOnUnhandledInputEventListener;
    private boolean mHasStreamVolume;
    private float mStreamVolume;
@@ -170,13 +170,13 @@ public class TvView extends ViewGroup {
    }

    /**
     * Sets a listener for events in this TvView.
     * Sets the callback to be invoked when an event is dispatched to this TvView.
     *
     * @param listener The listener to be called with events. A value of {@code null} removes any
     *         existing listener.
     * @param callback The callback to receive events. A value of {@code null} removes any existing
     *            callbacks.
     */
    public void setTvInputListener(TvInputListener listener) {
        mListener = listener;
    public void setCallback(TvInputCallback callback) {
        mCallback = callback;
    }

    /**
@@ -680,9 +680,9 @@ public class TvView extends ViewGroup {
    }

    /**
     * Interface used to receive various status updates on the {@link TvView}.
     * Callback used to receive various status updates on the {@link TvView}.
     */
    public abstract static class TvInputListener {
    public abstract static class TvInputCallback {

        /**
         * This is invoked when an error occurred while establishing a connection to the underlying
@@ -863,8 +863,8 @@ public class TvView extends ViewGroup {
                }
            } else {
                mSessionCallback = null;
                if (mListener != null) {
                    mListener.onConnectionFailed(mInputId);
                if (mCallback != null) {
                    mCallback.onConnectionFailed(mInputId);
                }
            }
        }
@@ -878,8 +878,8 @@ public class TvView extends ViewGroup {
            mOverlayViewFrame = null;
            mSessionCallback = null;
            mSession = null;
            if (mListener != null) {
                mListener.onDisconnected(mInputId);
            if (mCallback != null) {
                mCallback.onDisconnected(mInputId);
            }
        }

@@ -891,8 +891,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onChannelChangedByTvInput(" + channelUri + ")");
            }
            if (mListener != null) {
                mListener.onChannelRetuned(mInputId, channelUri);
            if (mCallback != null) {
                mCallback.onChannelRetuned(mInputId, channelUri);
            }
        }

@@ -904,8 +904,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onTracksChanged()");
            }
            if (mListener != null) {
                mListener.onTracksChanged(mInputId, tracks);
            if (mCallback != null) {
                mCallback.onTracksChanged(mInputId, tracks);
            }
        }

@@ -918,8 +918,8 @@ public class TvView extends ViewGroup {
                Log.d(TAG, "onTrackSelected()");
            }
            // TODO: Update the video size when the type is TYPE_VIDEO.
            if (mListener != null) {
                mListener.onTrackSelected(mInputId, type, trackId);
            if (mCallback != null) {
                mCallback.onTrackSelected(mInputId, type, trackId);
            }
        }

@@ -931,8 +931,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onVideoAvailable()");
            }
            if (mListener != null) {
                mListener.onVideoAvailable(mInputId);
            if (mCallback != null) {
                mCallback.onVideoAvailable(mInputId);
            }
        }

@@ -944,8 +944,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onVideoUnavailable(" + reason + ")");
            }
            if (mListener != null) {
                mListener.onVideoUnavailable(mInputId, reason);
            if (mCallback != null) {
                mCallback.onVideoUnavailable(mInputId, reason);
            }
        }

@@ -957,8 +957,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onContentAllowed()");
            }
            if (mListener != null) {
                mListener.onContentAllowed(mInputId);
            if (mCallback != null) {
                mCallback.onContentAllowed(mInputId);
            }
        }

@@ -970,8 +970,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onContentBlocked()");
            }
            if (mListener != null) {
                mListener.onContentBlocked(mInputId, rating);
            if (mCallback != null) {
                mCallback.onContentBlocked(mInputId, rating);
            }
        }

@@ -1000,8 +1000,8 @@ public class TvView extends ViewGroup {
            if (DEBUG) {
                Log.d(TAG, "onSessionEvent(" + eventType + ")");
            }
            if (mListener != null) {
                mListener.onEvent(mInputId, eventType, eventArgs);
            if (mCallback != null) {
                mCallback.onEvent(mInputId, eventType, eventArgs);
            }
        }
    }