使 TvInputService 显示叠加层



我正在尝试编写一个最简单的TvInputService,它将使用TIF伴侣库显示一个覆盖层。

实时频道应用程序已识别我的频道Simple Channel在我的EpgSyncJobService子类中声明。 My Program显示在实时频道应用程序的 EPG 中,就像当前显示的那样。然而,我只能看到蓝色旋转器,好像频道没有"调谐"。

我做错了什么?

public class MyTvInputService extends BaseTvInputService {
        @Override
    public final BaseTvInputService.Session onCreateSession(String inputId) {
        BaseTvInputService.Session session = new MyTvInputSession(this, inputId);
        session.setOverlayViewEnabled(true);
        return super.sessionCreated(session);
    }
    class MyTvInputSession extends BaseTvInputService.Session {
        public MyTvInputSession(Context context, String inputId) {
            super(context, inputId);
        }
        @Override
        public View onCreateOverlayView() {
            mTextView = new TextView(MyTvInputService.this);
            mTextView.setText("This is an example overlay");
            mTextView.setTextColor(Color.RED);
            mTextView.setVisibility(View.VISIBLE);
            mTextView.setLayoutParams(new ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT));
            return mTextView;
        }
        @Override
        public boolean onPlayProgram(Program program, long startPosMs) {
            return true;
        }
        @Override
        public boolean onPlayRecordedProgram(RecordedProgram recordedProgram) {
            return true;
        }
        @Override
        public void onSetCaptionEnabled(boolean enable) {}
        @Override
        public TvPlayer getTvPlayer() { return null; }
    }
    private TextView mTextView;
}

根据TvInputService.Session.notifyVideoAvailable((文档:

电视输入服务必须在内容后立即调用此方法 渲染到其表面上已准备好查看。此方法必须是 每次调用 onTune(Uri( 时调用。

因此,在方法覆盖中调用notifyVideoAvailable()就足够了BaseTvInputService.Session.onTune(Uri)如下所示:

@Override
public boolean onTune(Uri channelUri) {
    notifyVideoAvailable();
    return true;
}

我必须说,使用电视伴侣库的BaseTvInputService比使用裸TvInputService更难找到此类问题,因为onTune()方法在BaseTvInputService.Session中是非抽象的。

最新更新