Android 将文本输入更改为同时处理;u";作为「ü&引用&引用;ss";作为「ß&引用;,等等,以获得文字建议

Android 将文本输入更改为同时处理;u";作为「ü&引用&引用;ss";作为「ß&引用;,等等,以获得文字建议,android,android-edittext,Android,Android Edittext,我有以下想法: 在德语中,我们有四个额外的字母(ä,ö,ü,ß),我不知道还有哪种语言有这些声音,但我认为有口音的法国人也知道这个问题。我们在谷歌Play商店中有很多应用程序,用于城市、公交车站、火车和其他类似的东西。如果我们在旅途中总是要写这些信,这真的很让人筋疲力尽。写Munchen(慕尼黑)、Osterreich(奥地利)或类似Uberwasserstrasse(水上街)的东西要容易得多。所以我现在的问题是: 许多应用程序显示了对我们刚输入的单词的建议。我认为在代码中是这样的: Strin

我有以下想法:

在德语中,我们有四个额外的字母(ä,ö,ü,ß),我不知道还有哪种语言有这些声音,但我认为有口音的法国人也知道这个问题。我们在谷歌Play商店中有很多应用程序,用于城市、公交车站、火车和其他类似的东西。如果我们在旅途中总是要写这些信,这真的很让人筋疲力尽。写Munchen(慕尼黑)、Osterreich(奥地利)或类似Uberwasserstrasse(水上街)的东西要容易得多。所以我现在的问题是:

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

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

如果我们写了一个a,o,u,ss,系统会寻找其中一个元音的单词,并同时提示这两个元音,那么我们能钩住它让Android认为我们已经输入了anä,ö,ü,ß吗?这里我不想问代码——我想讨论一下我们是否能够为Android系统编写一个黑客或钩子。此外,还可以使用该解决方案假定根权限。我期待着您的想法。

您正在寻找的是不区分重音的排序序列。SQLite的COLLATE操作符可以用来进行这样的搜索,但我从另一篇文章中了解到,您需要在那里进行搜索。

您可以通过另一种方式来进行搜索,将键入的字符“规范化”为其相关的非变音字符版本。您可以使用该类进行此操作。以下是一个好的代码片段:

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


但这对“ß”不起作用。如果这是唯一的特殊情况,您可以单独处理。

对我来说,实现您所描述的目标的唯一方法是构建自定义键盘。这样我就可以使用自己的键盘为应用程序提供不同的单词了?也许一个服务就足够了吗?使用快捷键或任何其他像样的键盘,它会给你想要的建议(在键入“Oster”后Österreich)。我使用快捷键是因为我可以同时使用多种语言而不必在它们之间切换。也就是说,我认为这个问题过于宽泛或不够具体,不足以被视为一个编程问题。我不是Android爱好者,但我认为这可能很方便:这个想法是你的查找对重音和变音符号不敏感。这种方法使使用标准键盘和字符集成为可能。希望这有帮助。
public static String removeAccents(String text) {
    return text == null ? null :
        Normalizer.normalize(text, Form.NFD)
            .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}