android - 如何为 Android 创建电视调谐器库?

标签 android c cmake

我有一个 K1 Plus android 盒子,里面有一个内置的 DVB-T2` 和 DVB-S2 调谐器。我想创建一个应用程序来获取并显示这些调谐器的 channel 。

首先,我发现了android的TV Input Framework(TIF)。通过调用获取设备可用输入的方法,示例应用程序不断崩溃。然后,发现它只适用于真正的 Android TV。我寻找那个 android 盒子的 android 库,但没有找到任何东西。我寻找可以访问调谐器的 C 库,但也没有找到任何东西。我寻找有关如何访问 Android 设备的硬件组件的代码,但没有找到任何内容。我最近发现了关于https://opencv.org/ 。我还没有阅读有关它的所有内容,所以我真的不知道如何使用它。

我发现了关于 https://git.linuxtv.org/v4l-utils.git来自SO问题的答案,但似乎它只能在将其安装到操作系统后才能使用。我能够在 Android 上使用 CMake 编译它,但它缺少头文件。 我还找到了http://android4tv.iwedia.com 。不幸的是,它也使用 TIF

我正在尝试创建类似 kodi 的东西,但我发现它并不是真正获取 channel 的东西,而是 kodi 从受支持的 iptv 盒子获取它。我对编写 C 的知识为零,但我会尝试编写代码。

顺便说一句,这是盒子。 http://www.videostrong.com/S905D+DVB(KI%20PLUS)/55.html

根据我的研究,我发现了HAL(硬件抽象层)。我需要它来制作我的 C 代码吗?

更新:

经过几个月的研究,但没有找到任何快速方法来实现电视调谐器库,我回到了之前研究的书签。其中之一是this 。该答案的第一步是在设备上执行 ls/dev/dvb/。因为我需要在 android box 本身上执行此操作,所以我研究了 android 终端应用程序并找到了 Termux。然后我在 Termux 上执行了 ls/dev/dvb/命令,它告诉我资源没有找到或者不存在。然后我尝试执行 ls/dev/命令,幸运的是我得到了结果。其中有很多,我发现了一些与 DVB 相关的内容。

与 DVB 相关的结果是:

dvb0.demux0
dvb0.demux1
dvb0.demux2
dvb0.dsc0
dvb0.dsc1
dvb0.dvr0
dvb0.dvr1
dvb0.dvr2
dvb0.net0
dvb0.net1
dvb0.net2

我可以发布整个列表,但我会发布这个更相关的(我认为)结果。 结果与上面链接的示例有很大不同,因为它们只使用了 dvb 而不是 dvb0。

更新:

根据给我的建议,我现在可能会使用 USB 电视调谐器。

更新:

是否有我可以查看的标准和电视调谐器相关的 USB byte[] 命令列表?我已经看到了一些,但它们主要用于 FTDI、串行或真正标准的命令,我实际上没有任何用处。

最佳答案

可能需要大量的逆向工程或泄露的文档才能实现您想要做的事情。

类似 the one you are working 的设备通常使用专有硬件和专有驱动程序来实现 DVB 等功能,因此为电视调谐器制作第三方应用程序非常困难。

首先,您需要了解此 Android 盒子具有哪种 DVB 芯片/卡。 然后,您需要弄清楚它如何(在哪种总线上)连接到系统。

如果它是通用的,您也许可以与其驱动程序对话,如果不是,您将需要编写自己的驱动程序。

这太复杂了,无法在 SO 帖子中解释,但您可以首先打开盒子并查看组件,或者通过 ADB 运行 lsusb 等命令来尝试识别 DVB 组件。

如果设备已有 DVB 应用程序,您可以尝试将其拆解,了解其工作原理。

祝你好运!

关于android - 如何为 Android 创建电视调谐器库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237848/

相关文章:

android - 如何使 TextView 显示来自 asyncTask 类的值

c++ - 使用CMake将命令行参数传递给Visual Studio进行配置文件引导的优化

c++ - Ubuntu 16.04上点云库(PCL)基础教程cmake和make错误

CMake 链接外部库

android - 如何等待 IntentService 完成其任务

java - Android 围绕中心旋转位图而不调整大小

java - 如何使用gradle将ApiFuture接口(interface)添加到android项目

c - 如何在 C 语言中获取 alt 和 control 键的扫描码?

c - fwrite() 的用法

c - 链接时优化的 undefined reference