Dictioyanry-basierte Vorschläge werden in einer Kandidatenansicht von IME angezeigt, wenn wir mit der Eingabe im Textansichts-Editor beginnen. Wenn wir zum Beispiel "th" in textview eingeben, werden Wörter wie "this", "that", "the", "there" usw. angezeigt. Ich versuche herauszufinden, aus Android Repo-Quelle, wie diese wörterbuchbasierten Vorschläge intern abgerufen werden. Hat jemand versucht, dies zu untersuchen?Dictionary-basierte Auto-Vorschläge in Android IME
Antwort
Ich fing an, eine IME-Lösung für Android selbst zu erstellen, und ich verwende zwei Dinge für meine automatische Vervollständigung und Vorschläge. Nicht sicher, wie das dir oder irgendjemandem hilft. Aber das ist, was ich getan habe ...
Ich benutze die user_dict.db als Vorlage Datenbank aus dem Verzeichnis /data/data/com.android.providers.userdictionary/databases. Ich suchte nach den häufigsten englischen Wörtern und importierte sie in die Datenbank. Ich habe eine einfache Datenbankabfrage nach Wörtern gemacht, wie der Benutzer eine neue AsyncTask eingegeben hat. Auch wenn der Benutzer einen "Platz" zur Vervollständigung des Wortes einnimmt, habe ich Jazzy verwendet, was eine Rechtschreibprüfung für Java ist, und ich nahm die Eingabe von der InputConnection und schickte sie zur Überprüfung an Jazzy. Wenn die API mit mindestens zwei Ergebnissen aufwarten würde, würde ich das Benutzerwort durch das erste Ergebnis von Jazzy ersetzen.
Hier ist ein Teil des Codes, den ich verwendet habe, um die Liste der Vorschläge zu erstellen.
ArrayList<String> list = new ArrayList<String>();
.....AsyncTask.......
protected String doInBackground(String... str) {
list.clear();
list.add(totalString); // this is the string
//captured from InputConnection
Cursor c = db.getNameTitle(totalString); //this is my method in my Database
//adapter that queries the database and returns a limit of 30 results
if(c.moveToFirst()){
for(int i = 0; i < c.getCount(); i++){
list.add(c.getString(c.getColumnIndex(DBAdapter2.KEY_WORD)));
if(c.getCount() != i){
c.moveToNext();
}
}
}
c.close();
}
protected void onPostExecute(String result) {
mCandidateView.clear();
mCandidateView.setCandidatesViewShown(false);
Log.i("TAG", String.valueOf(list.size()));
if(list.size() > 0 && list.size() < 32){
mCandidateView.setSuggestions(list, true, true);//CandidateView similar to the SDK's example of SoftKeyboard or LatinIME
}
}
Hoffe das hilft jedem. Es kann einen anderen Weg geben, dies zu tun, aber diese Worte sind großartig und schnell. Sie müssen möglicherweise die beste Abfrage herausfinden, die Ihren Anforderungen entspricht.
- 1. Android IME, die Unicode akzeptieren
- 2. Android Benutzerdefinierter IME verwenden Standardtastatur
- 3. Android: Umschalten auf einen anderen IME programmatisch
- 4. So erhalten Sie aktuelle Aktivität von IME-Dienst in Android
- 5. Android IME: Wie zeigt man einen Popup-Dialog?
- 6. Android: Wie man bevorzugte Tastaturansicht Modus von IME setzen
- 7. Android: ListView mit EditTexts vermasselt Fokus und IME
- 8. Was genau macht ime() Selen?
- 9. C# und IME - Abrufen des aktuellen Eingabetextes
- 10. Normale Menü KeyEvent von IME-Eröffnung unterscheiden
- 11. Rendering benutzerdefinierte Emoji durch ein IME
- 12. Aktivität für Ergebnis von IME starten
- 13. MultiautoCompleteTextView ime keyabord zeigt keine Vorschläge
- 14. IME in einem Kasten benutzerdefinierten Text Einlochen, von Control abgeleitet
- 15. Ist es möglich, einen IME in WinRT zu erstellen?
- 16. Ändern der IME-Sprache in Java-Swing-Anwendung
- 17. Behalten Sie Soft-Input/IME-Status bei Orientierungsänderung
- 18. Ich kann den japanischen IME nicht von meinem Android-Emulator entfernen
- 19. Wie kann ich den IME-Modus auf bestimmte TextBox einstellen?
- 20. Was sind diese Fenster? .. "M" und "Default IME" (von GetWindowText)
- 21. Wie bekomme ich die aktuelle Tastatur (aktuelle IME) über ADB
- 22. Ich mache einen Android IME. Wie füge ich einen Listeneintrag "Einstellungen" im Einstellungsbildschirm "Sprache und Tastatur" hinzu?
- 23. Android - Soft Tastatur für TextField in einem Webview
- 24. Android - Änderung Tastatur programmatisch
- 25. Multiprocessing auf Android
- 26. Wie scrollview zu keyboardView in android hinzufügen
- 27. wie Englisch Tastatur in Android EditText zu zwingen
- 28. Android: Text bearbeiten Go Button
- 29. Wie das <ENTER> Schlüssel Verhalten der virtuellen Tastatur in Android außer Kraft zu setzen
- 30. Benutzerdefiniertes Wörterbuch (keine Tastatur) für Android-Apps