Connect the personalization dictionary
Bug: 9429906 Bug: 4192129 Change-Id: I9c9f3ed7699f74339ad92be6dcddb8a52c377545
This commit is contained in:
parent
932aeb9d22
commit
60586b57cf
3 changed files with 48 additions and 9 deletions
|
@ -76,6 +76,7 @@ import com.android.inputmethod.keyboard.MainKeyboardView;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.define.ProductionFlag;
|
||||
import com.android.inputmethod.latin.personalization.PersonalizationDictionaryHelper;
|
||||
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
|
||||
import com.android.inputmethod.latin.personalization.UserHistoryPredictionDictionary;
|
||||
import com.android.inputmethod.latin.settings.Settings;
|
||||
import com.android.inputmethod.latin.settings.SettingsActivity;
|
||||
|
@ -170,6 +171,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
private boolean mIsMainDictionaryAvailable;
|
||||
private UserBinaryDictionary mUserDictionary;
|
||||
private UserHistoryPredictionDictionary mUserHistoryPredictionDictionary;
|
||||
private PersonalizationPredictionDictionary mPersonalizationPredictionDictionary;
|
||||
private boolean mIsUserDictionaryAvailable;
|
||||
|
||||
private LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
|
||||
|
@ -560,6 +562,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
mUserHistoryPredictionDictionary = PersonalizationDictionaryHelper
|
||||
.getUserHistoryPredictionDictionary(this, localeStr, prefs);
|
||||
newSuggest.setUserHistoryPredictionDictionary(mUserHistoryPredictionDictionary);
|
||||
mPersonalizationPredictionDictionary = PersonalizationDictionaryHelper
|
||||
.getPersonalizationPredictionDictionary(this, localeStr, prefs);
|
||||
newSuggest.setPersonalizationPredictionDictionary(mPersonalizationPredictionDictionary);
|
||||
|
||||
final Suggest oldSuggest = mSuggest;
|
||||
resetContactsDictionary(null != oldSuggest ? oldSuggest.getContactsDictionary() : null);
|
||||
|
@ -2509,9 +2514,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
final SettingsValues currentSettings = mSettings.getCurrent();
|
||||
if (!currentSettings.mCorrectionEnabled) return null;
|
||||
|
||||
final UserHistoryPredictionDictionary userHistoryDictionary =
|
||||
final UserHistoryPredictionDictionary userHistoryPredictionDictionary =
|
||||
mUserHistoryPredictionDictionary;
|
||||
if (userHistoryDictionary == null) return null;
|
||||
if (userHistoryPredictionDictionary == null) return null;
|
||||
|
||||
final String prevWord = mConnection.getNthPreviousWord(currentSettings.mWordSeparators, 2);
|
||||
final String secondWord;
|
||||
|
@ -2525,7 +2530,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
final int maxFreq = AutoCorrectionUtils.getMaxFrequency(
|
||||
suggest.getUnigramDictionaries(), suggestion);
|
||||
if (maxFreq == 0) return null;
|
||||
userHistoryDictionary.addToUserHistory(prevWord, secondWord, maxFreq > 0);
|
||||
userHistoryPredictionDictionary.addToUserHistory(prevWord, secondWord, maxFreq > 0);
|
||||
return prevWord;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import android.text.TextUtils;
|
|||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
|
||||
import com.android.inputmethod.latin.personalization.UserHistoryPredictionDictionary;
|
||||
import com.android.inputmethod.latin.utils.AutoCorrectionUtils;
|
||||
import com.android.inputmethod.latin.utils.BoundedTreeSet;
|
||||
|
@ -174,6 +175,12 @@ public final class Suggest {
|
|||
userHistoryPredictionDictionary);
|
||||
}
|
||||
|
||||
public void setPersonalizationPredictionDictionary(
|
||||
final PersonalizationPredictionDictionary personalizationPredictionDictionary) {
|
||||
addOrReplaceDictionary(mDictionaries, Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA,
|
||||
personalizationPredictionDictionary);
|
||||
}
|
||||
|
||||
public void setAutoCorrectionThreshold(float threshold) {
|
||||
mAutoCorrectionThreshold = threshold;
|
||||
}
|
||||
|
|
|
@ -30,25 +30,52 @@ public class PersonalizationDictionaryHelper {
|
|||
private static final boolean DEBUG = false;
|
||||
|
||||
private static final ConcurrentHashMap<String, SoftReference<UserHistoryPredictionDictionary>>
|
||||
sLangDictCache = CollectionUtils.newConcurrentHashMap();
|
||||
sLangUserHistoryDictCache = CollectionUtils.newConcurrentHashMap();
|
||||
|
||||
private static final ConcurrentHashMap<String,
|
||||
SoftReference<PersonalizationPredictionDictionary>>
|
||||
sLangPersonalizationDictCache = CollectionUtils.newConcurrentHashMap();
|
||||
|
||||
public static UserHistoryPredictionDictionary getUserHistoryPredictionDictionary(
|
||||
final Context context, final String locale, final SharedPreferences sp) {
|
||||
synchronized (sLangDictCache) {
|
||||
if (sLangDictCache.containsKey(locale)) {
|
||||
synchronized (sLangUserHistoryDictCache) {
|
||||
if (sLangUserHistoryDictCache.containsKey(locale)) {
|
||||
final SoftReference<UserHistoryPredictionDictionary> ref =
|
||||
sLangDictCache.get(locale);
|
||||
sLangUserHistoryDictCache.get(locale);
|
||||
final UserHistoryPredictionDictionary dict = ref == null ? null : ref.get();
|
||||
if (dict != null) {
|
||||
if (DEBUG) {
|
||||
Log.w(TAG, "Use cached UserHistoryDictionary for " + locale);
|
||||
Log.w(TAG, "Use cached UserHistoryPredictionDictionary for " + locale);
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
final UserHistoryPredictionDictionary dict =
|
||||
new UserHistoryPredictionDictionary(context, locale, sp);
|
||||
sLangDictCache.put(locale, new SoftReference<UserHistoryPredictionDictionary>(dict));
|
||||
sLangUserHistoryDictCache.put(
|
||||
locale, new SoftReference<UserHistoryPredictionDictionary>(dict));
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
|
||||
public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary(
|
||||
final Context context, final String locale, final SharedPreferences sp) {
|
||||
synchronized (sLangPersonalizationDictCache) {
|
||||
if (sLangPersonalizationDictCache.containsKey(locale)) {
|
||||
final SoftReference<PersonalizationPredictionDictionary> ref =
|
||||
sLangPersonalizationDictCache.get(locale);
|
||||
final PersonalizationPredictionDictionary dict = ref == null ? null : ref.get();
|
||||
if (dict != null) {
|
||||
if (DEBUG) {
|
||||
Log.w(TAG, "Use cached PersonalizationPredictionDictionary for " + locale);
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
final PersonalizationPredictionDictionary dict =
|
||||
new PersonalizationPredictionDictionary(context, locale, sp);
|
||||
sLangPersonalizationDictCache.put(
|
||||
locale, new SoftReference<PersonalizationPredictionDictionary>(dict));
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue