android输入法app开发(手机输入法开发)

  今天给各位分享android输入法app开发的知识,其中也会对手机输入法开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

  一、结构

  public final class InputMethodManager extends Object

  Java.lang.Object

  android.view.inputmethod.InputMethodManager

  二、类概述

  整个输入法框架(IMF)结构的核心API,应用程序之间进行调度和当前输入法交互。你可以用Context.getSystemService()取得这一接口的实例。

  架构总述(Architecture Overview)

  输入法框架(IMF)共有三个主要部分:

  * 输入法管理器,管理各部分的交互。它是一个客户端API,存在于各个应用程序的context中,用来沟通管理所有进程间交互的全局系统服务。

  * 输入法(IME) ,实现一个允许用户生成文本的独立交互模块。系统绑定一个当前的输入法。使其创建和生成,决定输入法何时隐藏或者显示它的UI。同一时间只能有一个IME运行。

  * 客户应用程序,通过输入法管理器控制输入焦点和IME的状态。一次只能有一个客户端使用IME。

  应用程序(Applications)

  大多数情况下,使用标准TextView或其子类的应用程序只要做少量工作就可以让软键盘(soft input methods)正常工作。你要注意的是:

  * 正确设置你的可编辑文本视图inputType,这样输入法有足够的上下文帮助用户向其输入文本。

  * 当输入法显示时妥善处理隐藏屏幕空间。理想的情况下应用程序应处理窗口变小,如必要你可以利用系统执行平移窗口。你应在活动(activity)中设置windowSoftInputMode属性或调整创建窗口的相应值,以便系统决定平移或缩放(它会尝试自动调整但可能出错)。

  * 你还可以通过相同的windowSoftInputMode控制窗口的首选软键盘状态(打开、关闭等)。

  通过API可以与IMF及其IME交互实现更细致的控制,如显示或输入区域,用户选取某输入法等。

  当你编写自己的文本编辑器的时候,你要实现onCreateInputConnection(EditorInfo)以返回你的InputConnection的接口实例,用来允许IME和你的文本编辑域来交互。

  输入法(Input Methods)

  一个输入法(IME)是Service(服务)的实现,通常继承自 InputMethodService。IME提供核心的 InputMethod接口,尽管提供InputMethod通常是由InputMethodService来处理,而IME的实现只需要处理更高层的API。

  更多信息参阅InputMethodService。

  安全(Security)

  输入法关系到许多安全问题,因其基本不受约束地驱动UI并监视用户输入。Android输入法框架还允许调度第三方IME,所必须小心以限制他们的选择和相互作用。

  以下是IMF背后安全架构的要点:

  * 只允许系统访问经BIND_INPUT_METHOD权限许可访问IME的InputMethod接口。通过绑定到要求这个权限的服务来强制实现这一点。所以系统可以保证没有不被信任的客户端在它的控制之外访问到当前的输入法。

  * IMF中可能有许多客户进程,但在同一时间只有一个是激活的。未激活客户端不能与IMF核心交互通过下述机制实现。

  * 输入法客户端只可访问InputMethodSession接口。每个客户端创建一个接口实例,只有与激活客户相关联的会话的调用才会被IME处理。这点通过普通IME的 AbstractInputMethodService执行,必须由IME显式的处理,而IME正是InputMethodSession的自定义实现。

  * 只有激活的InputConnection接受操作。IMF通知每个客户进程是否激活,IMF忽略非激活进程对当前输入联接的调用。这确保了当前IME只将事件和文本编辑交付用户可见焦点的UI。

  * 一个IME永远不能在屏幕关闭时与 InputConnection交互。这是通过当屏幕关闭时所有客户端无效,并防止不良IME在用户无法关注其行为时驱动UI。

  * 客户应用程序可以要求系统选取一个新的IME,但不能编程式选择之一。这是避免恶意程序在用户导航到其它应用程序时,选择自己的IME并保持运行。也就是说,IME可以编程式的要求系统选择其它IME,因它完全控制了用户输入。

  用户在可切换至一个新的IME前必须显式的启用它,以确认系统了解它,使其处于可用状态。

  首先你要在手机上装有中文输入法。

  如果是程序调用指定的中文输入法就用InputMethodManager.setInputMethod (IBinder token, String id),函数可以在sdk中看相关说明。

  如果是手机上设置默认的话,设置-语言和输入法-默认- 然后在弹出框中选择你想要的输入法。

  开发一个输入法,只需要用到一个核心类和几个可有可无的辅助类。

  核心类是InputMethodService,一个输入法几乎所有的功能都是由它来实现的,包括键盘界面的搭建、键盘语言的切换、拼音汉字的转换、候选词的展示、文字的上屏等各种逻辑都通过这个类来实现。InputMethodService类有如下几个主要方法来管理输入法服务的生命周期:

  ·onCreate():输入法开始创建,内部已经实现

  设置theme、创建window、填充 rootview、设置布局方式等,我们也可以在此处

  做一些初始化操作,但一定不要忘了调用supper.onCreate () ;

  ·onCreatelnputView():返回一个 view 作为

  输入法的键盘布局,通常这个view是由KeyboardView 和 Keyboard两个辅助类生成,当然也完全可以自定义。切换一次输入法只会调用APP内打开

  ·onCreateCandidatesView():返回一个view

  来展示候选词,这个view可有可无,会覆盖到应用上方,一般用半透明的背景,但市面上的输入法一般都用来显示拼音部分,而把候选词放入InputView.同样切换一次输入法只会调用一次;

  ·onStartlnputView(Editorlnfo):开始输入的

  时候调用,每次唤起键盘或切换EditText都会调用,并把EditText的Editorlnfo传过来,输入法要根据 Editorlnfo的信息判断中英文、数字、回车键类型等,来展示不同的键盘,也就是动态切换 InputView的布局;

  ·onFinishlnput():输入结束的时候调用,此

  时可以做一些reset操作,比如隐藏CandidatesView,恢复InputView为默认布局等;APP内打开

  ·onDestroy():一般在切换其他输入法的时候

  我知道第三方的手写引擎有[多文手写识别]您可以搜索一下看看这个网站,有android、iphone、wince、mobile 的等等,是个很专业的公司,专门做手写识别的,我用过他们的库很强大,比起汉王、捷很等大公司便宜很多呢。

  参考开源的输入法程序:

  这个是个日语输入法

  初步学习:-1个月

  1.去电驴上下一份mars的视频。先浅浅的了解下android应用开发、整体架构和思路。mars的视频做的挺不错。

  2.在eclipse中导入api demos。在手机/模拟器上运行apidemos,里面的实例非常棒。可以把例子中涉及到项目的地方标注下,然后着重看看这部分的代码.

  逐渐深入:-3个月

  1.有选择的阅读android api中的Dev Guide部分。

  2.阅读android中的resources部分。

  上面的文章比较多,也不需要全部阅读。只是在做过初步工作后,有选择性的着重看一些相关内容。相关内容应该不仅仅包括项目直接相关的,还包括一些平台基础知识。这些东西应如何选择是在初步学习阶段中应该明确的。

  3.有空上上android相关比较好的社区,看看高手总结。如eoe、bus之类的。

  准备阶段:-3个月

  阅读开源的项目。

  楼下有的朋友也提了一些建议。我觉得都挺好的,到了这个时候就该开始阅读源码进行学习了。

  这里的关键在于慢慢扣源码,先找容易看到的类。看着注释慢慢理解,碰到不熟悉的类就查android的api。

  阅读是个长期的过程,然后必须要产生一些成果:

android输入法app开发(手机输入法开发)

  a.与输入法相关的关键接口有哪些?关键类有哪些,职责是什么?

  b.输入法的架构是怎样的?组件之间如何交互?

  c.数据从哪里来?如何进行组织?

android输入法app开发(手机输入法开发)
  3.开发阶段:

  迭代开发。从最小的原型开始做起。

  最小原型包括:最基本的输入法功能,输入字母,确定输入,显示字典,选择完成输入。最基础的测试数据。

  在完善输入法基本功能上迭代开发。包括联想输入,更智能的分词,以及符号和手写识别等。还有ui美化等等。

  既然你这边有学c的同学,那么在一些关键瓶颈方面。也可以使用NDK做后续优化。

  c楱摺c楱摺x栓u┝lc楱摺rèpぁvjⅠ法23450432042011-09-15 7:13:50r莬ンr莬ンwそd胜Ξmwそlゃylゃn瞌}
我知道一个很强大的作者,他们做过很多优秀的输入法。直接联系他们:抠抠:壹贰零肆柒柒贰叁玖

  关于android输入法app开发和手机输入法开发的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:http://chumeidian.com/72867.html