zoukankan      html  css  js  c++  java
  • Android输入法扩展之远程输入法

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

    用户多了,干啥都方便,当然还有更大的智能家居大概念。

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

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



    远程输入法机制


            远程输入法的机制非常easy:做一个特殊的输入法,该输入法不再通过触摸软键盘获得输入字符。而是通过网络直接从网络的还有一端获取字符(这个字符能够是英文。也能够是中文。随意语系都能够),然后将这个字符发送给应用程序。输入的核心是两个: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));
        }
    
    

           

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


    远程输入法安装使用及源代码


          以下这个是我做的远程输入法的界面及使用界面

     

           用户在两个手机上安装远程输入法程序,当中一个手机打开远程输入法应用,另外一个手机将输入法选择为RemoteIme,并点击里面的搜索button。当status变成connected。远程输入法应用就可为远程输入法输入内容了。

           选择RemoteIme输入法配置过程:

    1)      在setting里选择语言和输入法。然后选择RemoteIme

    2)      然后点击默认。会弹出选择框,继续选择RemoteIme

    3)      然后进入任一须要输入的程序,就可以使用RemoteIme 

            假设大家想了解很多其它。能够在github找到我这个项目的源代码:

            https://github.com/itleaks/RemoteIme

            假设仅仅是測试,能够直接使用项中的RemoteIme.apk, 该源代码仅仅是0基础版本号,大家能够一起改动改进。


     后记:


             本博客将在后一篇接着讲述--------Android输入法扩展之外接键盘中文输入法


    /********************************

    * 本文来自博客  “爱踢门”

    * 转载请标明出处:http://blog.csdn.net/itleaks

    ******************************************/

  • 相关阅读:
    爬虫练习:使用xpath 下载站长之家简历封面模板
    爬虫练习:Xpath基本使用
    爬虫练习:使用xpath爬取彼岸图网美女图
    爬虫练习:使用re模块爬取 糗图百科 图片
    爬虫练习:使用bs4爬取诗词名句网的《三国演义》
    爬虫练习:BS4基本使用
    爬虫练习:使用requests模块 爬取化妆品生产许可信息管理系统服务平台
    爬虫练习:贴吧 https://tieba.baidu.com/f?kw=友谊已走到尽头
    爬虫练习:使用 bs4以及正则,urllib.request 爬取 豆瓣TOP250爬虫
    记录kettle错误:无法从套接字读取更多数据 / TNS包错误
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7028894.html
Copyright © 2011-2022 走看看