添加权限

<uses-permission android:name="android.permission.READ_TV_LISTINGS" />

添加这个权限之后需要手动前往系统设置 > 设置 > 应用 > app > 权限 > 开启读取所有电视节目频道权限,否则不能成功读取数据
原因:在官方文档中这个permission的 protectionLevel 是 “dangerous”,所以需要手动去开启
官网链接:https://cs.android.com/android/platform/superproject/+/master:packages/providers/TvProvider/AndroidManifest.xml;l=23-26

com.android.providers.tv.permission.READ_EPG_DATA
com.android.providers.tv.permission.WRITE_EPG_DATA
这两个权限是在自己实现一个TvInputInfo时需要用到的,只能读取与写入自己的数据

所以这个是第三方app唯一能够读取所有TvProvider数据库中数据的权限
接着就可以使用ContentResolver去获取数据了

获取数据:

Cursor cursor = context.getContentResolver().query(TvContract.Channels.CONTENT_URI, null, null, null, null, null);
String[] columnNames = cursor.getColumnNames();
for (String columnName : columnNames) {try{String value = cursor.getString(cursor.getColumnIndex(columnName));Log.d(TAG, "queryChannel:columnName:" + columnName + " --- value:" + value);}catch (Exception e){byte[] value = cursor.getBlob(cursor.getColumnIndex(columnName));Log.d(TAG, "queryChannel:columnName:" + columnName + " --- value:" + value);}
}

这里try一下是因为在TvProvider中的节目视频数据是存放在
TvContract.Channels.COLUMN_INTERNAL_PROVIDER_DATA
这个Key中,value是byte类型

这个TvContract.Channels.COLUMN_INTERNAL_PROVIDER_DATA中的数据是由系统开发者定义的,按照官方的源码是可以通过

JSONObject json = new JSONObject(new String(value))

获取到当前频道的节目信息,也不一定能够成功,这个看系统了

播放TvProvider中的视频

TvView tvView = new TvView(context);
tvView.reset();
tvView.tune(input_id, _id);

参数:

input_id: 根据数据库查询到的 input_id
_id:数据库中的_id

到此就能实现播放了

也能够通过

TvInputManager tvInputManager = (TvInputManager) getSystemService(TV_INPUT_SERVICE);
List<TvInputInfo> tvInputList = tvInputManager.getTvInputList();
for (TvInputInfo tvInputInfo : tvInputList) {Log.d(TAG, "onCreate: " + tvInputInfo.getId());
}

的方式获取到Tv上面的所有输入源input_id

一个TvInputInfo代表一个输入源,一个电视接口也代表一个输入源,例如Dvb接口,hdmi接口,第三方app也能够开发TvInputInfo

可以通过adb logcat -v -time > log.txt 的方式查看日志来确定你的电视dvb接口或者HDMI接口的input_id是什么

androidTv获取TvProvider频道数据,播放Dvb的视频相关推荐

  1. 通过QQ音乐接口获取数据+播放源

    最新QQAPI接口[QQ 音乐API koa2全接口实现](https://blog.csdn.net/ZC_XY/article/details/90813351) Github - program ...

  2. Android——百度APIstore+Json——获取新闻频道+新闻数据

    Android--百度APIstore+Json--获取新闻频道+新闻数据 <span style="font-size:18px;"><strong>pa ...

  3. 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 ffmpeg -list_devic ...

  4. Request —— 获取请求行数据 获取请求头数据 获取请求体数据

    1. request对象和response对象的原理     1. request和response对象是由服务器创建的.我们来使用它们     2. request对象是来获取请求消息,respon ...

  5. Request_获取请求头数据

    获取请求头数据             * 方法:                 * (*)String getHeader(String name):通过请求头的名称获取请求头的值        ...

  6. FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 [plain] view plain ...

  7. 爬虫侵入计算机系统,【探讨】利用“爬虫技术”获取数据行为的刑事考量 ——以一起非法获取计算机信息系统数据案为例...

    在本案中最为主要的争议焦点是"公开的信息"是否属于非法获取计算机信息系统数据中的犯罪对象.非法获取计算机信息系统数据罪的保护法益是计算机信息系统安全和数据安全.那么信息是否等同于数 ...

  8. 获取网易云音乐播放链接

    获取网易云音乐播放链接 首先打开网易云音乐官网,搜索自己喜欢的歌曲. 然后按F12打开开发者工具. 按F5刷新一下页面后,依次点击Network.XHR. 在Name下找到v1?csrf_token= ...

  9. linux无线网卡的拨号状态获取,命令行下获取无线网卡相关数据

    经讨论,了解到ralink原生驱动才带有ap client功能,其他厂家的IC默认只支持station模式.但ap_client必须和ap server在同一频道. 对此我万分纠结,到底是继续使用MT ...

最新文章

  1. spyder 崩溃解决方案
  2. 两点之间的连线java_java计算图两点之间的路径实例代码
  3. Spring Tool Suite记录
  4. 数据链路层介质访问控制——信道划分、随机访问和轮询访问
  5. Git入门教程(一)
  6. append在python里是什么意思_“一棵绿萝七个鬼”是什么意思?卧室里到底能不能养绿萝!...
  7. GUN/LINUX命令之 cp mv install
  8. P5732 【深基5.习7】杨辉三角(python3实现)
  9. L2-011 玩转二叉树(建树+BFS)
  10. Codeforces.741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree 思路)
  11. js里写网页结构, 传函数参数
  12. Neo4j数据导入与可视化
  13. RTD-Net:Relaxed Transformer Decoders for Direct Action Proposal Generation 论文阅读笔记
  14. 腾达无线路由器怎么设置能让自己的网速快
  15. oracle10g dblink优化,dblink如果很慢可以用这种方式优化
  16. 问题事件名称: APPCRASH(解决方法)
  17. 计算机提示存储空间不足怎么办,Win7软件提示"存储空间不足,无法处理此命令"怎么办...
  18. 中山大学曾兆阳_官居几品怎么打压势力
  19. 互联网产品经理职业规划图(转载)
  20. Vue2 生命周期 详细讲解+图示

热门文章

  1. 自主导航小车实践(一)
  2. TeamViwer远程操作
  3. 计算机毕业设计之java+ssm生鲜超市进销存管理系统
  4. 如何在配置低的老旧笔记本的win7系统上安装tensorflow及报错信息解决方法集锦
  5. JavaScript的String的replace和replaceAll的差别
  6. 在本地安装使用-LTP
  7. 计算机慢的解决方法,电脑很卡反应很慢该如何处理【解决方法】
  8. LeetCode——复数乘法 C++
  9. IDEA如何创建带有 webapp 目录的 maven 项目
  10. 【巨人的肩膀上制造世界】——10——Unity3D实用插件之Vectrosity,轻松便捷的实现2D/3D画线功能