### FEPonSeries60:S60平台输入法开发技术详解 #### 一、引言 随着智能手机的普及和技术的发展,用户对于输入法的需求日益多样化。为了满足不同用户的个性化需求,Series60(S60)平台提供了一套完整的输入法开发框架——**FEP(Front End Processors)**。本文将详细介绍S60平台输入法开发的相关技术和要点,为开发者提供实用的指南。 #### 二、FEP概述 FEP是S60平台中用于处理文本输入的核心组件之一。它位于用户与应用程序之间,负责拦截键盘、指针或语音事件,并将其转换为文本字符,然后发送给底层的应用程序。FEP的主要功能包括: - **支持多种输入方式**:当设备上的键盘无法提供足够的字符时,或者设备根本没有物理键盘的情况下,FEP能够提供虚拟键盘等替代输入方案。 - **事件处理**:FEP能够拦截各种输入事件,对其进行处理后转化为文本形式,再传递给目标应用。 - **使用场景**: - 当键盘上的字符无法满足输入需求时。 - 设备不配备物理键盘或键盘的情况。 #### 三、FEP架构设计 FEP的架构设计非常关键,它不仅决定了FEP的功能实现方式,还直接影响了其性能表现。下面是对FEP架构的几个重要方面的介绍: 1. **架构概述**: - **多态性**:FEP本质上是一个多态的动态链接库(DLL)。 - **CONE集成**:利用S60平台中的UI控制框架(CONE)来拦截键盘和指针事件。 - **接口定义**:遵循CONE在epoc32\include\coefepff.h中定义的接口规范。 - **工厂函数**:FEP的第一个导出函数是一个工厂函数,该函数在创建CCoeEnv对象时被调用,即在每个应用初始化过程中都会执行。 2. **控制栈管理**: - FEP通常拥有一个控制(Control),该控制会以较高优先级添加到控制栈中。 - 由FEP拥有的窗口通常设置为序号位置零,这意味着它会始终位于最顶层。 3. **实例化机制**: - 每个运行中的应用程序只允许有一个FEP实例。 - T9是S60平台默认的FEP。 - 为了支持高级特性,需要实现FEP设置在多个实例间的同步。 4. **数据文件共享**: - FEP可以存储在ROM、非ROM或MMC驱动器上。 - 当FEP不在ROM中时,每个FEP实例可能需要加载大型数据文件到自己的地址空间。 - 可以实现一个服务器来共享对这些数据文件的访问。 5. **单一FEP使用**: - 每次只能使用一个FEP。 - 当用户更改FEP时,正在运行的应用程序会自动更新所使用的FEP。 - 即使在模拟器中FEP可以开关,但它实际上总是处于活动状态。 #### 四、FEP架构组成部分 为了实现上述功能,S60平台中涉及到以下核心组件: - **CONE**:负责管理FEP的创建、所有权转移及销毁。 - **FEPBASE**:提供基础类和实用工具类,支持FEP的开发。 - **ETEXT**:提供内联编辑支持。 通过这些组件之间的协作,实现了应用程序与FEP之间的交互而无需彼此了解对方的细节,CONE作为这些对象接口的代理,确保了系统的灵活性和扩展性。 #### 五、高级特性 FEP除了基本的输入处理功能之外,还支持一些高级特性,例如内联编辑。内联编辑使得用户能够在输入文本的同时看到正在组成的文本,从而提高了输入的准确性和效率。 #### 六、总结 FEP是S60平台中输入法开发的重要组成部分。通过深入了解FEP的架构和工作原理,开发者可以更好地设计和实现定制化的输入解决方案,满足不同用户的需求。本文提供的技术介绍和要点可以帮助开发者快速入门,并在实际项目中灵活运用FEP的相关技术。
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助