在Android中创建自定义键盘

时间:2013-01-11 18:43:49

标签: android keyboard android-softkeyboard

我想编写一个自定义键盘,该键盘适用于运行Android 4.0及更高版本的所有设备。所以我首先搜索网络,但没有发现任何相关信息。那么如何创建一个取代Android的股票键盘的应用程序?

我想知道的事情:

  1. 那里有一个很好的教程吗?你们有样例代码吗?
  2. 我需要root才能这样做吗?
  3. 它背后的结构是什么? (它只是一个带服务的常规活动吗?)
  4. 是否可以读出键盘内的输入框?

3 个答案:

答案 0 :(得分:19)

所以,当我在Swype工作时,我做了大约2年。您不需要root,只需要实现InputMethodService即可。您可以从大多数文本框中获取文本,但不是全部(不是所有编辑字段都正确实现了它们的一半API。特别是输入类型为INPUT_TYPE_NULL的任何文件都不能正常工作)。要获取文本,您可以调用inputConnection.getExtractedText

请注意 - API很糟糕,应用程序受到攻击并且错过使用它。一个基本的键盘很容易,但尝试做任何复杂的事情,你会花很多时间。很多工时都进入了大键盘

答案 1 :(得分:9)

  

所以首先我在网上搜索但没有找到任何关于那个

的信息

互联网上的the Android developer documentation涵盖了创建输入法的方法。

  

你们有样本代码吗?

如果您从SDK Manager下载了示例代码,则SDK安装的samples/目录中有一个示例。寻找SoftKeyboard

  

我需要root才能这样做吗?

没有

  

它背后的结构是什么? (它只是一个带有服务的常规活动吗?)

an InputMethodService

答案 2 :(得分:2)

  
      
  1. 那里有一个很好的教程吗?你们有样例代码吗?
  2.   

这是一个很好的教程:
http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android--cms-22615

  
      
  1. 我需要root才能这样做吗?
  2.   

不,root不需要这样做。

  
      
  1. 它背后的结构是什么? (它只是一个带服务的常规活动吗?)
  2.   

您需要使用inputMethodService,请参阅documentation

  
      
  1. 是否可以读出键盘内的输入框?
  2.   

root:否

  

是否可以读出键盘内的输入框?

是的,这是可能的。

InputConnection ic = getCurrentInputConnection();
String currentText = ic.getExtractedText(new ExtractedTextRequest(), 0).text;