Android输入法架构
Android输入法架构 裴润升 oppo开发三部 输入法 为系统中其他模块提供输入功能的模块 1 硬键盘 2 软键盘 3 手写 4 语音输入 问题: 输入法和应用分属不同的模块,如何输入内容? 输入法 问题: 输入法和应用分属不同模块,不同进程,如何交互? 输入法整体架构图 注:虚线框用于区分不同的进程 输入法应用进程部分 输入应用的内部架构 InputMethodService InputMethodService功能接口部分 InputMethodService InputMethodService GUI部分 InputMethodService InputMethodService GUI部分 Application端 App端: 系统服务端 系统服务端: 模块和接口分析 IInputMethodManager提供的接口方法列表: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ List getInputMethodList(); List getEnabledInputMethodList(); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ void addClient(……); void removeClient(); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ InputBindResult startInput(…, EditorInfo, …); void finishInput(); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ void showSoftInput(……); void hideSoftInput(……); void showInputMethodPickerFromClient(……); void hideMySoftInput(……); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ void setInputMethod(……); boolean setInputMethodEnabled(……); ---------------------