Android TV开发--HDMI播放器

 最近接到一个需求:做一个HDMI播放器的Demo,具体就是做一个Demo,安装在Android TV上,安卓TV接入安卓盒子,信号源是HDMI,打开播放器的Demo可以播放盒子里面的资源。
 网上这方面的资源不是很多,因为最近在看安卓系统应用开发相关内容,了解到在Android Tv上就有一款应用是来显示Hdmi信源内容的,这个应用就是LiveTv。所以,把注意力都集中在LiveTv的源码上,通过阅读LiveTv的源码可以知道LiveTv的实现核心是通过安卓控件TvView来显示输入源tvInput内容的。
 播放器的内容比较简单,主要分两步:
 首先获取当前设备的输入源,比较简单,看下面的代码即可:
    /**
     * 获取当前设备的输入源列表
     */
    private void initData() {
        TvInputManager tvInputManager = (TvInputManager) getSystemService(Context.TV_INPUT_SERVICE);
        if (tvInputManager == null) {
            return;
        }
        list = tvInputManager.getTvInputList();
        for (TvInputInfo info : list) {
            Log.i(TAG, "id 信号源 :" + info.getId());
        }
    }

打印如下:

SignalActivity: id 信号源 :com.mediatek.tvinput/.hdmi.HDMIInputService/HW6
SignalActivity: id 信号源 :com.mediatek.tvinput/.hdmi.HDMIInputService/HW5
SignalActivity: id 信号源 :com.mediatek.tvinput/.tuner.TunerInputService/HW0`

有三个输入源,打印的是TvInputInfo 的id,这个id是TvView显示tvInput内容的关键,下面简单介绍一下TvView控件。

TvView类概述:
显示TV内容。TvView类为应用程序提供了一个高级接口,以显示实现TvInputService的各种TV信号源的节目。(注意系统上可用的TV Inputs列表可以通过调用TvInputManager.getTvInputList()来获取。
一旦应用程序提供了特定TV通道的URL给tune(inputId, Uri)方法,它负责下层的服务绑定(和解除绑定如果当前的TvView已经绑定到一个服务)并且根据需要自动的分配或者释放资源。
看了上面谷歌官方的介绍大概了解了TvView是什么和怎么使用的了,下面看第二步:显示input内容。
上面获取了Tvinput列表,可以获取特定频道的Id,也即是tune()的第一个参数,那第二个参数Uri怎么获取呢? 下面看一下LiveTv的源码:

    /**
     * Build a special channel URI intended to be used with pass-through inputs. (e.g. HDMI)
     *
     * @param inputId The ID of the pass-through input to build a channels URI for.
     * @see TvInputInfo#isPassthroughInput()
     */
    public static Uri buildChannelUriForPassthroughInput(String inputId) {
        return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority(AUTHORITY)
                .appendPath(PATH_PASSTHROUGH).appendPath(inputId).build();
    }

通过上面的代码可以知道,Uri可以由TvContract类的buildChannelUriForPassthroughInput()方法转化InputId得到.
获取到了两个必要的参数,下面直接调用TvView的方法tune()即可显示tvInput的内容,看代码:

  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void playHdmi(String inputId) {
        mTvView.reset();
        // Build a special channel URI intended to be used with pass-through inputs. (e.g. HDMI)
        Uri uri = buildChannelUriForPassthroughInput(inputId);
        mTvView.tune(inputId, uri);
    }

运行Demo到安卓Tv,点击播放按钮,tvinput的内容显示出来了。
有个问题要说一下,我们在第一部获取到的TvInput列表是三个,可能不是三个信源都可以显示出内容,我是三个信源都试了一遍才发现只有一个有内容的,在播放前还不确定哪个inputID的可用的,不过在播放时,TvView有个回调方法,可以返回可用的input:

SignalActivity: onVideoAvailable: com.mediatek.tvinput/.hdmi.HDMIInputService/HW5

播放器的功能基本实现了,代码不多,主要代码都列出来了,如果有其他更好方案,欢迎交流!

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: PS176 DP-to-HDMI Dongle Reference是一种将DisplayPort信号转换为HDMI信号的接口产品。DisplayPort和HDMI都是一种用于音视频传输的数字接口标准。DP-to-HDMI Dongle可以将使用DisplayPort接口的设备(如电脑、笔记本电脑、手机等)连接到使用HDMI接口的显示设备(如电视、投影仪等)上进行视频和音频输出。 PS176 DP-to-HDMI Dongle Reference采用了PS176芯片作为控制芯片,这是一款由Cypress(赛普拉斯)公司生产的高性能芯片,用于实现DisplayPort和HDMI之间的转换。该芯片具有稳定的转换效果和优质的信号传输能力,可以确保高清视频和高质量音频的传输。同时,该芯片还支持高达4K分辨率的视频输出,可以满足用户对高清画面的需求。 使用PS176 DP-to-HDMI Dongle Reference时,只需将DisplayPort接口插入设备的DisplayPort输出端口,然后将HDMI接口插入显示设备的HDMI输入端口,接口插拔简单方便。插上后,显示设备即可通过HDMI接口接收到DisplayPort信号,并将其转换为对应的视频和音频信号进行输出,实现设备之间的连接与传输。 总结而言,PS176 DP-to-HDMI Dongle Reference是一款使用PS176芯片的DisplayPort转HDMI的转接头产品,适用于将使用DisplayPort接口的设备连接到使用HDMI接口的显示设备上进行视频和音频输出。它具有可靠的转换效果、优质的信号传输能力和高分辨率的视频输出,能够满足用户对高清画面的需求。 ### 回答2: PS176 DP到HDMI转接器参考是一种数字信号转换设备,用于将DisplayPort(DP)视频信号转换为HDMI(High-Definition Multimedia Interface)信号。它可以连接支持DP输出的计算机或其他设备与使用HDMI输入的显示器、电视或投影仪等设备进行连接。 这款转接器采用了PS176芯片作为参考设计。PS176芯片是一种高性能的数字视频处理器,具有可靠稳定的信号转换能力。它能够将DP的信号转换为HDMI的信号,并且支持高分辨率的视频输出。使用这个转接器,用户可以将高品质的DP视频信号传输到HDMI设备上,实现高清晰度的视频显示。 该转接器参考设计还可能包括其他组件,例如电路板、接口、插头等,以提供完整的功能和兼容性。它可能支持高带宽的视频传输,包括4K、60Hz的高分辨率视频输出。除了视频信号的转换,这个转接器也可以传输音频信号,使用户能够享受到高质量的音频效果。 对于使用PS176 DP到HDMI转接器参考设计的用户来说,他们只需要将转接器的DisplayPort接口连接到DP输出设备上,再将HDMI接口连接到HDMI输入设备上,就可以实现信号转换和视频传输。这款转接器设计简单易用,适用于不同场合的应用,例如办公室、家庭娱乐、教育等。 总之,PS176 DP到HDMI转接器参考是一款高性能的数字信号转换设备,基于PS176芯片设计,可以将DisplayPort信号转换为HDMI信号,实现高清晰度的视频和音频传输,满足用户的不同需求。 ### 回答3: PS176 DP到HDMI转接头是一种用于连接DisplayPort(DP)接口和HDMI接口的转接头参考设计。DisplayPort和HDMI是两种常见的视频传输接口,DisplayPort主要用于连接电脑和显示器,而HDMI则广泛应用于电视、投影仪和一些消费电子设备。 PS176是一个高性能的转接头控制器,具有很多先进的特性。它支持DisplayPort 1.4a版本和HDMI 2.0b版本的规范,可以实现高清的视频传输和音频输出。该参考设计还支持高达4K分辨率的视频传输,保证了图像的清晰度和细节,同时还能够传输高品质的音频。 此外,PS176还具备一些其他特点,比如支持多种色彩空间和色深的传输,能够处理高帧率视频和3D视频,并支持多显示器环境。它还采用了先进的视频处理技术,如动态范围扩展、色彩空间转换和降噪等,进一步提升了图像质量。 对于用户而言,使用PS176 DP到HDMI转接头可以方便地将DP接口的设备连接到HDMI接口的显示设备上,如连接笔记本电脑到电视或投影仪。这使得用户可以享受更大的屏幕空间和更高的分辨率,同时还能够通过一根线缆传输音频信号,消除了多余的接线和插拔。 总的来说,PS176 DP到HDMI转接头参考设计是一种可靠、高性能的解决方案,能够有效地连接DP和HDMI接口设备,提供高清的视频和音频传输。它为用户带来了更好的使用体验,扩展了设备的连接能力,适用于各种需求的场合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值