Android输入法扩展之远程输入法

近年来,互联网电视开始火热,乐视TV,小米TV,最近爱奇艺也在大肆的招人做爱奇艺电视,当然还有更被关注的苹果电视。其实,这个趋势很正常,也很合理,传统单纯的接收电视节目的电视已经太传统了,是该被革命了。乐视为代表的新一代互联网电视采取互联网的营销方式,不需要实体店,不需要实体工厂,只需方案,服务,网上预约,直接快递等方式大大降低了成本,同时也可以控制库存,预防风险。同时他们都坚持硬件不赚钱,服务收费,更看重电视用户对象这一潜在价值。用户多了,干啥都方便,当然还有更大的智能家居大概念。

除了苹果电视,其他无一不是采用Android系统。但是各种互联网电视说到底它还是电视,不像手机,平板,PC等这些电子产品,用户离它是有距离的,用户是没法直接触摸屏幕等方式来输入的,因此Android软键盘方式实在是不够好的输入交互方式。对于英语系的国家,这个电视的输入还好解决,只需通过外接键盘直接输入,但是对于类似中文这种需要转换的语种来说,就麻烦了。这是因为Android外接键盘只能输入英文字符,同时输入法又没法获取外接键盘(只支持触摸软键盘的字符)的输入将其转化为中文。这就让我想到标题的“远程输入法”。

一个很通用的场景就是:电视安装了爱踢门的远程输入法,该输入法连接上了手机的远程输入端,然后用户在远程输入程序中用自身的输入法(搜狗输入法)输入,然后输入的内容就实时的传送到电视里的程序中了。

远程输入法机制

远程输入法的机制很简单:做一个特殊的输入法,该输入法不再通过触摸软键盘获得输入字符,而是通过网络直接从网络的另一端获取字符(这个字符可以是英文,也可以是中文,任意语系都可以),然后将这个字符发送给应用程序。输入的核心是两个:InputConnection的commitText和sendKeyEvent两个接口,如下代码实现:

private void sendText(String text) {
    if (!isShow()) {
        Log.d(TAG, "ime is hidden");
       return;
    }
     final InputConnection ic = getCurrentInputConnection();
     if(ic == null) {
        Log.d(TAG, "ic null");
         return;
     }
     //将中文等任一语系文本发送给程序
     ic.commitText(text, text.length());
 }  

 public void sendDownUpKeyEvents(int keyEventCode) {
     InputConnection ic = getCurrentInputConnection();
     if (ic == null) return;
     long eventTime = SystemClock.uptimeMillis();
     //发送delete,backspace删除字符等特殊输入,特殊输入是通过key来实现的哦
     ic.sendKeyEvent(new KeyEvent(eventTime, eventTime,
             KeyEvent.ACTION_DOWN, keyEventCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
             KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE));
     ic.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
             KeyEvent.ACTION_UP, keyEventCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
             KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE));
 }

然后就是代码的大头,网络模块:实现局域网搜索服务,自动连接,网络数据发送。

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索远程
, 输入法
, android输入法
, 电视
, 输入
, 字符
, 互联网电视
, qt软键盘android
, android赚钱
, KeyEvent
, android软键盘遮挡
, android软键盘
, android实现软键盘
android显示软键盘
搜狗输入法扩展功能、谷歌拼音输入法扩展、谷歌输入法扩展、谷歌拼音输入法扩展包、谷歌输入法扩展包,以便于您获取更多的相关知识。

时间: 2024-11-02 09:56:32

Android输入法扩展之远程输入法的相关文章

Android中InputMethodManager怎么设置输入法键盘为数字键盘?

问题描述 Android中InputMethodManager怎么设置输入法键盘为数字键盘? 2C 现在需要强制弹出安卓系统键盘,并且是数字键盘,不是字母键盘.下面是强制弹出系统键盘代码(弹出来的是字母键盘) InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0 InputMethodManager.HIDE_NOT_A

android l版本-MTK平台,Android L版本,第三方输入法设为默认输入法的问题

问题描述 MTK平台,Android L版本,第三方输入法设为默认输入法的问题 按照FAQ上面的方法是在InputMethodManagerService.java中的systemRunning()方法中给perInstalledImeName赋值完整的第三方输入法包名ID,或者在system.prog文件中添加ro.mtk_default_ime的属性, String preInstalledImeName = SystemProperties.get("ro.mtk_default_ime&

android 通过代码动态切换输入法

问题描述 android 通过代码动态切换输入法 比如 当我点击一个EditText时 弹出的不是当前系统默认的输入法 而是其它的 或者 直接更改系统默认输入法也可以 解决方案 你要先修改输入法,然后才可以,跟搜狗的流程一样,先修改为用户想要的输入法,然后在返回你的APP窗口,http://www.cnblogs.com/weixing/p/3300908.html 如果你要动态切换,那么你要先知道你要切换到的输入法是哪个. 解决方案二: Android 切换输入法Android 切换输入法An

Android游戏开发 自定义手势--输入法手势技术_Android

       进行软件开发时,通常我们都喜欢使用较新版本的工具,但这里我为什么使用低版本的SDK来开发Android游戏呢?这里介绍下原因:        1.Android SDK 属于向下兼容!那么低版本可以运行的,高版本基本上更是没问题!(当然每次SDK的更新也会带来新功能,或者修改了一些原来的BUG等等,那么其实对于游戏开发来说,如果你的游戏中不需要更高的SDK版本的支持情况下,完全不必去追求最新的SDK!)        2.使用低版本进行游戏开发这样能兼顾更多的机型,获取更多的用户!

Android中系统默认输入法设置的方法(输入法的显示和隐藏)_Android

1.调用显示系统默认的输入法 方法一. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(m_receiverView(接受软键盘输入的视图(View)),InputMethodManager.SHOW_FORCED(提供当前操作的标记,SHOW_FORCED表示强制显示)); 方法二. InputMethodManager

Android中EditText屏蔽第三方输入法表情的方法示例

前言 众所周知如果用第三方的输入法的表情会给开发带来一定的麻烦,一般地像服务器上传的字符都是普通的字符,但是测试,就是狠狠得拿出搜狗输入法,点几个表情,那么问题就来了,要么是显示异常,要么是直接crash,但是有很少的部分机型,会支持,可能是第三方的ROM对Android 的TextView 做了一定的处理,所以,我们只能干掉该死的表情了. 具体的方法如下: 首先是在EditTextView 里面加入TextWatcher 在判断字符的变化时,就判断字符的类型,是否为字符,否则删除原来的字符,重

存储-Android 外部扩展TF卡 无法操作

问题描述 Android 外部扩展TF卡 无法操作 在android4.4.2的系统上面操作可卸载的外部扩展卡,就是俗称的TF卡,怎么可以增删改呢? 我这里有点特殊原因: 1.不是说Environment.getExternalStorageDirectory(),这个是可以获取内部存储的: 2.我的平板是三星的,无法切换默认存储卡. 3.不考虑刷Root权限问题. 请教下大家这个问题要怎么解决呢?增删改在TF卡上面. 解决方案 参考:http://www.it165.net/pro/html/

2345王牌输入法设置为默认输入法教程

  相信不少人都在使用2345王牌输入法,这么一个专注于输入本质.以纯净打字为目的的输入法已经很少见了.那么,如何将2345输入法设为默认输入法,保留良好的输入体验呢? 系统设置篇 首先,在输入法的托盘图标上右键单击,选择[设置],在默认输入法栏选择 2345王牌输入法,就可以在里面把王牌输入法设为默认.如下图: 安全卫士篇 如果设置过程中遇到失败,可能是第三方软件拦截造成,常见的解决方法: 如您安装了360安全卫士 在设置2345王牌拼音输入法为默认输入法时,会有一个提示弹框,请选择"允许修改

如何把光速输入法设为默认输入法

  使用输入法如果觉得一款就够用了,那么把输入法设置成为默认输入法是一种不错的方式,这样省去了频繁切换输入法的麻烦. 把光速输入法设置成为默认输入法的方式很多,这里通过光速输入法的状态栏,右键出现的列表框中选择"输入法管理器",如下图,然后选中光速输入法,点击右侧的"设为默认"按钮. 最后确定就可以了.