Android中实现远程输入
来源:互联网 发布:网络推广总监 编辑:程序博客网 时间:2024/06/06 13:19
该方法主要是面向输入相对比较困难的android电视机。实现的最后结果是,用手机中的输入法代替电视机输入。
简单描述一下流程:电视机获取输入框焦点,弹出输入法——打开手机的输入法,输入内容——内容发送到电视机的输入框。
那么要怎么实现呢?我们知道,一般而言是没办法获取到任意界面下的输入框的,所以只能从输入法下手。而为了让手机能将输入内容发送至电视,就得和电视机之间建立连接,我这里选用的是socket。
那么这里我们的目的就很明确了,就是一个能和手机端建立socket连接的电视机端输入法。
非常巧合的是,所有输入法其实都包含一个关键的服务,该服务继承自InputMethodService.java。什么时候这个服务会启动呢?当你选择该输入法作为默认输入法的时候,以及该输入法作为默认输入法的设备开机完成的时候。也就是说,我们可以在该服务中实现电视机和手机端的socket连接。并且开启子线程接收来自手机端的讯息。
我们再理顺一下思路。要实现socket连接,服务端需要做的事情就是启动一个服务,该服务启动一个子线程,这个子线程负责等待socket的连接。
while (true) { Socket s = null;try { s = server.accept();} catch (Exception e) {e.printStackTrace();}}那么该服务什么时候启动呢?在InputMethodService运行的时候开启该服务即可。
建立了socket连接之后,当电视机端收到指定的消息,就可以将该消息广播至InputMethodService,在该服务里有将文字添加到输入框里的方法
<span style="white-space:pre"></span>commitResultText()也有删除输入框里的文字的方法等等。我们可以定义一个这样的广播:
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (Constant.REMOTE_INPUT.equals(intent.getAction())) {//输入内容commitResultText(intent.getStringExtra(Constant.REMOTE_INPUT));resetToIdleState(false);}else if (Constant.REMOTE_INPUT_DELETE.equals(intent.getAction())) {//删除一个字符 InputConnection ic = getCurrentInputConnection(); if (null != ic) ic.deleteSurroundingText(1, 0);}else if (Constant.REMOTE_INPUT_DELETE_ALL.equals(intent.getAction())) {//全部删除(实际上只是删除100个字符) InputConnection ic = getCurrentInputConnection(); if (null != ic) ic.deleteSurroundingText(100, 0);}}};这样就大功告成了~很多细节没有提及,但是对socket编程比较熟悉的话相信问题都不大~怎么更方便地和手机连接起来就不是本文的重点了嚯嚯。
0 0
- Android中实现远程输入
- android中实现自动输入文本效果
- Android中实现Edittext中输入表情图片的方法
- Android中不使用AIDL实现Service的远程调用
- Android中不使用AIDL实现Service的远程调用
- android开发中通过aidl实现远程方法调用
- 在Android Studio中实现AIDL远程服务调用
- Android中实现输入图片地址浏览图片操作
- Android中PopupWindow实现弹窗输入的效果
- 解决在iOS开发的代码中实现scp的ssh远程连接,怎么输入密码问题
- Android 远程调试 JNI 实现
- Android远程数据库通信实现
- Android AIDL实现远程服务
- Android Studio实现远程服务
- Android-在Android studio中实现远程服务(Service)AIDL
- Android-在Android studio中实现远程服务(Service)AIDL
- Android中远程Service浅析
- Android开发中远程连接
- 嫌工资少,先来看看你值多少钱
- mysql 删除语句几种常见的用法
- SGU180:Inversions(树状数组)
- jQuery的$("#id")和document.getElementById("id")的区别
- 做电子商务网站建设是的小技巧
- Android中实现远程输入
- 联网查看图片的Demo
- 使用windbg調試iis應用程序池崩溃的asp.net 2.0 bug.
- 使用CSS隐藏HTML元素的4种常用方法
- js小结
- 请问,activemq跟websocket什么区别?
- [COGS1464] [NOI1996]三角形灯塔
- 悲催教训:网站修改切忌直接替换源文件
- 空指针(NULL,0),野指针,void*的讲解