一、序Hi,大家好,我是承香墨影! 智能电视或者智能盒子,不知道大家了解多少? 这两年各大厂商生产的电视设备,基本上都是搭载的 Android 系统。既然电视本身就是 Android 系统的,我们也可以在上面做一些很有意思的小玩意。 今天给大家推荐的就是一个可以通过手机控制智能电视的 App,当然,拿出来说它肯定是已经开源了。
虽然针对智能电视,市面上已经有很多免费的商业应用,例如:悟空遥控器、快点投屏等,这些已经非常好用了,但是开源的项目依然值得我们借鉴和研究。 二、TvRemoteIMETvRemoteIME 本身除了基本的控制之外,还包含了一些例如:App 的安装和运行、视频播放、文件系统浏览和下载等功能。 想要体验又不想自己打包的同学,可以在 Github 上下载最新版本 Apk 的安装包。
TvRemoteIME 从名字就可以看出来,它其实是把自己包装成一个输入法,使用它需要把自己设备的默认输入法设置成它。这样的设定其实有很多个好处,例如:输入法能拿到一些输入以及按键相关的权限,还有就是保活的问题,一般输入法的服务不会被系统轻易杀掉。 体验 TvRemoteIME想要体验的同学可以通过上面提供的下载地址下载,得到 Apk 之后,再安装到待控制的设备上,这里可以是一个智能电视、智能盒子或者一台普通的 Android 手机。 安装之后,你需要将它设置成系统的默认输入法,如果你的设备上有设置输入法的设置页面,当然是可以直接选择的。如果没有的话,你还可以通过 adb 命令来进行设置。 adb shell ime set com.android.tvremoteime/.IMEService 一切设置妥当之后,就可以通过电脑或者手机,远程访问控制页面。控制页面是一个网页,地址就是你安装 TvRemoteIME 的设备的 IP 地址,端口是固定的 例如我当前的设备的 IP 是 192.168.1.199,那就是 之后你就可以在浏览器中,看到前面截图的控制页面,开始你的体验吧。 三、TvRemoteIME 的原理TvRemoteIME 主要的几个功能:
接下来分析它主要的几个功能。 3.1 通信首先要确定一点,TvRemoteIME 只有一个输入法,而要控制它其实是去访问 TvRemoteIME 提供的一个本地 Http 服务。 从文档和代码中可以看到,这个服务是基于 NanoHTTPD 这个开源项目的。它是一个简单的 HTTP 服务器,简单到只需要一个文件就可以提供完整的 Http 服务,可以说非常的好用。
TvRemoteIME 的所有通信操作,都是基于 NanoHTTPD 的,例如:提供操作页面、通信、上传下载文件等等。它可以算是 TvRemoteIME 的基础。 3.2 控制前面也提到了,TvRemoteIME 将自己包装成一个输入法,所以很多操作它都可以通过 关于控制,你可以在 IMEService 里看到对应的逻辑。 long eventTime = SystemClock.uptimeMillis(); 3.3 视频播放视频播放功能的播放器,也是基于另外一个开源项目 AFAP Player ,内部采用的 ijkPlayer 来实现。 通过 NanoHTTPD 传递过来的播放地址,然后直接传递给播放器去播放即可。 看文档唯一让我觉得有亮点的地方说是可以支持 四、TvRemoteIME 的不足TvRemoteIME 其实作为一个研究项目,已经算是可以了,并且只需要一个输入法 App,简单设置一下,并不需要再在手机上安装其他 App,这样 Android 和 iOS 都可以通用。 但是我这里算是鸡蛋里挑骨头,说一下它的不足。 依赖输入法核心功能严重依赖输入法,例如:按键控制、输入、保活等等。 输入法本身这个思路是挺好的,这样可以让我们少思考很多问题。但是在现阶段我了解的情况,很多传统厂商生产的智能电视,其实是无法设置输入法的,这样基本上切断了使用的唯一途径。甚至安装第三方 App 就已经是很难了,哪怕安装上,你也无法将它设置为系统输入法。 在无法和其他输入法兼容使用的情况下,吐槽一下 TvRemoteIME 输入法的 UI 有点丑。 除了依赖输入法服务之外,其他的思路基本上是正确的,也没什么好挑剔的地方。不过现在作者在 Github 上,并没有提交服务网页相关的 RAW 资源,应该是作者遗漏了,等待后期补充。 四、小结整体来说 TvRemoteIME 还算是一个比较健全的项目,如果有兴趣学习研究,还是可以看看源码的。 不过日常使用的话,还是推荐一些免费的商业 App。
这两个 App,基本上满足我的日常需要。 |
|