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

Commit 2c1c31c7 authored by Jae Seo's avatar Jae Seo
Browse files

TIF: Add a way to enable/disable caption

This is required to handle the case that an application wants to turn
on/off the caption explicitly (e.g. TvView in PIP). TV input service
implementation must respond to the request immediately to avoid any
legal implication since the captioning is imposed by the law in many
countries.

Bug: 14121898
Change-Id: I9600debae709fdc99065d7a0138ae69d1dffc9ba
parent 081f1a5b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -16171,6 +16171,7 @@ package android.media.tv {
    method public boolean onKeyUp(int, android.view.KeyEvent);
    method public abstract void onRelease();
    method public boolean onSelectTrack(android.media.tv.TvTrackInfo);
    method public abstract void onSetCaptionEnabled(boolean);
    method public abstract void onSetStreamVolume(float);
    method public abstract boolean onSetSurface(android.view.Surface);
    method public boolean onTouchEvent(android.view.MotionEvent);
@@ -16220,6 +16221,7 @@ package android.media.tv {
    method public boolean onUnhandledInputEvent(android.view.InputEvent);
    method public void reset();
    method public void selectTrack(android.media.tv.TvTrackInfo);
    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);
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ interface ITvInputManager {
    void setSurface(in IBinder sessionToken, in Surface surface, int userId);
    void setVolume(in IBinder sessionToken, float volume, int userId);
    void tune(in IBinder sessionToken, in Uri channelUri, int userId);
    void setCaptionEnabled(in IBinder sessionToken, boolean enabled, int userId);
    void selectTrack(in IBinder sessionToken, in TvTrackInfo track, int userId);
    void unselectTrack(in IBinder sessionToken, in TvTrackInfo track, int userId);

+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ oneway interface ITvInputSession {
    // is to introduce some new concepts that will solve a number of problems in audio policy today.
    void setVolume(float volume);
    void tune(in Uri channelUri);
    void setCaptionEnabled(boolean enabled);
    void selectTrack(in TvTrackInfo track);
    void unselectTrack(in TvTrackInfo track);

+15 −5
Original line number Diff line number Diff line
@@ -44,11 +44,12 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
    private static final int DO_SET_SURFACE = 2;
    private static final int DO_SET_VOLUME = 3;
    private static final int DO_TUNE = 4;
    private static final int DO_SELECT_TRACK = 5;
    private static final int DO_UNSELECT_TRACK = 6;
    private static final int DO_CREATE_OVERLAY_VIEW = 7;
    private static final int DO_RELAYOUT_OVERLAY_VIEW = 8;
    private static final int DO_REMOVE_OVERLAY_VIEW = 9;
    private static final int DO_SET_CAPTION_ENABLED = 5;
    private static final int DO_SELECT_TRACK = 6;
    private static final int DO_UNSELECT_TRACK = 7;
    private static final int DO_CREATE_OVERLAY_VIEW = 8;
    private static final int DO_RELAYOUT_OVERLAY_VIEW = 9;
    private static final int DO_REMOVE_OVERLAY_VIEW = 10;

    private final HandlerCaller mCaller;

@@ -98,6 +99,10 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
                mTvInputSessionImpl.tune((Uri) msg.obj);
                return;
            }
            case DO_SET_CAPTION_ENABLED: {
                mTvInputSessionImpl.setCaptionEnabled((Boolean) msg.obj);
                return;
            }
            case DO_SELECT_TRACK: {
                mTvInputSessionImpl.selectTrack((TvTrackInfo) msg.obj);
                return;
@@ -147,6 +152,11 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_TUNE, channelUri));
    }

    @Override
    public void setCaptionEnabled(boolean enabled) {
        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_SET_CAPTION_ENABLED, enabled));
    }

    @Override
    public void selectTrack(TvTrackInfo track) {
        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_SELECT_TRACK, track));
+17 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.view.Surface;
import android.view.View;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -574,6 +573,23 @@ public final class TvInputManager {
            }
        }

        /**
         * Enables or disables the caption for this session.
         *
         * @param enabled {@code true} to enable, {@code false} to disable.
         */
        public void setCaptionEnabled(boolean enabled) {
            if (mToken == null) {
                Log.w(TAG, "The session has been already released");
                return;
            }
            try {
                mService.setCaptionEnabled(mToken, enabled, mUserId);
            } catch (RemoteException e) {
                throw new RuntimeException(e);
            }
        }

        /**
         * Select a track.
         *
Loading