安卓平台添加新输入法框架学习

基于Qt平台开发安卓应用                                                   基于Qt平台开发安卓应用         在之前的Qt学习中,使用QtGUI来实现简单的界面与后台功能设计。这样开发出来的应用往往界面元素比较单一,美感几乎可以省略,与其他移动平台开发的App相比,确实逊色不少。基于此,Qt平台下开发GUI开始逐渐使用QML。使用QML开发的应用不仅界面美感十足,... 阅读详情
Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能。IMF设计用来支持不同的IME,包括了soft keyboard,hand-writing recognizes和hard keyboard translators。这里,我们把焦点锁定在soft keyboard上。

  新特色对普通应用开发者而言,应该确保让应用能够和IMF很好的配合,提供优秀的用户体验。应用要做的最重要事情,就是对每个EditText使用 新的属性android:inputType,这个属性实际代替了很多已经存在的属性,包括android:password, android:singleLine, android:numeric, android:phoneNumber, android:capitalize, android:autoText, android:editable。如果你两个都声明了,Cupcake设备就会使用新的android:inputType属性,而忽视其他的。

  主要的API就是android.view.inputmethod.InputMethodManager,你可以通过Context.getSystemService方法来获取。它允许你和全局输入法状态进行交互,例如显式隐藏或者显示IME的输入法区域。

  新特色对于系统开发人员而言,其提供了开发各种各样语言输入法的实现入口,有了它,其他语言输入法才能进驻Android。以下内容即关注如何实现一个输入法。

  要创建一个输入法,需要继承android.inputmethodservice.InputMethodService。这个类提供了输入法的 基本实现,包括状态管理、控制输入法可见,还有和当前activity通讯。Android提供了两个输入法和一个示例,这两个输入法分别是 PinyinIME和LatinIME输入法,你可以在源码packages/inputmethods下找到,示例即SoftKeyboard,可以在 SDK 1.5下的platforms/android-1.5/samples下找到。这三个输入法提供了目前实现Android平台输入法实现的最佳参考。

  输入法的打包方式和其他应用是相同的,在AndroidManifest.xml中,要把输入法声明为service,并附带上合适的intent filter和相关的meta data。如下所示:

  <service android:name=".DemoIme"

  android:label="@string/ime_name"

  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>

  如果输入法允许用户调整设置,那么你还应该提供一个setting activity。这个时候不要忘记在input-method的XML文件中,加入相关的属性,如以下所示(这个文件就是刚才meta-data中的@xml/method):

  <input-method xmlns:android="http://schemas.android.com/apk/res/android"

  android:settingsActivity="com.demo.SettingsActivity"

  android:isDefault="@bool/im_is_default" />

  输入法在UI展现上,有两个主要的可见元素,input view和candiate view。但这不是必需的,可以根据实际需要选择你需要的元素。Input View,是用户从键盘、手写或者其他方式输入文本的地方。当输入法第一次展现的时 候,InputMethodService.onCreateInputView()就会被调用。Candidates View,是候选词汇集合出现的地方。其可有可无,可以在调用InputMethodService.onCreateCandidatesView时返 回null,–这是它的默认行为。

  应用的文本区可以有不同的输入类型,包括文本、数值、URL、邮箱地址和搜索,因此在你实现新的输入法时,需要当心不同的输入类型。输入法并不会自 动切换不同的输入类型,所以你要在IME中支持所有的类型。不过可以轻松一点的是, IME并不负责输入内容的校验,—因为这是应用的职责。

  InputMethodService.onStartInputView()被调用时,会传入一个EditorInfo对象,这个对象包含了关于 输入类型和text field的其他属性的细节。EditorInfo.inputType和EditorInfo.TYPE_CLASS_MASK可以是很多值,包括 TYPE_CLASS_NUMBER,TYPE_CLASS_DATETIME,TYPE_CLASS_PHONE,TYPE_CLASS_TEXT。可 以通过android.text.InputType了解更多信息。

  要把文本发送给应用有两种方式,你可以发送单一的按键事件,也可以在应用的文本框内编辑光标附近的文本。发送按键事件,可以简单构造 KeyEvent对象,并且调用InputConnection.sendKeyEvent(),或者更加方便一点,使用 InputMethodService.sendDownUpKeyEvents(keyEventCode)。在编辑文本框 时,android.view.inputmethod.InputConnection有一些很有用的方法,例如 getTextBeforeCursor()等等。

Android8.1MTK平台设置开机默认输入法(安卓系统定制) 安卓8.1设置开机默认输入法 第一步,预装输入法 首先,把要默认为对应输入法的安卓包在网上下载下来,预装进系统源码中。 先说一个最简单的预装APK的方式。 在 package/apps/ 下面以需要预置的apk名字新建文件夹,如果是安卓8.1,路径为vendor\mediatek\proprietary\packages\apps 以预置 sogou为例。 将 sogou.apk 放到 ... 阅读详情

相关推荐

原生Android7.1 添加第三方输入法

平台:msm8953_64 Android 7.1.2 Ubuntu 16.04 第一步,获取输入输入法 (1)到讯飞输入法官网下载xxx.apk文件 (2)在packages/apps 目录下新建FlyIMEjackw目录,该目录名字后面要用到 (3)将输入法xxx.apk文件拷贝到FlyIMEjackw目录 (4) mv xxx.apk xxx.zip     unzip xxx.zip ...

qq_23851665的博客 3512

为 Android 平台开发一个输入法

<br />学习目标:<br />    1. 实现新的输入法<br /> 学习目的:<br />    1. 掌握Android输入法框架<br /> 学习收获:<br /> Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能。IMF设计用来支持不同的IME,包括了soft keyboard,hand-writing recognizes和hard keyboard translators。

1906

MTK平台 Android12-Android13 默认搜狗输入法

常用客需功能,仅供参考,在MTK平台上面的实践,在RK平台上面只有内置方式不一致而已,默认方式和授权其实一样的。这里只是搜狗输入法的默认方式一次探讨,其它输入法默认 思路完全一样。每种输入法有自己优劣,具体场景具体客需具体对待。

十年饮冰,难凉热血 1612

Android替换系统默认输入法

由于产品需求,需将Android原生输入法先后替换成搜狗输入法、百度输入法、谷歌拼音输入法,本文以替换为谷歌输入法为例。  packages/apps下新建文件夹,将需替换的第三方输入法apk放入该文件夹,编写Android.mk文件,一谷歌输入法为例,如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=

qq_35168368的博客 4513

深入探索安卓Android输入法开发——从源码到实现

用户自定义纠正词库可以显著提升输入法的个性化水平。例如,专业术语、网络新词或个人姓名等,标准词库中可能不存在,用户通过自定义词库可以快速输入这些词汇。在Android平台上,实现用户自定义纠正词库应用,需要设计存储结构来保存用户的自定义词汇,并在输入时进行匹配。简单的实现可以使用SharedPreferences或SQLite数据库来存储自定义词库数据。以下是一个使用SharedPreferences存储用户自定义词库的基本示例:// 将用户自定义词添加到词库。

weixin_42612405的博客 1905

谷歌输入法PinyinIME进行包名修改和JNI重新编译,并对代码进行注释。

由谷歌输入法PinyinIME进行包名修改和JNI重新编译,并对代码进行注释,可以直接安装到Android手机上,和谷歌输入法同时存在,不会冲突。

Android输入法框的梳理

http://blog.csdn.net/a345017062/article/details/6121147 /frameworks/base/services/java/InputMethodManagerService.java 这是整个系统当中,一切与输入法有关的地方的总控制中心。它通过管理下面三个模块来实现系统的输入法框架。 1、/frameworks/base/service

cc_lq的专栏 2931

安卓EditText输入框相关-Android框架chips-edittext-library.rar

Android框架chips-edittext-library.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

【精华】安卓开发学习路线规划

  近一段时间经常被朋友问到如何从零开始学习安卓,成为一名安卓开发工程师。不得不感叹,现在各行各业都有不少人在涌向IT/互联网行业,希望从事程序开发工作,竞争越来越激烈了。借此机会,我梳理了一下自己所学所知的安卓知识,制定了这份安卓开发学习路线规划,希望能帮助到有志于安卓开发的伙伴能尽快找到学习的方向,进入安卓开发的大门! 一、安卓开发学习路线   安卓开发可以从深度和广度两个维度进行学习。大方向上看,Android在向诸如Flutter这样的跨平台技术演进,混合式开发、大前端等正成为移动端的发展方向和热门

time-space的博客 2万+

避坑指南:RK3568双网口RMII模式DTS配置常见错误与调试技巧

本文详细解析了RK3568双网口RMII模式DTS配置中的常见错误与调试技巧,涵盖时钟配置、PHY识别、复位时序等关键问题。通过实战案例和系统化调试方法,帮助开发者快速解决百兆以太网连接不稳定、PHY识别失败等典型问题,提升开发效率。

weixin_42549037的博客 343

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 837

Android 输入法框架简介

每种平台都有自己的输入法框架. GNU/Linux 桌面环境有多种输入法框架, 比如 ibus, fcitx 等. 但是 Android 操作系统只有一种, 是统一提供的输入法框架.

穷人小水滴的博客 2049

Zemax操作41--公差分析(一)

zemax公差

lzy750750的博客 5973

安卓添加第三方输入法

安卓固件添加第三方输入法

m_l_z的博客 1476

YOLOv11改进 | 上采样篇 | YOLOv11引入DySample轻量级动态上采样器

虽然最近的基于内核的动态上采样器(如CARAFE、FADE和SAPA)的性能提升令人印象深刻,但它们引入了大量工作负载,主要是由于耗时的动态卷积和用于生成动态内核的额外子网。DySample模块的设计旨在解决现有动态上采样器的高计算开销和复杂性问题,同时提供更好的性能和效率。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 3128

2025_NIPS_RAGRouter: Learning to Route Queries to Multiple Retrieval-Augmented Language Models

该研究聚焦检索增强生成(RAG)场景下的大语言模型(LLM)路由问题,提出了首个RAG感知的路由框架RAGRouter。核心解决现有路由方法依赖静态参数知识、忽略检索文档动态影响的缺陷,通过融合文档嵌入、RAG能力嵌入与对比学习,捕捉RAG引发的模型知识表征变化,为每个查询-文档对选择最优LLM。实验覆盖5个知识密集型任务、15个开源/闭源LLM,验证了RAGRouter在性能上超越最佳单LLM和非RAG感知路由方法,且通过阈值机制实现低延迟约束下的性能-效率平衡。

UnknownBody_2的博客 271

Android 的输入法框架

 Android的输入法框架比价复杂。从进程的角度来讲,相关功能主要分布在下面三个位置:      客户端应用是一个包含有图形界面的应用,如地址本。图形界面上包含有能够接收输入的编辑框,如TextView。输入法模块提供软键盘,将用户在软键盘上的按键输入根据某种算法(如Zi, T9, 国笔等)转换成单词,然后传递给客户端应用。目录development/samples/SoftKeyboard下提供了一个输入法模块实例。如果想要实现一个中文输入法,可参考这个实例。平台部分实现一些管理功能,负责装载某个输入

因为了解所以无知 6644

【100%通过率】华为OD机试真题 JS 实现【水库蓄水问题】【2023 Q1 | 100分】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 8173

android安卓用Rime

在安卓通过小企鹅 fcitx-android 输入法用 RIME

iTom's blog 4051

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1071

28、沉浸式体验技术:概念、类型与应用

本文全面介绍了沉浸式体验技术的概念、类型与应用。从双边滤波器的图像处理原理切入,系统阐述了VR、AR、MR、ER及数字孪生等核心技术的特点与区别,并通过丰富案例展示了其在商业、医疗、教育、旅游、房地产、物流等多个领域的实际应用。文章还分析了技术融合趋势、硬件升级方向、应用场景拓展潜力,同时探讨了数据处理、网络延迟、隐私安全等挑战及应对策略,最后以流程图和对比表格总结技术发展脉络,展望沉浸式技术推动社会进步的广阔前景。

wind6的博客 380

【免费下载】 同文安卓输入法平台TRIME安装及使用教程

同文安卓输入法平台(TRIME)是基于RIME输入法框架的一个开源项目,主要用于支持传统中文输入。它采用Java和Kotlin编写,并通过JNI技术实现。TRIME旨在保护各种地方方言的母语,提供一个通用的形码和音码输入方法平台。该软件遵循GNU General Public License v3.0或更高版本的许可。 ## 2. 项目快速启动 ### 安装TRIME 1. 访问[同文安卓输入...

gitblog_00046的博客 3650

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

5个让你爱上TRIME开源输入法的理由:安卓平台上的方言守护者

同文安卓输入法平台(TRIME)是基于RIME输入法引擎的开源项目,专为Android系统打造。这个强大的输入法平台不仅支持标准拼音,还深度保护着各种方言输入,是语言多样性的忠实守护者。🚀 ## 🔍 TRIME输入法是什么? TRIME输入法是一款基于RIME输入法引擎的Android开源输入法,继承了RIME引擎强大的词库和智能学习能力。它不仅仅是输入工具,更是文化传承的桥梁。 [![

gitblog_00866的博客 1095

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android 平台开发一个输入法

Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能。IMF设计用来支持不同的IME,包括了soft keyboard,hand-writing recognizes和hard keyboard translators。这里,我们把焦点锁定在soft keyboard上。 新特色对普通应用开发者而言,应该确保让应用能够和IMF很好的配合,提供优秀的用户体验。应用要做的最重要事情,就是对每个Ed

m0_62089210的博客 2412

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android平台输入法开发解析

Android平台输入法开发解析 Android平台自1.5版本之后**了输入法框架(Input Method Framework,IMF),IMF是Android平台的特色设计。它的出现,为诞生不带实体键盘的设备提供了可能。同时,IMF**了Android平台输入法的开发接口,为Android平台的输入法提供了可扩展性。 本文首先介绍Android平台IMF的构成、工作机制和流程,以便广大开

liwei405499的专栏 2577

Android输入法架构学习总结

此文为本人学习输入法之后所做的一个总结报告。与大家分享。安卓输入法框架(Input Method Framework)IMF一.输入法框架简介自Android平台1.5版本以后,Google开放了 Android平台输入法框架(InputMethod Framework, IMF) , IMF是Android平台的特色设计。它的出现大大推动了不带实体键盘的设备的诞生。同时,Android...

weixin_34250709的博客 1208
上一篇: 在Android中创建一种新的输入法
下一篇: Understand <Java Concurrency in Practice>
androidwifi
博客等级 码龄14年 17粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值