android - 将文本输入更改为也将 "u"视为 "ü",将 "ss"视为 "ß"等以获取单词建议

标签 android android-edittext

我有以下想法:

在德语中我们有四个额外的字母(ä、ö、ü、ß),我不知道任何其他语言有这些声音,但我认为有口音的法国人也知道这个问题。我们在 Google Play 商店中有很多适用于城市、公交车站、火车和其他类似内容的应用程序。现在真的很累,如果我们在路上,我们总是要写这些信。写 Munchen (=München [de] = Munich [en])、Osterreich (Österreich [de] = Austria [en]) 或像 Uberwasserstrasse (Überwasserstraße [de] = Over-Water-Street [en] 这样的东西会容易得多]).所以我现在的问题是:

很多应用程序会为我们刚刚输入的单词显示建议。我认为在代码中是这样的:

String current = editText.getText().toString();
db.lookUp(current); // Of course SQL statement

如果我们写 a、o、u、ss 并且系统查找具有这些元音之一的单词并建议两个元音,我们是否可以 Hook 它以便 Android 认为我们输入了 ä、ö、ü、ß?在这里我不想索取代码——我想讨论我们是否能够为 Android 系统编写 hack 或 hook。此外,可以使用解决方案假定 root 权限。我期待着您的想法。

最佳答案

您可以通过相反的方式来做到这一点,将键入的字符“规范化”为其相关的非变音版本。您可以使用 java.Text.Normalizer为此上课。可以在 this article 中找到一个好的 fragment :

public static String removeAccents(String text) {
    return text == null ? null :
        Normalizer.normalize(text, Form.NFD)
            .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}

应用于“Münich”时,返回“Munich”。这样,您就可以使用这些规范化版本进行简单的字符串比较。

不过,这不适用于“ß”。如果这是唯一的特殊情况,您可以单独处理。

关于android - 将文本输入更改为也将 "u"视为 "ü",将 "ss"视为 "ß"等以获取单词建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305349/

相关文章:

android - FragmentTabHost 在 popBackStack 之后获取空 fragment

android - 检测 Android 应用程序是否在后台运行

android软键盘横向覆盖editText

android - 编辑文本大小不应改变 ImageView 的大小

android - 如何制作自定义文本输入类型 Android

java - 启用和禁用 TextView 的可编辑模式

android - 带有动态 Edittext 的 RecyclerView

php - 上传多张图片到服务器

android - Android 上的 Ti.UI.WebView : webpage is not being displayed

java - 是否可以在同一 Activity 中执行单独的网络线程而无需等待?