一、序

Hi,大家好,我是承香墨影!

智能电视或者智能盒子,不知道大家了解多少?

这两年各大厂商生产的电视设备,基本上都是搭载的 Android 系统。既然电视本身就是 Android 系统的,我们也可以在上面做一些很有意思的小玩意。

今天给大家推荐的就是一个可以通过手机控制智能电视的 App,当然,拿出来说它肯定是已经开源了。

App 名称:TvRemoteIME

https://github.com/kingthy/TVRemoteIME

虽然针对智能电视,市面上已经有很多免费的商业应用,例如:悟空遥控器、快点投屏等,这些已经非常好用了,但是开源的项目依然值得我们借鉴和研究。

二、TvRemoteIME

TvRemoteIME 本身除了基本的控制之外,还包含了一些例如:App 的安装和运行、视频播放、文件系统浏览和下载等功能。

想要体验又不想自己打包的同学,可以在 Github 上下载最新版本 Apk 的安装包。

https://github.com/kingthy/TVRemoteIME/raw/master/released/IMEService-release.apk

TvRemoteIME 从名字就可以看出来,它其实是把自己包装成一个输入法,使用它需要把自己设备的默认输入法设置成它。这样的设定其实有很多个好处,例如:输入法能拿到一些输入以及按键相关的权限,还有就是保活的问题,一般输入法的服务不会被系统轻易杀掉。

体验 TvRemoteIME

想要体验的同学可以通过上面提供的下载地址下载,得到 Apk 之后,再安装到待控制的设备上,这里可以是一个智能电视、智能盒子或者一台普通的 Android 手机。

安装之后,你需要将它设置成系统的默认输入法,如果你的设备上有设置输入法的设置页面,当然是可以直接选择的。如果没有的话,你还可以通过 adb 命令来进行设置。

adb shell ime set com.android.tvremoteime/.IMEService

一切设置妥当之后,就可以通过电脑或者手机,远程访问控制页面。控制页面是一个网页,地址就是你安装 TvRemoteIME 的设备的 IP 地址,端口是固定的 9978

例如我当前的设备的 IP 是 192.168.1.199,那就是 http://192.168.1.199:9978/

之后你就可以在浏览器中,看到前面截图的控制页面,开始你的体验吧。

这样通过一个 Http 服务器来提供操作的各种 UI,与待控制的设备上的 TvRemoteIME 输入法程序进行通信,再由 TvRemoteIME 去执行具体的操作逻辑。这样的方式其实很好,全程只需要在待操作的设备上安装一个 App,然后多端(Android、iOS、Web)通过 Http 服务,都可以对其进行控制。

三、TvRemoteIME 的原理

TvRemoteIME 主要的几个功能:

  1. 按键控制
  2. 文件浏览(安装、目录、打开)
  3. 视频播放

接下来分析它主要的几个功能。

3.1 通信

首先要确定一点,TvRemoteIME 只有一个输入法,而要控制它其实是去访问 TvRemoteIME 提供的一个本地 Http 服务。

从文档和代码中可以看到,这个服务是基于 NanoHTTPD 这个开源项目的。它是一个简单的 HTTP 服务器,简单到只需要一个文件就可以提供完整的 Http 服务,可以说非常的好用。

https://github.com/NanoHttpd/...

TvRemoteIME 的所有通信操作,都是基于 NanoHTTPD 的,例如:提供操作页面、通信、上传下载文件等等。它可以算是 TvRemoteIME 的基础。

3.2 控制

前面也提到了,TvRemoteIME 将自己包装成一个输入法,所以很多操作它都可以通过 InputConnection 来实现,例如按键的控制。

关于控制,你可以在 IMEService 里看到对应的逻辑。

long eventTime = SystemClock.uptimeMillis();
InputConnection ic = getCurrentInputConnection();
switch (keyAction) {case KEY_ACTION_PRESSED:sendKeyCode(kc);break;case KEY_ACTION_DOWN:if(ic != null) {ic.sendKeyEvent(new KeyEvent(eventTime, eventTime,KeyEvent.ACTION_DOWN, kc, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));}break;case KEY_ACTION_UP:if(ic != null) {ic.sendKeyEvent(new KeyEvent(eventTime, eventTime,KeyEvent.ACTION_UP, kc, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));}break;
}

3.3 视频播放

视频播放功能的播放器,也是基于另外一个开源项目 AFAP Player ,内部采用的 ijkPlayer 来实现。

通过 NanoHTTPD 传递过来的播放地址,然后直接传递给播放器去播放即可。

看文档唯一让我觉得有亮点的地方说是可以支持 thunder/ed2k 协议的视频,也是基于另外一个开源项目 MiniThunder 来实现的,不过实际操作起来不是很稳定,有一些可以正常播放。

四、TvRemoteIME 的不足

TvRemoteIME 其实作为一个研究项目,已经算是可以了,并且只需要一个输入法 App,简单设置一下,并不需要再在手机上安装其他 App,这样 Android 和 iOS 都可以通用。

但是我这里算是鸡蛋里挑骨头,说一下它的不足。

依赖输入法

核心功能严重依赖输入法,例如:按键控制、输入、保活等等。

输入法本身这个思路是挺好的,这样可以让我们少思考很多问题。但是在现阶段我了解的情况,很多传统厂商生产的智能电视,其实是无法设置输入法的,这样基本上切断了使用的唯一途径。甚至安装第三方 App 就已经是很难了,哪怕安装上,你也无法将它设置为系统输入法。

在无法和其他输入法兼容使用的情况下,吐槽一下 TvRemoteIME 输入法的 UI 有点丑。

除了依赖输入法服务之外,其他的思路基本上是正确的,也没什么好挑剔的地方。

最近,作者又更新的 TvRemoteIME,现在可以不依赖输入法就可以使用,但是不设置输入法,无法使用控制相关的功能。这样其实对整个 App 的功能来说是致命的,后期还需要考虑如何做到保活和控制的问题。

四、小结

整体来说 TvRemoteIME 还算是一个比较健全的项目,如果有兴趣学习研究,还是可以看看源码的。

不过日常使用的话,还是推荐一些免费的商业 App。

例如:

  • 悟空遥控器:无需输入法,全线控制,App 管理、视频内容也很全面。
  • 快点投屏:无需TV端,基于 AirPlay 和 DLNA 实现手机控制电视直接播放。

这两个 App,基本上满足我的日常需要。

你对 Android 智能电视有什么看法?不妨在留言区讨论。

今天在公众号后台回复成长『 成长』,将会得到我整理的一些学习资料,也能回复『 加群』,一起学习进步。

推荐阅读:

  • 漫画:程序员,你能“管理”好你的产品经理吗?
  • 官方新出的 Kotlin 扩展库 KTX
  • 不懂批判性思维,可能正在限制你的程序员生涯
  • Android 开发,遇上 Emoji 头疼吗?
  • Andorid 签名和多渠道打包方案 | VasDolly

远程控制你的智能电视,按键|输入|安装App等都已实现,已开源! 1相关推荐

  1. 最新】TCL智能电视root破解 安装第三方软件教程

    因为之前的方法有部分TCL用户反映尝试过未成功,所以我再把破解方法整理细化一下.在此还得感谢当贝市场开发团队的大力支持和协助,还特地出了一个TCL专用版,非常感谢~ 先来一个亲测成功的视频 视频地址: ...

  2. 平板电脑可以插u盘吗_电视TV盒子安装app的六个方法,u盘/电脑/手机都可以安装...

    点击上方蓝字  关注我们 首先,要看盒子是否支持安装第三方app,这期只讲支持第三方app安装的安卓系统盒子,iOS盒子不讲. 怎么看电视盒子能不能安装第三方? 很简单,方法很多,最常见就是用装有ap ...

  3. 海信智能电视可以升级鸿蒙系统吗,都是55寸新品,荣耀智慧屏、小米电视和海信电视,你会咋选?...

    文/焦运杰 审校/李俊慧 "千呼万唤始出来". 2019年8月9日,华为鸿蒙系统(HarmonyOS)正式掀开神秘面纱,作为对标谷歌安卓系统(android)和苹果IOS系统的国产 ...

  4. 创维智能电视(SKYWORTH)如何开启U盘安装(酷开系统)

    文章目录 前言 一.电视基本信息 二.开启U盘安装 三.好用的APP 总结 前言 现如今电视越来越大,也越来越智能了,但是电视本身自带的应用商店里的APP实在是太垃圾了,找不到一个好用的APP,既然自 ...

  5. 智能电视linux系统安装当贝,智能电视怎么用U盘安装当贝市场 小白必看攻略!

    [天极网家电频道]双十一过去了,很多小伙伴剁手选购的智能电视都到了,而大部分人由于是初次接触智能电视,都不知道该如何给电视安装软件.与有线数字电视不同,智能电视需要连网看资源,除了电视自带的点播应用资 ...

  6. 【沙发管家】智能电视自带的应用商店不能用怎么办 ?沙发管家教你解决

    最近很多品牌的智能电视自带的应用商店都无法提供第三方软件的更新与下载,特别是直播类应用,其实具体原因,相信不用解释大家也差不多知道,今天小编就来给大家分享一下,如何在智能电视应用商店不能用的情况下,下 ...

  7. 联想K系引领智能电视潮流,Android 4.0将成行业标配

    现在,随着智能电视的普及,电视机正从平板时代向互联网时代甚至向目前的智能时代跨越,电视正在成为家庭的智能娱乐终端.笔者上周撰写的<联想完成PC+战略布局,K系智能电视打响"家庭争夺战& ...

  8. android 7.0电视,将智能电视升级到Android 7.0有什么经验?为索尼用户祝福

    尽管Android 7.0系统很早以前就已正式发布,但实际上,由于Android设备的严重碎片化,并不是所有的Android设备都可以在第一时间进行升级,因此,实际上现在已经安装了Android 7. ...

  9. 电视android升级啥意思,索尼智能电视Android电视机升级教程

    为了能够更好的发挥电视机的性能和功能,需要保持电视机的系统软件版本为最新,从而可以使用到最新的功能和应用,提升电视机的使用体验,解决bug或性能改善. 重要:若要进行网络升级,电视机必须连接到网络,可 ...

最新文章

  1. mysql+存储过程+删除重复数据_mysql 存储过程 删除重复
  2. Windows 7 提示AtBroke.exe初始化失败
  3. Day05 egrep正则表达式sed
  4. OpenShift 4 - DevSecOps Workshop (6) - 为Pipeline增加SonarQube实现SAST
  5. 90后的你,有什么赚钱方式?
  6. 概要设计说明书任务分配
  7. 微信公众号(订阅号)如何开通付费功能?
  8. 吉林大学操作系统上机随笔《实验二》
  9. cad2016中选择全图字体怎么操作_CAD镜像怎么用,你会吗?
  10. Polar码(1)— 基础理论
  11. Keras Tuner官方教程
  12. 中国烟酰胺单核苷酸(NMN)行业研究与投资预测报告(2022版)
  13. [pytorch学习笔记] 3.Datasets Dataloaders
  14. 计算机各按键的作用,【键盘各个键的功能图解】键盘各个键的功能介绍_键盘各个键的用途...
  15. 关于Symbian 模拟器一闪就没的解决办法(Eclipse+MTJ+symbian模拟器)
  16. 【uniapp】上传体验版的过程,解决上传时体积过大的问题
  17. 字节跳动测试岗面试跪在二面,复盘失败原因决定再战一次
  18. MicroPython学习--Nokia 5110+DHT11温湿度显示
  19. cadence怎么使用
  20. D. Range = √Sum

热门文章

  1. android 调用ashx,手机知识:安卓手机如何打开.ashx文件
  2. 用Java实现opc通信协议
  3. Blockly与Scratch3.0的比较分析及选型建议
  4. java 按钮添加音乐_Java运行窗体/程序添加自定义背景音乐
  5. BIGEMAP GIS Office添加离线地图
  6. 实在智能RPA机器人:你相信光吗
  7. PyAutoGUI,轻松搞定图片上传!
  8. 计算机专业在职研究生复试要考哪些科目,计算机在职研究生考试科目有哪些
  9. 史上最全vscode配置使用教程
  10. 全景丨0基础学习VR全景制作,后期篇:VR视频地拍补地