输入法开发

创建一个输入法
输入法是一种可以让用户输入文本的控件。安卓提供一个可扩展的输入法框架,这个框架允许程序提供给用户不同的输入方式,比如屏幕键盘或语音输入。安装好各种各样的输入法后,用户可以通过系统设置选择需要使用的输入法,在同一时刻,只能有一个输入法被激活使用。

为了给安卓添加一个输入法,你需要创建一个包含继承自InputMethodService的类的安卓程序。另外,通常你还会创建一个”设置“Activity用来将一些配置传递给 IME(输入法) 服务。你也可以给安卓系统的设置添加一个设置你输入法的界面。

本文要介绍的引导如下:

  • 输入法服务的生命舟曲
  • 在程序的manifest文件中定义IME组件
  • 输入法的API
  • 设计输入法的界面
  • 从输入法传递文本到一个程序
  • 输入法子类型的协同工作

如果你没有使用过任何输入法,你可以先读读这篇介绍的文章 Onscreen Input Methods。同时,你可以通过修改SoftKeyboard 这个包括在SDK的示例程序来创建你的输入法程序。

输入法的生命周期
下面这个图描述了输入法的生命周期:
输入法开发_第1张图片
接下来的章节里讲如何实现界面还有依据这个生命周期相关的输入法的代码

在Manifest中声明输入法组件
在安卓系统中,一个输入法是一个包括了特别的输入法Service的应用程序。这个程序的Manifest文件必须声明这个服务,请求必要的权限,提供一个和 action.view.InputMethod 相匹配的intent filter,还要提供定义输入法特性的metadata。另外,为了提供允许用户更改输入法行为的设置界面,你也可以定义“设置”Activity,这个Activity可以从系统的设置中启动。

接下来这一小段代码声明一个输入法服务,这个服务需要一个 BIND_INPUT_METHOD 的权限来允许服务链接系统的输入法框架,需要一个android.view.InputMethod action的Intent Filter,还要再定义输入法的metadata:

<!-- Declares the input method service -->
    <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD">
        <intent-filter>
            <action android:name="android.view.InputMethod" />
        </intent-filter>
        <meta-data android:name="android.view.im" android:resource="@xml/method" />
    </service>

下面这一串代码声明这个输入法的设置Activity。包含一个 ACTION_MAIN 的Intent filter来指明这个Activity是这个输入法程序的入口:

<!-- Optional: an activity for controlling the IME settings -->
    <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
        </intent-filter>
    </activity>

你也可以从这个界面直接接触到输入法的设置。

输入法API

未完待续。。。

你可能感兴趣的:(android,输入法)