Android TV 源码修改默认输入法

前一阵子,应泰国客户需求,需要在Android TV系统定制一个多语言输入法,至少支持中、英、泰三种语言。拿到这个任务,对于至今还是小白的我来说,当然先去google一下有没有大神专门做过符合要求的输入法应用。很遗憾,网上移动终端倒是有不少满足需求的输入法,而且做得还满酷炫,当时搜到的最全面的最接近需求(包含泰语这种名不见经传的小语种)的输入法应用当属Go Keyboard,后来发现我的HTC one手机自带的HTC Sense Input输入法也满足要求,而且还很纯净,系统原生的无广告,符合Material Design风格,但是能在TV上用的还真没找到(口碑不错的搜狗输入法倒是也做了TV版,可惜只支持中英文切换)。

对于程序员来说,开发是你的本职,没有开发过的东西,对我们恰好是机遇,况且使用第三方输入法,毕竟控制权不在自己手里,用户使用出了问题,也修复不了bug,源码拿不到啊!不过,这次的需求是定制系统输入法,不是做软键盘,在时间精力有限情况下,让一个菜鸟短时间内开发出来不太现实,那怎么办呢,这是后话。我们先看看需求出现的客观原因吧!

分析原因,Android TV起步较晚是一方面,操作方式跟手机不一样是根本原因,不同于手机touch,TV是通过遥控控制焦点来执行用户操作。所以,凡是不支持焦点控制的移动端应用,在TV上要么用不了,要么用户体验差(目前TV BOX支持鼠标、键盘操作),更有存在因分辨率引起的显示问题。当然有需求就会有市场,为什么没人在TV输入法模块投入精力去开发呢?原因很简单,遥控输入法真心不好用,至于原因,想想操作方式,再拿个遥控实际体验一下就知道了,输个密码都很艰难,谁还用?况且有人开发了远程输入法,即手机跟盒子在同一个网关环境下,通过手机输入、TV负责显示输出的方式,相当于手机作为遥控使,很方便。还有更方便的,直接把遥控做成键盘,使用硬键盘输入模式。

既然这样,我后面也就不用写下去了,因为我做的工作已经失去市场价值。但是我还想说两句,毕竟在完成任务过程中,我得到了不少工作经验,想跟大家分享一下。可能有人疑问,老板为什么还要让你开发这样一个市场价值不高的东西呢,原因很简单,公司要降低产品开发成本,前面提到的已有开发技术会增加成本投入,毕竟价格定高了,卖不出去,这个我们不多谈吧,作为员工,踏踏实实完成任务就行。

现在进入正题,前面说,实现这个需求既不是靠第三方应用集成,也不是自己完整去开发,那还有第三条路吗?当然有,那就是从系统源码出发,作为一个已经很成熟的系统,只要不是很变态的功能,你都能通过定制修改编译源码来达到目的。我们知道Android源码中默认的有三种输入法:英文、中文、日文,对应的工程代码路径为:

<android_root>/packages/inputmethods/LatinIME/
<android_root>/packages/inputmethods/PinyinIME/
<android_root>/packages/inputmethods/OpenWnn/

其中Latin输入法支持的语种最多,可惜唯独不支持中文输入,没关系,我们可以曲线救国,不是还有一个拼音输入法吗!现在思路有了,实现要分两步:

第一步:解决输入法焦点问题

也就是修改原生输入法,使之支持TV操作,具体实现过程参见我上上篇博客:

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈,柳暗花明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值