aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/layout-sw768dp/recognition_status.xml16
-rw-r--r--java/res/layout/input_view.xml2
-rw-r--r--java/res/layout/key_preview.xml6
-rw-r--r--java/res/layout/recognition_status.xml18
-rw-r--r--java/res/layout/sound_effect_volume_dialog.xml8
-rw-r--r--java/res/layout/suggestion_info.xml2
-rw-r--r--java/res/layout/suggestion_preview.xml4
-rw-r--r--java/res/layout/vibration_settings_dialog.xml10
-rw-r--r--java/res/layout/voice_punctuation_hint.xml8
-rw-r--r--java/res/layout/voice_swipe_hint.xml6
-rw-r--r--java/res/values-en/additional-proximitychars.xml62
-rw-r--r--java/res/values-land/dimens.xml6
-rw-r--r--java/res/values-sw600dp-land/dimens.xml2
-rw-r--r--java/res/values-sw600dp/dimens.xml15
-rw-r--r--java/res/values-sw768dp-land/dimens.xml3
-rw-r--r--java/res/values-sw768dp/dimens.xml17
-rw-r--r--java/res/values/additional-proximitychars.xml23
-rw-r--r--java/res/values/dimens.xml29
-rw-r--r--java/res/values/styles.xml25
-rw-r--r--java/res/values/sudden-jumping-touch-event-device-list.xml8
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyDetector.java189
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java36
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java37
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java28
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/ProximityInfo.java35
-rw-r--r--java/src/com/android/inputmethod/keyboard/SuddenJumpingTouchEventHandler.java16
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java3
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java4
-rw-r--r--java/src/com/android/inputmethod/latin/DebugSettings.java2
-rw-r--r--java/src/com/android/inputmethod/latin/InputAttributes.java1
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java31
-rw-r--r--java/src/com/android/inputmethod/latin/LatinImeLogger.java2
-rw-r--r--java/src/com/android/inputmethod/latin/SettingsValues.java24
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java24
-rw-r--r--java/src/com/android/inputmethod/latin/UserHistoryDictionary.java (renamed from java/src/com/android/inputmethod/latin/UserBigramDictionary.java)46
-rw-r--r--java/src/com/android/inputmethod/latin/Utils.java52
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java9
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java (renamed from tools/makedict/src/com/android/inputmethod/latin/BinaryDictInputOutput.java)8
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/CharGroupInfo.java (renamed from tools/makedict/src/com/android/inputmethod/latin/CharGroupInfo.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java (renamed from tools/makedict/src/com/android/inputmethod/latin/FusionDictionary.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/MakedictLog.java (renamed from tools/makedict/src/com/android/inputmethod/latin/MakedictLog.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/PendingAttribute.java (renamed from tools/makedict/src/com/android/inputmethod/latin/PendingAttribute.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/UnsupportedFormatException.java (renamed from tools/makedict/src/com/android/inputmethod/latin/UnsupportedFormatException.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/Word.java (renamed from tools/makedict/src/com/android/inputmethod/latin/Word.java)4
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java11
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java8
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java1
-rw-r--r--native/src/bigram_dictionary.cpp5
-rw-r--r--tools/makedict/Android.mk24
-rw-r--r--tools/makedict/etc/manifest.txt2
-rw-r--r--tools/makedict/src/com/android/inputmethod/latin/makedict/DictionaryMaker.java (renamed from tools/makedict/src/com/android/inputmethod/latin/DictionaryMaker.java)2
-rw-r--r--tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java (renamed from tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java)4
-rw-r--r--tools/makedict/tests/com/android/inputmethod/latin/BinaryDictInputOutputTest.java4
55 files changed, 276 insertions, 638 deletions
diff --git a/java/res/layout-sw768dp/recognition_status.xml b/java/res/layout-sw768dp/recognition_status.xml
index 40bc09823..d476651c6 100644
--- a/java/res/layout-sw768dp/recognition_status.xml
+++ b/java/res/layout-sw768dp/recognition_status.xml
@@ -26,8 +26,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_layout"
android:orientation="vertical"
- android:layout_height="371dip"
- android:layout_width="500dip"
+ android:layout_height="371dp"
+ android:layout_width="500dp"
android:layout_centerInParent="true"
android:background="@drawable/vs_dialog_red">
<TextView
@@ -36,13 +36,13 @@
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:singleLine="true"
- android:layout_marginTop="10dip"
+ android:layout_marginTop="10dp"
android:textSize="28sp"
android:textColor="#ffffff"
android:layout_gravity="center"
android:visibility="invisible"/>
<RelativeLayout
- android:layout_height="0dip"
+ android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1.0">
<com.android.inputmethod.deprecated.voice.SoundIndicator
@@ -65,8 +65,8 @@
android:id="@+id/progress"
android:indeterminate="true"
android:indeterminateOnly="false"
- android:layout_height="60dip"
- android:layout_width="60dip"
+ android:layout_height="60dp"
+ android:layout_width="60dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</RelativeLayout>
@@ -82,14 +82,14 @@
android:layout_width="wrap_content"
android:singleLine="true"
android:textSize="14sp"
- android:layout_marginBottom="3dip"
+ android:layout_marginBottom="3dp"
android:layout_gravity="center"
android:textColor="#ffffff"
android:visibility="invisible"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
- android:layout_height="54dip"
+ android:layout_height="54dp"
android:singleLine="true"
android:focusable="true"
android:text="@string/cancel"
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index 0a8d71f30..3863534be 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -28,7 +28,7 @@
<View
android:id="@+id/key_preview_backing"
android:layout_width="match_parent"
- android:layout_height="0dip" />
+ android:layout_height="0dp" />
<!-- On tablets, the suggestions strip is centered with horizontal paddings on both sides
because width of the landscape mode is too long for the suggestions strip. This
diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview.xml
index b620d07d8..6ed892e28 100644
--- a/java/res/layout/key_preview.xml
+++ b/java/res/layout/key_preview.xml
@@ -20,8 +20,8 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
- android:layout_height="80sp"
- android:textSize="40sp"
- android:minWidth="32dip"
+ android:layout_height="80dp"
+ android:textSize="40dp"
+ android:minWidth="32dp"
android:gravity="center"
/>
diff --git a/java/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml
index a2ddb7c50..578788831 100644
--- a/java/res/layout/recognition_status.xml
+++ b/java/res/layout/recognition_status.xml
@@ -26,8 +26,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_layout"
android:orientation="vertical"
- android:layout_height="371dip"
- android:layout_width="500dip"
+ android:layout_height="371dp"
+ android:layout_width="500dp"
android:layout_centerInParent="true"
android:background="@drawable/vs_dialog_red">
<TextView
@@ -36,13 +36,13 @@
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:singleLine="true"
- android:layout_marginTop="10dip"
+ android:layout_marginTop="10dp"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center"
android:visibility="invisible"/>
<RelativeLayout
- android:layout_height="0dip"
+ android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1.0">
<com.android.inputmethod.deprecated.voice.SoundIndicator
@@ -65,8 +65,8 @@
android:id="@+id/progress"
android:indeterminate="true"
android:indeterminateOnly="false"
- android:layout_height="60dip"
- android:layout_width="60dip"
+ android:layout_height="60dp"
+ android:layout_width="60dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</RelativeLayout>
@@ -82,15 +82,15 @@
android:layout_width="wrap_content"
android:singleLine="true"
android:textSize="15sp"
- android:layout_marginTop="3dip"
- android:layout_marginBottom="3dip"
+ android:layout_marginTop="3dp"
+ android:layout_marginBottom="3dp"
android:layout_gravity="center"
android:textColor="#ffffff"
android:visibility="invisible"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
- android:layout_height="30dip"
+ android:layout_height="30dp"
android:singleLine="true"
android:focusable="true"
android:text="@string/cancel"
diff --git a/java/res/layout/sound_effect_volume_dialog.xml b/java/res/layout/sound_effect_volume_dialog.xml
index c5b2f10e2..294663006 100644
--- a/java/res/layout/sound_effect_volume_dialog.xml
+++ b/java/res/layout/sound_effect_volume_dialog.xml
@@ -23,22 +23,22 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="10dip">
+ android:layout_margin="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
- android:layout_margin="10dip">
+ android:layout_margin="10dp">
<TextView android:id="@+id/sound_effect_volume_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="20dip"/>
+ android:textSize="20dp"/>
</LinearLayout>
<SeekBar
android:id="@+id/sound_effect_volume_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
- android:layout_margin="10dip"/>
+ android:layout_margin="10dp"/>
</LinearLayout>
diff --git a/java/res/layout/suggestion_info.xml b/java/res/layout/suggestion_info.xml
index a364d46aa..a4ad6df25 100644
--- a/java/res/layout/suggestion_info.xml
+++ b/java/res/layout/suggestion_info.xml
@@ -22,6 +22,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="6sp"
+ android:textSize="6dp"
android:textColor="@android:color/white"
style="?attr/suggestionBackgroundStyle" />
diff --git a/java/res/layout/suggestion_preview.xml b/java/res/layout/suggestion_preview.xml
index 3c026ae0e..856447bba 100644
--- a/java/res/layout/suggestion_preview.xml
+++ b/java/res/layout/suggestion_preview.xml
@@ -21,8 +21,8 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="18sp"
+ android:textSize="18dp"
android:textColor="?android:attr/textColorPrimaryInverse"
- android:minWidth="32dip"
+ android:minWidth="32dp"
android:gravity="center"
style="?attr/suggestionPreviewBackgroundStyle" />
diff --git a/java/res/layout/vibration_settings_dialog.xml b/java/res/layout/vibration_settings_dialog.xml
index 981ba9be0..c9fb6ec4e 100644
--- a/java/res/layout/vibration_settings_dialog.xml
+++ b/java/res/layout/vibration_settings_dialog.xml
@@ -23,27 +23,27 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="10dip">
+ android:layout_margin="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
- android:layout_margin="10dip">
+ android:layout_margin="10dp">
<TextView android:id="@+id/vibration_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="20dip"/>
+ android:textSize="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/settings_ms"
- android:textSize="20dip"/>
+ android:textSize="20dp"/>
</LinearLayout>
<SeekBar
android:id="@+id/vibration_settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="250"
- android:layout_margin="10dip"/>
+ android:layout_margin="10dp"/>
</LinearLayout>
diff --git a/java/res/layout/voice_punctuation_hint.xml b/java/res/layout/voice_punctuation_hint.xml
index 629a7f2b5..b32feb6e2 100644
--- a/java/res/layout/voice_punctuation_hint.xml
+++ b/java/res/layout/voice_punctuation_hint.xml
@@ -29,8 +29,8 @@
<ImageView android:id="@+id/image"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_suggest_strip_microphone"
/>
@@ -39,8 +39,8 @@
android:text="@string/voice_punctuation_hint"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:paddingTop="2dip"
- android:paddingRight="3dip"
+ android:paddingTop="2dp"
+ android:paddingRight="3dp"
android:textSize="13sp"
android:textColor="#888888"
android:layout_gravity="center_horizontal"
diff --git a/java/res/layout/voice_swipe_hint.xml b/java/res/layout/voice_swipe_hint.xml
index 4e8859a71..b1e27c281 100644
--- a/java/res/layout/voice_swipe_hint.xml
+++ b/java/res/layout/voice_swipe_hint.xml
@@ -25,14 +25,14 @@
android:layout_height="wrap_content"
android:background="@drawable/keyboard_suggest_strip"
android:gravity="center_horizontal"
- android:paddingTop="2dip">
+ android:paddingTop="2dp">
<TextView android:id="@+id/text"
android:text="@string/voice_swipe_hint"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:paddingTop="10dip"
- android:paddingRight="6dip"
+ android:paddingTop="10dp"
+ android:paddingRight="6dp"
android:textSize="13sp"
android:textColor="#888888"
android:layout_gravity="center_horizontal"
diff --git a/java/res/values-en/additional-proximitychars.xml b/java/res/values-en/additional-proximitychars.xml
deleted file mode 100644
index a5ff4a979..000000000
--- a/java/res/values-en/additional-proximitychars.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
- <string-array name="additional_proximitychars">
- <!-- Empty entry terminates the proximity chars array. -->
-
- <!-- Additional proximity chars for a -->
- <item>a</item>
- <item>e</item>
- <item>i</item>
- <item>o</item>
- <item>u</item>
- <item></item>
- <!-- Additional proximity chars for e -->
- <item>e</item>
- <item>a</item>
- <item>i</item>
- <item>o</item>
- <item>u</item>
- <item></item>
- <!-- Additional proximity chars for i -->
- <item>i</item>
- <item>a</item>
- <item>e</item>
- <item>o</item>
- <item>u</item>
- <item></item>
- <!-- Additional proximity chars for o -->
- <item>o</item>
- <item>a</item>
- <item>e</item>
- <item>i</item>
- <item>u</item>
- <item></item>
- <!-- Additional proximity chars for u -->
- <item>u</item>
- <item>a</item>
- <item>e</item>
- <item>i</item>
- <item>o</item>
- <item></item>
- </string-array>
-
-</resources>
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 73192d944..6cdcf891c 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -44,7 +44,7 @@
<fraction name="key_horizontal_gap_ics">1.020%p</fraction>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_padding">8dip</dimen>
+ <dimen name="key_label_horizontal_padding">8dp</dimen>
<fraction name="key_letter_ratio">65%</fraction>
<fraction name="key_large_letter_ratio">74%</fraction>
@@ -60,8 +60,8 @@
<!-- popup_key_height x -0.5 -->
<dimen name="more_keys_keyboard_vertical_correction_ics">-0.140in</dimen>
- <dimen name="suggestions_strip_height">36dip</dimen>
- <dimen name="more_suggestions_row_height">36dip</dimen>
+ <dimen name="suggestions_strip_height">36dp</dimen>
+ <dimen name="more_suggestions_row_height">36dp</dimen>
<integer name="max_more_suggestions_row">2</integer>
<fraction name="min_more_suggestions_width">60%</fraction>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 68083b534..5dce47ee3 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -40,7 +40,7 @@
<dimen name="popup_key_height">13.0mm</dimen>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_padding">18dip</dimen>
+ <dimen name="key_label_horizontal_padding">18dp</dimen>
<fraction name="key_letter_ratio">45%</fraction>
<fraction name="key_large_letter_ratio">48%</fraction>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index a86102421..0f256a302 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -40,7 +40,7 @@
<fraction name="keyboard_bottom_padding_ics">0.0%p</fraction>
- <dimen name="more_keys_keyboard_key_horizontal_padding">6dip</dimen>
+ <dimen name="more_keys_keyboard_key_horizontal_padding">6dp</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
<dimen name="more_keys_keyboard_slide_allowance">15.6mm</dimen>
@@ -48,7 +48,7 @@
<dimen name="more_keys_keyboard_vertical_correction">-13.0mm</dimen>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_padding">6dip</dimen>
+ <dimen name="key_label_horizontal_padding">6dp</dimen>
<dimen name="key_hint_letter_padding">3dp</dimen>
<dimen name="key_uppercase_letter_padding">3dp</dimen>
@@ -63,18 +63,17 @@
<dimen name="key_preview_height">15.0mm</dimen>
<dimen name="key_preview_offset">0.1in</dimen>
- <dimen name="key_preview_height_ics">15.0mm</dimen>
<dimen name="key_preview_offset_ics">0.05in</dimen>
<!-- popup_key_height x -0.5 -->
<dimen name="more_keys_keyboard_vertical_correction_ics">-5mm</dimen>
- <dimen name="suggestions_strip_height">44dip</dimen>
- <dimen name="more_suggestions_row_height">44dip</dimen>
+ <dimen name="suggestions_strip_height">44dp</dimen>
+ <dimen name="more_suggestions_row_height">44dp</dimen>
<integer name="max_more_suggestions_row">6</integer>
<fraction name="min_more_suggestions_width">90%</fraction>
<dimen name="suggestions_strip_padding">15.0mm</dimen>
<dimen name="suggestion_min_width">0.3in</dimen>
- <dimen name="suggestion_padding">12dip</dimen>
- <dimen name="suggestion_text_size">22dip</dimen>
- <dimen name="more_suggestions_hint_text_size">33dip</dimen>
+ <dimen name="suggestion_padding">12dp</dimen>
+ <dimen name="suggestion_text_size">22dp</dimen>
+ <dimen name="more_suggestions_hint_text_size">33dp</dimen>
</resources>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index ef39f4393..535c62308 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -44,7 +44,7 @@
<dimen name="popup_key_height">13.0mm</dimen>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_padding">18dip</dimen>
+ <dimen name="key_label_horizontal_padding">18dp</dimen>
<fraction name="key_letter_ratio">43%</fraction>
<fraction name="key_large_letter_ratio">42%</fraction>
@@ -55,7 +55,6 @@
<fraction name="spacebar_text_ratio">24.00%</fraction>
<dimen name="key_preview_height">17.0mm</dimen>
- <dimen name="key_preview_height_ics">26.5mm</dimen>
<dimen name="key_preview_offset_ics">0.05in</dimen>
<dimen name="suggestions_strip_padding">40.0mm</dimen>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index a9ad030fe..7aefa26af 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -43,7 +43,7 @@
<dimen name="popup_key_height">10.0mm</dimen>
- <dimen name="more_keys_keyboard_key_horizontal_padding">12dip</dimen>
+ <dimen name="more_keys_keyboard_key_horizontal_padding">12dp</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
<dimen name="more_keys_keyboard_slide_allowance">15.6mm</dimen>
@@ -51,7 +51,7 @@
<dimen name="more_keys_keyboard_vertical_correction">-13.0mm</dimen>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_padding">6dip</dimen>
+ <dimen name="key_label_horizontal_padding">6dp</dimen>
<dimen name="key_hint_letter_padding">3dp</dimen>
<dimen name="key_uppercase_letter_padding">3dp</dimen>
@@ -66,18 +66,17 @@
<dimen name="key_preview_height">15.0mm</dimen>
<dimen name="key_preview_offset">0.1in</dimen>
- <dimen name="key_preview_height_ics">15.0mm</dimen>
<dimen name="key_preview_offset_ics">0.05in</dimen>
<!-- popup_key_height x -0.5 -->
<dimen name="more_keys_keyboard_vertical_correction_ics">-5mm</dimen>
- <dimen name="suggestions_strip_height">44dip</dimen>
- <dimen name="more_suggestions_row_height">44dip</dimen>
+ <dimen name="suggestions_strip_height">44dp</dimen>
+ <dimen name="more_suggestions_row_height">44dp</dimen>
<integer name="max_more_suggestions_row">6</integer>
<fraction name="min_more_suggestions_width">90%</fraction>
<dimen name="suggestions_strip_padding">15.0mm</dimen>
- <dimen name="suggestion_min_width">46dip</dimen>
- <dimen name="suggestion_padding">8dip</dimen>
- <dimen name="suggestion_text_size">22dip</dimen>
- <dimen name="more_suggestions_hint_text_size">33dip</dimen>
+ <dimen name="suggestion_min_width">46dp</dimen>
+ <dimen name="suggestion_padding">8dp</dimen>
+ <dimen name="suggestion_text_size">22dp</dimen>
+ <dimen name="more_suggestions_hint_text_size">33dp</dimen>
</resources>
diff --git a/java/res/values/additional-proximitychars.xml b/java/res/values/additional-proximitychars.xml
deleted file mode 100644
index 03d10d5d8..000000000
--- a/java/res/values/additional-proximitychars.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string-array name="additional_proximitychars">
- </string-array>
-</resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 37720ce72..5f74fa746 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -26,8 +26,8 @@
<dimen name="popup_key_height">0.330in</dimen>
- <dimen name="more_keys_keyboard_horizontal_edges_padding">16dip</dimen>
- <dimen name="more_keys_keyboard_key_horizontal_padding">8dip</dimen>
+ <dimen name="more_keys_keyboard_horizontal_edges_padding">16dp</dimen>
+ <dimen name="more_keys_keyboard_key_horizontal_padding">8dp</dimen>
<fraction name="keyboard_top_padding">1.556%p</fraction>
<fraction name="keyboard_bottom_padding">4.669%p</fraction>
@@ -48,7 +48,7 @@
<fraction name="keyboard_bottom_padding_ics">4.669%p</fraction>
<fraction name="key_bottom_gap_ics">6.127%p</fraction>
<fraction name="key_horizontal_gap_ics">1.739%p</fraction>
- <dimen name="more_keys_keyboard_horizontal_edges_padding_ics">4dip</dimen>
+ <dimen name="more_keys_keyboard_horizontal_edges_padding_ics">4dp</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
@@ -67,33 +67,32 @@
<fraction name="key_uppercase_letter_ratio">35%</fraction>
<fraction name="key_preview_text_ratio">82%</fraction>
<fraction name="spacebar_text_ratio">33.735%</fraction>
- <dimen name="key_preview_height">80sp</dimen>
+ <dimen name="key_preview_height">80dp</dimen>
<dimen name="key_preview_offset">0.1in</dimen>
- <dimen name="key_label_horizontal_padding">4dip</dimen>
+ <dimen name="key_label_horizontal_padding">4dp</dimen>
<dimen name="key_hint_letter_padding">1dp</dimen>
<dimen name="key_popup_hint_letter_padding">2dp</dimen>
<dimen name="key_uppercase_letter_padding">2dp</dimen>
- <dimen name="key_preview_height_ics">80sp</dimen>
<dimen name="key_preview_offset_ics">0.05in</dimen>
<!-- popup_key_height x -0.5 -->
<dimen name="more_keys_keyboard_vertical_correction_ics">-0.165in</dimen>
- <dimen name="suggestions_strip_height">40dip</dimen>
- <dimen name="more_suggestions_key_horizontal_padding">12dip</dimen>
- <dimen name="more_suggestions_row_height">40dip</dimen>
- <dimen name="more_suggestions_bottom_gap">6dip</dimen>
+ <dimen name="suggestions_strip_height">40dp</dimen>
+ <dimen name="more_suggestions_key_horizontal_padding">12dp</dimen>
+ <dimen name="more_suggestions_row_height">40dp</dimen>
+ <dimen name="more_suggestions_bottom_gap">6dp</dimen>
<dimen name="more_suggestions_modal_tolerance">0.2in</dimen>
<dimen name="more_suggestions_slide_allowance">0.1in</dimen>
<integer name="max_more_suggestions_row">6</integer>
<fraction name="min_more_suggestions_width">90%</fraction>
<fraction name="more_suggestions_info_ratio">18%</fraction>
- <dimen name="suggestions_strip_padding">0dip</dimen>
- <dimen name="suggestion_min_width">44dip</dimen>
- <dimen name="suggestion_padding">6dip</dimen>
- <dimen name="suggestion_text_size">18dip</dimen>
- <dimen name="more_suggestions_hint_text_size">27dip</dimen>
+ <dimen name="suggestions_strip_padding">0dp</dimen>
+ <dimen name="suggestion_min_width">44dp</dimen>
+ <dimen name="suggestion_padding">6dp</dimen>
+ <dimen name="suggestion_text_size">18dp</dimen>
+ <dimen name="more_suggestions_hint_text_size">27dp</dimen>
<integer name="suggestions_count_in_strip">3</integer>
<integer name="center_suggestion_percentile">36</integer>
</resources>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 7d8b7ddf2..5628f271c 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -95,9 +95,9 @@
name="MoreKeysKeyboard"
parent="Keyboard"
>
- <item name="keyboardTopPadding">0dip</item>
- <item name="keyboardBottomPadding">0dip</item>
- <item name="horizontalGap">0dip</item>
+ <item name="keyboardTopPadding">0dp</item>
+ <item name="keyboardBottomPadding">0dp</item>
+ <item name="horizontalGap">0dp</item>
</style>
<style
name="MoreKeysKeyboardView"
@@ -205,9 +205,9 @@
name="MoreKeysKeyboard.Stone"
parent="Keyboard.Stone"
>
- <item name="keyboardTopPadding">0dip</item>
- <item name="keyboardBottomPadding">0dip</item>
- <item name="horizontalGap">0dip</item>
+ <item name="keyboardTopPadding">0dp</item>
+ <item name="keyboardBottomPadding">0dp</item>
+ <item name="horizontalGap">0dp</item>
</style>
<style
name="MoreKeysKeyboardView.Stone"
@@ -274,9 +274,9 @@
name="MoreKeysKeyboard.Gingerbread"
parent="Keyboard.Gingerbread"
>
- <item name="keyboardTopPadding">0dip</item>
- <item name="keyboardBottomPadding">0dip</item>
- <item name="horizontalGap">0dip</item>
+ <item name="keyboardTopPadding">0dp</item>
+ <item name="keyboardBottomPadding">0dp</item>
+ <item name="horizontalGap">0dp</item>
</style>
<style
name="MoreKeysKeyboardView.Gingerbread"
@@ -315,7 +315,6 @@
<item name="keyPreviewBackgroundWidth">@dimen/keyboard_key_feedback_background_holo_width</item>
<item name="keyPreviewBackgroundHeight">@dimen/keyboard_key_feedback_background_holo_height</item>
<item name="keyPreviewTextColor">#FFFFFFFF</item>
- <item name="keyPreviewHeight">@dimen/key_preview_height_ics</item>
<item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
<item name="shadowColor">#00000000</item>
<item name="shadowRadius">0.0</item>
@@ -334,9 +333,9 @@
name="MoreKeysKeyboard.IceCreamSandwich"
parent="Keyboard.IceCreamSandwich"
>
- <item name="keyboardTopPadding">0dip</item>
- <item name="keyboardBottomPadding">0dip</item>
- <item name="horizontalGap">0dip</item>
+ <item name="keyboardTopPadding">0dp</item>
+ <item name="keyboardBottomPadding">0dp</item>
+ <item name="horizontalGap">0dp</item>
</style>
<style
name="MoreKeysKeyboardView.IceCreamSandwich"
diff --git a/java/res/values/sudden-jumping-touch-event-device-list.xml b/java/res/values/sudden-jumping-touch-event-device-list.xml
index ba828a758..543992a81 100644
--- a/java/res/values/sudden-jumping-touch-event-device-list.xml
+++ b/java/res/values/sudden-jumping-touch-event-device-list.xml
@@ -19,9 +19,9 @@
-->
<resources>
<string-array name="sudden_jumping_touch_event_device_list" translatable="false">
- <!-- Nexus One -->
- <item>mahimahi</item>
- <!-- Droid -->
- <item>sholes</item>
+ <!-- "Build.HARDWARE,true" that needs "sudden jump touch event" hack.
+ See {@link com.android.inputmethod.keyboard.SuddenJumpingTouchEventHandler}. -->
+ <item>mahimahi,true</item> <!-- Nexus One -->
+ <item>sholes,true</item> <!-- Droid -->
</string-array>
</resources>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index d342c6df0..13e909c7e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -16,17 +16,9 @@
package com.android.inputmethod.keyboard;
-import android.util.Log;
-
-import java.util.Arrays;
-import java.util.List;
public class KeyDetector {
- private static final String TAG = KeyDetector.class.getSimpleName();
- private static final boolean DEBUG = false;
-
public static final int NOT_A_CODE = -1;
- private static final int ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE = 2;
private final int mKeyHysteresisDistanceSquared;
@@ -34,12 +26,6 @@ public class KeyDetector {
private int mCorrectionX;
private int mCorrectionY;
private boolean mProximityCorrectOn;
- private int mProximityThresholdSquare;
-
- // working area
- private static final int MAX_NEARBY_KEYS = 12;
- private final int[] mDistances = new int[MAX_NEARBY_KEYS];
- private final Key[] mNeighborKeys = new Key[MAX_NEARBY_KEYS];
/**
* This class handles key detection.
@@ -57,8 +43,6 @@ public class KeyDetector {
mCorrectionX = (int)correctionX;
mCorrectionY = (int)correctionY;
mKeyboard = keyboard;
- final int threshold = keyboard.mMostCommonKeyWidth;
- mProximityThresholdSquare = threshold * threshold;
}
public int getKeyHysteresisDistanceSquared() {
@@ -87,169 +71,11 @@ public class KeyDetector {
return mProximityCorrectOn;
}
- public void setProximityThreshold(int threshold) {
- mProximityThresholdSquare = threshold * threshold;
- }
-
public boolean alwaysAllowsSlidingInput() {
return false;
}
/**
- * Computes maximum size of the array that can contain all nearby key codes returned by
- * {@link #getNearbyCodes}.
- *
- * @return Returns maximum size of the array that can contain all nearby key codes returned
- * by {@link #getNearbyCodes}.
- */
- protected int getMaxNearbyKeys() {
- return MAX_NEARBY_KEYS;
- }
-
- /**
- * Allocates array that can hold all key codes returned by {@link #getNearbyCodes}
- * method. The maximum size of the array should be computed by {@link #getMaxNearbyKeys}.
- *
- * @return Allocates and returns an array that can hold all key codes returned by
- * {@link #getNearbyCodes} method. All elements in the returned array are
- * initialized by {@link #NOT_A_CODE} value.
- */
- public int[] newCodeArray() {
- int[] codes = new int[getMaxNearbyKeys()];
- Arrays.fill(codes, NOT_A_CODE);
- return codes;
- }
-
- private void initializeNearbyKeys() {
- Arrays.fill(mDistances, Integer.MAX_VALUE);
- Arrays.fill(mNeighborKeys, null);
- }
-
- /**
- * Insert the key into nearby keys buffer and sort nearby keys by ascending order of distance.
- * If the distance of two keys are the same, the key which the point is on should be considered
- * as a closer one.
- *
- * @param key the key to be inserted into the nearby keys buffer.
- * @param distance distance between the key's edge and user touched point.
- * @param isOnKey true if the point is on the key.
- * @return order of the key in the nearby buffer, 0 if it is the nearest key.
- */
- private int sortNearbyKeys(Key key, int distance, boolean isOnKey) {
- final int[] distances = mDistances;
- final Key[] neighborKeys = mNeighborKeys;
- for (int insertPos = 0; insertPos < distances.length; insertPos++) {
- final int comparingDistance = distances[insertPos];
- if (distance < comparingDistance || (distance == comparingDistance && isOnKey)) {
- final int nextPos = insertPos + 1;
- if (nextPos < distances.length) {
- System.arraycopy(distances, insertPos, distances, nextPos,
- distances.length - nextPos);
- System.arraycopy(neighborKeys, insertPos, neighborKeys, nextPos,
- neighborKeys.length - nextPos);
- }
- distances[insertPos] = distance;
- neighborKeys[insertPos] = key;
- return insertPos;
- }
- }
- return distances.length;
- }
-
- private void getNearbyKeyCodes(final int primaryCode, final int[] allCodes) {
- final Key[] neighborKeys = mNeighborKeys;
- final int maxCodesSize = allCodes.length;
-
- // allCodes[0] should always have the key code even if it is a non-letter key.
- if (neighborKeys[0] == null) {
- allCodes[0] = NOT_A_CODE;
- return;
- }
-
- int numCodes = 0;
- for (int j = 0; j < neighborKeys.length && numCodes < maxCodesSize; j++) {
- final Key key = neighborKeys[j];
- if (key == null)
- break;
- final int code = key.mCode;
- // filter out a non-letter key from nearby keys
- if (code < Keyboard.CODE_SPACE)
- continue;
- allCodes[numCodes++] = code;
- }
- if (maxCodesSize <= numCodes) {
- return;
- }
-
- final int code = (primaryCode == NOT_A_CODE) ? allCodes[0] : primaryCode;
- if (code == NOT_A_CODE) {
- return;
- }
- final List<Integer> additionalChars = mKeyboard.getAdditionalProximityChars().get(code);
- if (additionalChars == null || additionalChars.size() == 0) {
- return;
- }
- int currentCodesSize = numCodes;
- allCodes[numCodes++] = ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE;
- if (maxCodesSize <= numCodes) {
- return;
- }
- // TODO: This is O(N^2). Assuming additionalChars.size() is up to 4 or 5.
- for (int i = 0; i < additionalChars.size(); ++i) {
- final int additionalChar = additionalChars.get(i);
- boolean contains = false;
- for (int j = 0; j < currentCodesSize; ++j) {
- if (additionalChar == allCodes[j]) {
- contains = true;
- break;
- }
- }
- if (!contains) {
- allCodes[numCodes++] = additionalChar;
- if (maxCodesSize <= numCodes) {
- return;
- }
- }
- }
- }
-
- /**
- * Finds all possible nearby key codes around a touch event point and returns the nearest key.
- * The algorithm to determine the nearby keys depends on the threshold set by
- * {@link #setProximityThreshold(int)} and the mode set by
- * {@link #setProximityCorrectionEnabled(boolean)}.
- *
- * @param x The x-coordinate of a touch point
- * @param y The y-coordinate of a touch point
- * @param allCodes All nearby key codes except functional key are returned in this array
- */
- // TODO: Move this method to native code.
- public void getNearbyCodes(int x, int y, final int[] allCodes) {
- final int touchX = getTouchX(x);
- final int touchY = getTouchY(y);
-
- initializeNearbyKeys();
- Key primaryKey = null;
- for (final Key key : mKeyboard.getNearestKeys(touchX, touchY)) {
- final boolean isOnKey = key.isOnKey(touchX, touchY);
- final int distance = key.squaredDistanceToEdge(touchX, touchY);
- if (isOnKey || (mProximityCorrectOn && distance < mProximityThresholdSquare)) {
- final int insertedPosition = sortNearbyKeys(key, distance, isOnKey);
- if (insertedPosition == 0 && isOnKey) {
- primaryKey = key;
- }
- }
- }
-
- getNearbyKeyCodes(primaryKey != null ? primaryKey.mCode : NOT_A_CODE, allCodes);
- if (DEBUG) {
- Log.d(TAG, "x=" + x + " y=" + y
- + " primary=" + printableCode(primaryKey)
- + " codes=" + printableCodes(allCodes));
- }
- }
-
- /**
* Detect the key whose hitbox the touch point is in.
*
* @param x The x-coordinate of a touch point
@@ -265,9 +91,9 @@ public class KeyDetector {
for (final Key key: mKeyboard.getNearestKeys(touchX, touchY)) {
final boolean isOnKey = key.isOnKey(touchX, touchY);
final int distance = key.squaredDistanceToEdge(touchX, touchY);
- // TODO: need to take care of hitbox overlaps
+ // To take care of hitbox overlaps, we compare mCode here too.
if (primaryKey == null || distance < minDistance
- || (distance == minDistance && isOnKey)) {
+ || (distance == minDistance && isOnKey && key.mCode > primaryKey.mCode)) {
minDistance = distance;
primaryKey = key;
}
@@ -284,14 +110,9 @@ public class KeyDetector {
boolean addDelimiter = false;
for (final int code : codes) {
if (code == NOT_A_CODE) break;
- if (code == ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE) {
- sb.append(" | ");
- addDelimiter = false;
- } else {
- if (addDelimiter) sb.append(", ");
- sb.append(Keyboard.printableCode(code));
- addDelimiter = true;
- }
+ if (addDelimiter) sb.append(", ");
+ sb.append(Keyboard.printableCode(code));
+ addDelimiter = true;
}
return "[" + sb + "]";
}
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 973f64b4d..2b1cc43cd 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -20,7 +20,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
-import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -42,8 +41,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
/**
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@@ -133,8 +130,6 @@ public class Keyboard {
private final ProximityInfo mProximityInfo;
- private final Map<Integer, List<Integer>> mAdditionalProximityChars;
-
public Keyboard(Params params) {
mId = params.mId;
mThemeId = params.mThemeId;
@@ -153,12 +148,10 @@ public class Keyboard {
mAltCodeKeysWhileTyping = params.mAltCodeKeysWhileTyping.toArray(
new Key[params.mAltCodeKeysWhileTyping.size()]);
mIconsSet = params.mIconsSet;
- mAdditionalProximityChars = params.mAdditionalProximityChars;
mProximityInfo = new ProximityInfo(params.mId.mLocale.toString(),
params.GRID_WIDTH, params.GRID_HEIGHT, mOccupiedWidth, mOccupiedHeight,
- mMostCommonKeyWidth, mMostCommonKeyHeight, mKeys, params.mTouchPositionCorrection,
- params.mAdditionalProximityChars);
+ mMostCommonKeyWidth, mMostCommonKeyHeight, mKeys, params.mTouchPositionCorrection);
}
public ProximityInfo getProximityInfo() {
@@ -230,9 +223,6 @@ public class Keyboard {
public final ArrayList<Key> mShiftKeys = new ArrayList<Key>();
public final ArrayList<Key> mAltCodeKeysWhileTyping = new ArrayList<Key>();
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
- // TODO: Should be in Key instead of Keyboard.Params?
- public final Map<Integer, List<Integer>> mAdditionalProximityChars =
- new HashMap<Integer, List<Integer>>();
public KeyboardSet.KeysCache mKeysCache;
@@ -368,10 +358,6 @@ public class Keyboard {
return mProximityInfo.getNearestKeys(adjustedX, adjustedY);
}
- public Map<Integer, List<Integer>> getAdditionalProximityChars() {
- return mAdditionalProximityChars;
- }
-
public static String printableCode(int code) {
switch (code) {
case CODE_SHIFT: return "shift";
@@ -630,7 +616,6 @@ public class Keyboard {
mParams = params;
setTouchPositionCorrectionData(context, params);
- setAdditionalProximityChars(context, params);
params.GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width);
params.GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height);
@@ -653,25 +638,6 @@ public class Keyboard {
params.mTouchPositionCorrection.load(data);
}
- private static void setAdditionalProximityChars(Context context, Params params) {
- final String[] additionalChars =
- context.getResources().getStringArray(R.array.additional_proximitychars);
- int currentPrimaryIndex = 0;
- for (int i = 0; i < additionalChars.length; ++i) {
- final String additionalChar = additionalChars[i];
- if (TextUtils.isEmpty(additionalChar)) {
- currentPrimaryIndex = 0;
- } else if (currentPrimaryIndex == 0) {
- currentPrimaryIndex = additionalChar.charAt(0);
- params.mAdditionalProximityChars.put(
- currentPrimaryIndex, new ArrayList<Integer>());
- } else if (currentPrimaryIndex != 0) {
- final int c = additionalChar.charAt(0);
- params.mAdditionalProximityChars.get(currentPrimaryIndex).add(c);
- }
- }
- }
-
public void setAutoGenerate(KeyboardSet.KeysCache keysCache) {
mParams.mKeysCache = keysCache;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 847174c0a..24eb7592b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -99,7 +99,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Main keyboard
private Keyboard mKeyboard;
- private final KeyDrawParams mKeyDrawParams;
+ protected final KeyDrawParams mKeyDrawParams;
// Key preview
private final int mKeyPreviewLayoutId;
@@ -171,7 +171,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- /* package */ static class KeyDrawParams {
+ protected static class KeyDrawParams {
// XML attributes
public final int mKeyTextColor;
public final int mKeyTextInactivatedColor;
@@ -351,7 +351,6 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
mDelayAfterPreview = mKeyPreviewDrawParams.mLingerTimeout;
mPaint.setAntiAlias(true);
- mPaint.setTextAlign(Align.CENTER);
}
// Read fraction value in TypedArray as float.
@@ -729,10 +728,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- private static int getCharGeometryCacheKey(char reference, Paint paint) {
+ private static int getCharGeometryCacheKey(char referenceChar, Paint paint) {
final int labelSize = (int)paint.getTextSize();
final Typeface face = paint.getTypeface();
- final int codePointOffset = reference << 15;
+ final int codePointOffset = referenceChar << 15;
if (face == Typeface.DEFAULT) {
return codePointOffset + labelSize;
} else if (face == Typeface.DEFAULT_BOLD) {
@@ -747,41 +746,35 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Working variable for the following methods.
private final Rect mTextBounds = new Rect();
- private float getCharHeight(char[] character, Paint paint) {
- final Integer key = getCharGeometryCacheKey(character[0], paint);
+ private float getCharHeight(char[] referenceChar, Paint paint) {
+ final Integer key = getCharGeometryCacheKey(referenceChar[0], paint);
final Float cachedValue = sTextHeightCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, mTextBounds);
+ paint.getTextBounds(referenceChar, 0, 1, mTextBounds);
final float height = mTextBounds.height();
sTextHeightCache.put(key, height);
return height;
}
- private float getCharWidth(char[] character, Paint paint) {
- final Integer key = getCharGeometryCacheKey(character[0], paint);
+ private float getCharWidth(char[] referenceChar, Paint paint) {
+ final Integer key = getCharGeometryCacheKey(referenceChar[0], paint);
final Float cachedValue = sTextWidthCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, mTextBounds);
+ paint.getTextBounds(referenceChar, 0, 1, mTextBounds);
final float width = mTextBounds.width();
sTextWidthCache.put(key, width);
return width;
}
- protected float getLabelWidth(CharSequence label, Paint paint) {
+ public float getLabelWidth(String label, Paint paint) {
paint.getTextBounds(label.toString(), 0, label.length(), mTextBounds);
return mTextBounds.width();
}
- public float getDefaultLabelWidth(String label, Paint paint) {
- paint.setTextSize(mKeyDrawParams.mKeyLabelSize);
- paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
- return getLabelWidth(label, paint);
- }
-
protected static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
int height) {
canvas.translate(x, y);
@@ -815,6 +808,14 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
canvas.translate(-x, -y);
}
+ public Paint newDefaultLabelPaint() {
+ final Paint paint = new Paint();
+ paint.setAntiAlias(true);
+ paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
+ paint.setTextSize(mKeyDrawParams.mKeyLabelSize);
+ return paint;
+ }
+
public void cancelAllMessages() {
mDrawingHandler.cancelAllMessages();
}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index 343842552..da7d01af4 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -54,6 +54,7 @@ import com.android.inputmethod.latin.StringUtils;
import com.android.inputmethod.latin.SubtypeUtils;
import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils;
+import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils.LogGroup;
import java.util.Locale;
import java.util.WeakHashMap;
@@ -480,7 +481,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
super.setKeyboard(keyboard);
mKeyDetector.setKeyboard(
keyboard, -getPaddingLeft(), -getPaddingTop() + mVerticalCorrection);
- mKeyDetector.setProximityThreshold(keyboard.mMostCommonKeyWidth);
PointerTracker.setKeyDetector(mKeyDetector);
mTouchScreenRegulator.setKeyboard(keyboard);
mMoreKeysPanelCache.clear();
@@ -702,7 +702,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
break;
}
if (!TextUtils.isEmpty(eventTag)) {
- UsabilityStudyLogUtils.getInstance().write(
+ UsabilityStudyLogUtils.getInstance().write(LogGroup.MOTION_EVENT,
eventTag + eventTime + "," + id + "," + x + "," + y + ","
+ me.getSize(index) + "," + me.getPressure(index));
}
@@ -765,9 +765,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
}
tracker.onMoveEvent(px, py, eventTime);
if (ENABLE_USABILITY_STUDY_LOG) {
- UsabilityStudyLogUtils.getInstance().write("[Move]" + eventTime + ","
- + me.getPointerId(i) + "," + px + "," + py + ","
- + me.getSize(i) + "," + me.getPressure(i));
+ UsabilityStudyLogUtils.getInstance().write(
+ LogGroup.MOTION_EVENT,
+ "[Move]" + eventTime + "," + me.getPointerId(i) + "," + px + "," + py
+ + "," + me.getSize(i) + "," + me.getPressure(i));
}
}
} else {
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
index 6c8d02016..cd4e3001e 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
@@ -33,34 +33,6 @@ public class MoreKeysDetector extends KeyDetector {
}
@Override
- protected int getMaxNearbyKeys() {
- // No nearby key will be returned.
- return 1;
- }
-
- @Override
- public void getNearbyCodes(int x, int y, final int[] allCodes) {
- final int touchX = getTouchX(x);
- final int touchY = getTouchY(y);
-
- Key nearestKey = null;
- int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare;
- for (final Key key : getKeyboard().mKeys) {
- final int dist = key.squaredDistanceToEdge(touchX, touchY);
- if (dist < nearestDist) {
- nearestKey = key;
- nearestDist = dist;
- }
- }
-
- if (nearestKey != null) {
- allCodes[0] = nearestKey.mCode;
- } else {
- allCodes[0] = NOT_A_CODE;
- }
- }
-
- @Override
public Key detectHitKey(int x, int y) {
final int touchX = getTouchX(x);
final int touchY = getTouchY(y);
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index 904a81de4..72a5d0f05 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -296,17 +296,16 @@ public class MoreKeysKeyboard extends Keyboard {
final int padding = (int)(view.getResources()
.getDimension(R.dimen.more_keys_keyboard_key_horizontal_padding)
+ (parentKey.hasLabelsInMoreKeys() ? minKeyWidth * LABEL_PADDING_RATIO : 0));
- Paint paint = null;
+ final Paint paint = view.newDefaultLabelPaint();
+ paint.setTextSize(parentKey.hasLabelsInMoreKeys()
+ ? view.mKeyDrawParams.mKeyLabelSize
+ : view.mKeyDrawParams.mKeyLetterSize);
int maxWidth = minKeyWidth;
for (String moreKeySpec : parentKey.mMoreKeys) {
final String label = KeySpecParser.getLabel(moreKeySpec);
// If the label is single letter, minKeyWidth is enough to hold the label.
if (label != null && StringUtils.codePointCount(label) > 1) {
- if (paint == null) {
- paint = new Paint();
- paint.setAntiAlias(true);
- }
- final int width = (int)view.getDefaultLabelWidth(label, paint) + padding;
+ final int width = (int)view.getLabelWidth(label, paint) + padding;
if (maxWidth < width) {
maxWidth = width;
}
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 61d75e278..442413c0c 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -24,10 +24,7 @@ import com.android.inputmethod.latin.JniUtils;
import com.android.inputmethod.latin.spellcheck.SpellCheckerProximityInfo;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
public class ProximityInfo {
public static final int MAX_PROXIMITY_CHARS_SIZE = 16;
@@ -50,8 +47,7 @@ public class ProximityInfo {
ProximityInfo(String localeStr, int gridWidth, int gridHeight, int minWidth, int height,
int mostCommonKeyWidth, int mostCommonKeyHeight, final Key[] keys,
- TouchPositionCorrection touchPositionCorrection,
- Map<Integer, List<Integer>> additionalProximityChars) {
+ TouchPositionCorrection touchPositionCorrection) {
if (TextUtils.isEmpty(localeStr)) {
mLocaleStr = "";
} else {
@@ -72,12 +68,11 @@ public class ProximityInfo {
return;
}
computeNearestNeighbors(
- mostCommonKeyWidth, keys, touchPositionCorrection, additionalProximityChars);
+ mostCommonKeyWidth, keys, touchPositionCorrection);
}
public static ProximityInfo createDummyProximityInfo() {
- return new ProximityInfo("", 1, 1, 1, 1, 1, 1, EMPTY_KEY_ARRAY, null,
- Collections.<Integer, List<Integer>> emptyMap());
+ return new ProximityInfo("", 1, 1, 1, 1, 1, 1, EMPTY_KEY_ARRAY, null);
}
public static ProximityInfo createSpellCheckerProximityInfo(final int[] proximity) {
@@ -184,8 +179,7 @@ public class ProximityInfo {
}
private void computeNearestNeighbors(int defaultWidth, final Key[] keys,
- TouchPositionCorrection touchPositionCorrection,
- Map<Integer, List<Integer>> additionalProximityChars) {
+ TouchPositionCorrection touchPositionCorrection) {
final HashMap<Integer, Key> keyCodeMap = new HashMap<Integer, Key>();
for (final Key key : keys) {
keyCodeMap.put(key.mCode, key);
@@ -207,27 +201,6 @@ public class ProximityInfo {
neighborKeys[count++] = key;
}
}
- int currentCodesSize = count;
- for (int i = 0; i < currentCodesSize; ++i) {
- final int c = neighborKeys[i].mCode;
- final List<Integer> additionalChars = additionalProximityChars.get(c);
- if (additionalChars == null || additionalChars.size() == 0) {
- continue;
- }
- for (int j = 0; j < additionalChars.size(); ++j) {
- final int additionalChar = additionalChars.get(j);
- boolean contains = false;
- for (int k = 0; k < count; ++k) {
- if(additionalChar == neighborKeys[k].mCode) {
- contains = true;
- break;
- }
- }
- if (!contains) {
- neighborKeys[count++] = keyCodeMap.get(additionalChar);
- }
- }
- }
mGridNeighbors[(y / mCellHeight) * mGridWidth + (x / mCellWidth)] =
Arrays.copyOfRange(neighborKeys, 0, count);
}
diff --git a/java/src/com/android/inputmethod/keyboard/SuddenJumpingTouchEventHandler.java b/java/src/com/android/inputmethod/keyboard/SuddenJumpingTouchEventHandler.java
index 62a9259f9..347383f95 100644
--- a/java/src/com/android/inputmethod/keyboard/SuddenJumpingTouchEventHandler.java
+++ b/java/src/com/android/inputmethod/keyboard/SuddenJumpingTouchEventHandler.java
@@ -17,12 +17,12 @@
package com.android.inputmethod.keyboard;
import android.content.Context;
-import android.os.Build;
import android.util.Log;
import android.view.MotionEvent;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.Utils;
public class SuddenJumpingTouchEventHandler {
private static final String TAG = SuddenJumpingTouchEventHandler.class.getSimpleName();
@@ -49,18 +49,8 @@ public class SuddenJumpingTouchEventHandler {
public SuddenJumpingTouchEventHandler(Context context, ProcessMotionEvent view) {
mView = view;
- final String[] deviceList = context.getResources().getStringArray(
- R.array.sudden_jumping_touch_event_device_list);
- mNeedsSuddenJumpingHack = needsSuddenJumpingHack(Build.HARDWARE, deviceList);
- }
-
- private static boolean needsSuddenJumpingHack(String deviceName, String[] deviceList) {
- for (String device : deviceList) {
- if (device.equalsIgnoreCase(deviceName)) {
- return true;
- }
- }
- return false;
+ mNeedsSuddenJumpingHack = Boolean.parseBoolean(Utils.getDeviceOverrideValue(
+ context.getResources(), R.array.sudden_jumping_touch_event_device_list, "false"));
}
public void setKeyboard(Keyboard newKeyboard) {
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 31ff4e7b4..dfc8c8e9d 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -149,6 +149,9 @@ public class BinaryDictionary extends Dictionary {
int count = getBigramsNative(mNativeDict, chars, chars.length, mInputCodes, codesSize,
mOutputChars_bigrams, mBigramScores, MAX_WORD_LENGTH, MAX_BIGRAMS,
MAX_PROXIMITY_CHARS_SIZE);
+ if (count > MAX_BIGRAMS) {
+ count = MAX_BIGRAMS;
+ }
for (int j = 0; j < count; ++j) {
if (codesSize > 0 && mBigramScores[j] < 1) break;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 9ffc7d0a2..8ec440500 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -196,8 +196,8 @@ public class BinaryDictionaryFileDumper {
} finally {
// Ignore exceptions while closing files.
try {
- // afd.close() will close inputStream, we should not call inputStream.close().
- if (null != afd) afd.close();
+ // inputStream.close() will close afd, we should not call afd.close().
+ if (null != inputStream) inputStream.close();
} catch (Exception e) {
Log.e(TAG, "Exception while closing a cross-process file descriptor : " + e);
}
diff --git a/java/src/com/android/inputmethod/latin/DebugSettings.java b/java/src/com/android/inputmethod/latin/DebugSettings.java
index 870b33f9a..23d63b42a 100644
--- a/java/src/com/android/inputmethod/latin/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/DebugSettings.java
@@ -30,7 +30,7 @@ import com.android.inputmethod.keyboard.KeyboardSwitcher;
public class DebugSettings extends PreferenceActivity
implements SharedPreferences.OnSharedPreferenceChangeListener {
- private static final String TAG = "DebugSettings";
+ private static final String TAG = DebugSettings.class.getSimpleName();
private static final String DEBUG_MODE_KEY = "debug_mode";
public static final String FORCE_NON_DISTINCT_MULTITOUCH_KEY = "force_non_distinct_multitouch";
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index f7afed2a5..06c70c42c 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -95,6 +95,7 @@ public class InputAttributes {
}
}
+ @SuppressWarnings("unused")
private void dumpFlags(final int inputType) {
Log.i(TAG, "Input class:");
final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index d5cd35db6..e67f0ea05 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -202,7 +202,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private boolean mShouldSwitchToLastSubtype = true;
private UserDictionary mUserDictionary;
- private UserBigramDictionary mUserBigramDictionary;
+ private UserHistoryDictionary mUserHistoryDictionary;
private boolean mIsUserDictionaryAvailable;
private LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
@@ -526,11 +526,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
resetContactsDictionary(oldContactsDictionary);
- // TODO: rename UserBigramDictionary into UserHistoryDictionary
- mUserBigramDictionary
- = new UserBigramDictionary(this, this, localeStr, Suggest.DIC_USER_BIGRAM);
- mSuggest.setUserUnigramDictionary(mUserBigramDictionary);
- mSuggest.setUserBigramDictionary(mUserBigramDictionary);
+ mUserHistoryDictionary
+ = new UserHistoryDictionary(this, this, localeStr, Suggest.DIC_USER_HISTORY);
+ mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
LocaleUtils.setSystemLocale(res, savedLocale);
}
@@ -772,7 +770,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null) inputView.closing();
- if (mUserBigramDictionary != null) mUserBigramDictionary.flushPendingWrites();
+ if (mUserHistoryDictionary != null) mUserHistoryDictionary.flushPendingWrites();
}
private void onFinishInputViewInternal(boolean finishingInput) {
@@ -1290,7 +1288,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mDeleteCount++;
mExpectingUpdateSelection = true;
mShouldSwitchToLastSubtype = true;
- LatinImeLogger.logOnDelete();
+ LatinImeLogger.logOnDelete(x, y);
break;
case Keyboard.CODE_SHIFT:
case Keyboard.CODE_SWITCH_ALPHA_SYMBOL:
@@ -1990,9 +1988,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
setSuggestionStripShown(isSuggestionsStripVisible());
}
- /**
- * Adds to the UserBigramDictionary and/or UserUnigramDictionary
- */
private void addToUserHistoryDictionary(final CharSequence suggestion) {
if (suggestion == null || suggestion.length() < 1) return;
@@ -2004,16 +1999,16 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
return;
}
- if (mUserBigramDictionary != null) {
- mUserBigramDictionary.addUnigram(suggestion.toString());
+ if (mUserHistoryDictionary != null) {
final InputConnection ic = getCurrentInputConnection();
+ final CharSequence prevWord;
if (null != ic) {
- final CharSequence prevWord =
- EditingUtils.getPreviousWord(ic, mSettingsValues.mWordSeparators);
- if (null != prevWord) {
- mUserBigramDictionary.addBigramPair(prevWord.toString(), suggestion.toString());
- }
+ prevWord = EditingUtils.getPreviousWord(ic, mSettingsValues.mWordSeparators);
+ } else {
+ prevWord = null;
}
+ mUserHistoryDictionary.addToUserHistory(null == prevWord ? null : prevWord.toString(),
+ suggestion.toString());
}
}
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
index 683dafa86..079f3b5dd 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -51,7 +51,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
public static void logOnAutoCorrectionCancelled() {
}
- public static void logOnDelete() {
+ public static void logOnDelete(int x, int y) {
}
public static void logOnInputChar() {
diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java
index 020b57caf..c1335fdfe 100644
--- a/java/src/com/android/inputmethod/latin/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/SettingsValues.java
@@ -19,11 +19,9 @@ package com.android.inputmethod.latin;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
-import android.os.Build;
import android.util.Log;
import android.view.inputmethod.EditorInfo;
-import com.android.inputmethod.compat.InputMethodInfoCompatWrapper;
import com.android.inputmethod.compat.InputTypeCompatUtils;
import com.android.inputmethod.compat.VibratorCompatWrapper;
import com.android.inputmethod.keyboard.internal.KeySpecParser;
@@ -323,14 +321,8 @@ public class SettingsValues {
return volume;
}
- final String[] volumePerHardwareList = res.getStringArray(R.array.keypress_volumes);
- final String hardwarePrefix = Build.HARDWARE + ",";
- for (final String element : volumePerHardwareList) {
- if (element.startsWith(hardwarePrefix)) {
- return Float.parseFloat(element.substring(element.lastIndexOf(',') + 1));
- }
- }
- return -1.0f;
+ return Float.parseFloat(
+ Utils.getDeviceOverrideValue(res, R.array.keypress_volumes, "-1.0f"));
}
// Likewise
@@ -341,15 +333,9 @@ public class SettingsValues {
if (ms >= 0) {
return ms;
}
- final String[] durationPerHardwareList = res.getStringArray(
- R.array.keypress_vibration_durations);
- final String hardwarePrefix = Build.HARDWARE + ",";
- for (final String element : durationPerHardwareList) {
- if (element.startsWith(hardwarePrefix)) {
- return (int)Long.parseLong(element.substring(element.lastIndexOf(',') + 1));
- }
- }
- return -1;
+
+ return Integer.parseInt(
+ Utils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations, "-1"));
}
// Likewise
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 08f0e425b..9ae2506f4 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -62,9 +62,8 @@ public class Suggest implements Dictionary.WordCallback {
public static final int DIC_USER_TYPED = 0;
public static final int DIC_MAIN = 1;
public static final int DIC_USER = 2;
- public static final int DIC_USER_UNIGRAM = 3;
+ public static final int DIC_USER_HISTORY = 3;
public static final int DIC_CONTACTS = 4;
- public static final int DIC_USER_BIGRAM = 5;
public static final int DIC_WHITELIST = 6;
// If you add a type of dictionary, increment DIC_TYPE_LAST_ID
// TODO: this value seems unused. Remove it?
@@ -73,10 +72,10 @@ public class Suggest implements Dictionary.WordCallback {
public static final String DICT_KEY_CONTACTS = "contacts";
// User dictionary, the system-managed one.
public static final String DICT_KEY_USER = "user";
- // User unigram dictionary, internal to LatinIME
- public static final String DICT_KEY_USER_UNIGRAM = "user_unigram";
- // User bigram dictionary, internal to LatinIME
- public static final String DICT_KEY_USER_BIGRAM = "user_bigram";
+ // User history dictionary for the unigram map, internal to LatinIME
+ public static final String DICT_KEY_USER_HISTORY_UNIGRAM = "history_unigram";
+ // User history dictionary for the bigram map, internal to LatinIME
+ public static final String DICT_KEY_USER_HISTORY_BIGRAM = "history_bigram";
public static final String DICT_KEY_WHITELIST ="whitelist";
private static final boolean DBG = LatinImeLogger.sDBG;
@@ -203,12 +202,11 @@ public class Suggest implements Dictionary.WordCallback {
addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary);
}
- public void setUserUnigramDictionary(Dictionary userUnigramDictionary) {
- addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_USER_UNIGRAM, userUnigramDictionary);
- }
-
- public void setUserBigramDictionary(Dictionary userBigramDictionary) {
- addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_USER_BIGRAM, userBigramDictionary);
+ public void setUserHistoryDictionary(Dictionary userHistoryDictionary) {
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_USER_HISTORY_UNIGRAM,
+ userHistoryDictionary);
+ addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_USER_HISTORY_BIGRAM,
+ userHistoryDictionary);
}
public void setAutoCorrectionThreshold(double threshold) {
@@ -347,7 +345,7 @@ public class Suggest implements Dictionary.WordCallback {
// At second character typed, search the unigrams (scores being affected by bigrams)
for (final String key : mUnigramDictionaries.keySet()) {
// Skip UserUnigramDictionary and WhitelistDictionary to lookup
- if (key.equals(DICT_KEY_USER_UNIGRAM) || key.equals(DICT_KEY_WHITELIST))
+ if (key.equals(DICT_KEY_USER_HISTORY_UNIGRAM) || key.equals(DICT_KEY_WHITELIST))
continue;
final Dictionary dictionary = mUnigramDictionaries.get(key);
dictionary.getWords(wordComposerForLookup, this, proximityInfo);
diff --git a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
index 91f84bed1..4e798460c 100644
--- a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java
@@ -24,7 +24,6 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.os.AsyncTask;
import android.provider.BaseColumns;
-import android.text.TextUtils;
import android.util.Log;
import java.util.HashMap;
@@ -32,12 +31,11 @@ import java.util.HashSet;
import java.util.Iterator;
/**
- * Stores all the pairs user types in databases. Prune the database if the size
- * gets too big. Unlike AutoDictionary, it even stores the pairs that are already
- * in the dictionary.
+ * Locally gathers stats about the words user types and various other signals like auto-correction
+ * cancellation or manual picks. This allows the keyboard to adapt to the typist over time.
*/
-public class UserBigramDictionary extends ExpandableDictionary {
- private static final String TAG = "UserBigramDictionary";
+public class UserHistoryDictionary extends ExpandableDictionary {
+ private static final String TAG = "UserHistoryDictionary";
/** Any pair being typed or picked */
private static final int FREQUENCY_FOR_TYPED = 2;
@@ -46,14 +44,14 @@ public class UserBigramDictionary extends ExpandableDictionary {
private static final int FREQUENCY_MAX = 127;
/** Maximum number of pairs. Pruning will start when databases goes above this number. */
- private static int sMaxUserBigrams = 10000;
+ private static int sMaxHistoryBigrams = 10000;
/**
* When it hits maximum bigram pair, it will delete until you are left with
- * only (sMaxUserBigrams - sDeleteUserBigrams) pairs.
+ * only (sMaxHistoryBigrams - sDeleteHistoryBigrams) pairs.
* Do not keep this number small to avoid deleting too often.
*/
- private static int sDeleteUserBigrams = 1000;
+ private static int sDeleteHistoryBigrams = 1000;
/**
* Database version should increase if the database structure changes
@@ -65,7 +63,7 @@ public class UserBigramDictionary extends ExpandableDictionary {
/** Name of the words table in the database */
private static final String MAIN_TABLE_NAME = "main";
// TODO: Consume less space by using a unique id for locale instead of the whole
- // 2-5 character string. (Same TODO from AutoDictionary)
+ // 2-5 character string.
private static final String MAIN_COLUMN_ID = BaseColumns._ID;
private static final String MAIN_COLUMN_WORD1 = "word1";
private static final String MAIN_COLUMN_WORD2 = "word2";
@@ -133,15 +131,15 @@ public class UserBigramDictionary extends ExpandableDictionary {
}
}
- public void setDatabaseMax(int maxUserBigram) {
- sMaxUserBigrams = maxUserBigram;
+ public void setDatabaseMax(int maxHistoryBigram) {
+ sMaxHistoryBigrams = maxHistoryBigram;
}
- public void setDatabaseDelete(int deleteUserBigram) {
- sDeleteUserBigrams = deleteUserBigram;
+ public void setDatabaseDelete(int deleteHistoryBigram) {
+ sDeleteHistoryBigrams = deleteHistoryBigram;
}
- public UserBigramDictionary(Context context, LatinIME ime, String locale, int dicTypeId) {
+ public UserHistoryDictionary(Context context, LatinIME ime, String locale, int dicTypeId) {
super(context, dicTypeId);
mIme = ime;
mLocale = locale;
@@ -173,16 +171,6 @@ public class UserBigramDictionary extends ExpandableDictionary {
}
/**
- * Add a single word without context.
- *
- * This is a temporary method to match the interface to UserUnigramDictionary. In the end
- * this should be merged with addBigramPair.
- */
- public void addUnigram(final String newWord) {
- addBigramPair(null, newWord);
- }
-
- /**
* Pair will be added to the user history dictionary.
*
* The first word may be null. That means we don't know the context, in other words,
@@ -190,11 +178,12 @@ public class UserBigramDictionary extends ExpandableDictionary {
* context, as in beginning of a sentence for example.
* The second word may not be null (a NullPointerException would be thrown).
*/
- public int addBigramPair(final String word1, String word2) {
+ public int addToUserHistory(final String word1, String word2) {
// remove caps if second word is autocapitalized
if (mIme != null && mIme.isAutoCapitalized()) {
word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1);
}
+ super.addWord(word2, FREQUENCY_FOR_TYPED);
// Do not insert a word as a bigram of itself
if (word2.equals(word1)) {
return 0;
@@ -203,7 +192,6 @@ public class UserBigramDictionary extends ExpandableDictionary {
int freq;
if (null == word1) {
freq = FREQUENCY_FOR_TYPED;
- super.addWord(word2, FREQUENCY_FOR_TYPED);
} else {
freq = super.addBigram(word1, word2, FREQUENCY_FOR_TYPED);
}
@@ -366,8 +354,8 @@ public class UserBigramDictionary extends ExpandableDictionary {
try {
int totalRowCount = c.getCount();
// prune out old data if we have too much data
- if (totalRowCount > sMaxUserBigrams) {
- int numDeleteRows = (totalRowCount - sMaxUserBigrams) + sDeleteUserBigrams;
+ if (totalRowCount > sMaxHistoryBigrams) {
+ int numDeleteRows = (totalRowCount - sMaxHistoryBigrams) + sDeleteHistoryBigrams;
int pairIdColumnId = c.getColumnIndex(FREQ_COLUMN_PAIR_ID);
c.moveToFirst();
int count = 0;
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index a7de47c58..e2ce08323 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -19,9 +19,11 @@ package com.android.inputmethod.latin;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.inputmethodservice.InputMethodService;
import android.net.Uri;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
@@ -43,6 +45,7 @@ import java.io.PrintWriter;
import java.nio.channels.FileChannel;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
public class Utils {
private Utils() {
@@ -260,8 +263,25 @@ public class Utils {
}
}
- public static void writeBackSpace() {
- UsabilityStudyLogUtils.getInstance().write("<backspace>\t0\t0");
+ /**
+ * Represents a category of logging events that share the same subfield structure.
+ */
+ public static enum LogGroup {
+ MOTION_EVENT("m"),
+ KEY("k"),
+ CORRECTION("c"),
+ STATE_CHANGE("s");
+
+ private final String mLogString;
+
+ private LogGroup(String logString) {
+ mLogString = logString;
+ }
+ }
+
+ public static void writeBackSpace(int x, int y) {
+ UsabilityStudyLogUtils.getInstance().write(
+ LogGroup.KEY, "<backspace>\t" + x + "\t" + y);
}
public void writeChar(char c, int x, int y) {
@@ -277,11 +297,12 @@ public class Utils {
inputChar = "<space>";
break;
}
- UsabilityStudyLogUtils.getInstance().write(inputChar + "\t" + x + "\t" + y);
+ UsabilityStudyLogUtils.getInstance().write(LogGroup.KEY,
+ inputChar + "\t" + x + "\t" + y);
LatinImeLogger.onPrintAllUsabilityStudyLogs();
}
- public void write(final String log) {
+ public void write(final LogGroup logGroup, final String log) {
mLoggingHandler.post(new Runnable() {
@Override
public void run() {
@@ -289,8 +310,8 @@ public class Utils {
final long currentTime = System.currentTimeMillis();
mDate.setTime(currentTime);
- final String printString = String.format("%s\t%d\t%s\n",
- mDateFormat.format(mDate), currentTime, log);
+ final String printString = String.format("%s\t%d\t%s\t%s\n",
+ mDateFormat.format(mDate), currentTime, logGroup.mLogString, log);
if (LatinImeLogger.sDBG) {
Log.d(USABILITY_TAG, "Write: " + log);
}
@@ -465,4 +486,23 @@ public class Utils {
if (TextUtils.isEmpty(info)) return null;
return info;
}
+
+ private static final String HARDWARE_PREFIX = Build.HARDWARE + ",";
+ private static final HashMap<Integer, String> sDeviceOverrideValueMap =
+ new HashMap<Integer, String>();
+
+ public static String getDeviceOverrideValue(Resources res, int overrideResId, String defValue) {
+ final Integer key = overrideResId;
+ if (!sDeviceOverrideValueMap.containsKey(key)) {
+ String overrideValue = defValue;
+ for (final String element : res.getStringArray(overrideResId)) {
+ if (element.startsWith(HARDWARE_PREFIX)) {
+ overrideValue = element.substring(HARDWARE_PREFIX.length());
+ break;
+ }
+ }
+ sDeviceOverrideValueMap.put(key, overrideValue);
+ }
+ return sDeviceOverrideValueMap.get(key);
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 251063ec4..9f23f174f 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -141,6 +141,7 @@ public class WordComposer {
keyY = y;
} else {
final Key key = keyDetector.detectHitKey(x, y);
+ // TODO: Pass an integer instead of an integer array
codes = new int[] { key != null ? key.mCode : NOT_A_CODE };
keyX = keyDetector.getTouchX(x);
keyY = keyDetector.getTouchY(y);
@@ -202,9 +203,8 @@ public class WordComposer {
if (key.mCode == codePoint) {
final int x = key.mX + key.mWidth / 2;
final int y = key.mY + key.mHeight / 2;
- final int[] codes = keyDetector.newCodeArray();
- keyDetector.getNearbyCodes(x, y, codes);
- add(codePoint, codes, x, y);
+ // TODO: Pass an integer instead of an integer array
+ add(codePoint, new int[] { key.mCode }, x, y);
return;
}
}
@@ -216,7 +216,7 @@ public class WordComposer {
* Set the currently composing word to the one passed as an argument.
* This will register NOT_A_COORDINATE for X and Ys, and use the passed keyboard for proximity.
*/
- public void setComposingWord(final CharSequence word, final Keyboard keyboard,
+ private void setComposingWord(final CharSequence word, final Keyboard keyboard,
final KeyDetector keyDetector) {
reset();
final int length = word.length();
@@ -233,7 +233,6 @@ public class WordComposer {
final KeyDetector keyDetector = new KeyDetector(0);
keyDetector.setKeyboard(keyboard, 0, 0);
keyDetector.setProximityCorrectionEnabled(true);
- keyDetector.setProximityThreshold(keyboard.mMostCommonKeyWidth);
setComposingWord(word, keyboard, keyDetector);
}
diff --git a/tools/makedict/src/com/android/inputmethod/latin/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
index 485dba10b..42dd4df34 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/BinaryDictInputOutput.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java
@@ -14,11 +14,11 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
-import com.android.inputmethod.latin.FusionDictionary.CharGroup;
-import com.android.inputmethod.latin.FusionDictionary.Node;
-import com.android.inputmethod.latin.FusionDictionary.WeightedString;
+import com.android.inputmethod.latin.makedict.FusionDictionary.CharGroup;
+import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
+import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import java.io.FileNotFoundException;
import java.io.IOException;
diff --git a/tools/makedict/src/com/android/inputmethod/latin/CharGroupInfo.java b/java/src/com/android/inputmethod/latin/makedict/CharGroupInfo.java
index 759cd452d..444b11732 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/CharGroupInfo.java
+++ b/java/src/com/android/inputmethod/latin/makedict/CharGroupInfo.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
import java.util.ArrayList;
diff --git a/tools/makedict/src/com/android/inputmethod/latin/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
index 08143d3ea..d19672181 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/FusionDictionary.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/tools/makedict/src/com/android/inputmethod/latin/MakedictLog.java b/java/src/com/android/inputmethod/latin/makedict/MakedictLog.java
index badb2ff3d..cff8d6fd0 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/MakedictLog.java
+++ b/java/src/com/android/inputmethod/latin/makedict/MakedictLog.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
/**
* Wrapper to redirect log events to the right output medium.
diff --git a/tools/makedict/src/com/android/inputmethod/latin/PendingAttribute.java b/java/src/com/android/inputmethod/latin/makedict/PendingAttribute.java
index cf66eef4b..5b41d27f2 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/PendingAttribute.java
+++ b/java/src/com/android/inputmethod/latin/makedict/PendingAttribute.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
/**
* A not-yet-resolved attribute.
diff --git a/tools/makedict/src/com/android/inputmethod/latin/UnsupportedFormatException.java b/java/src/com/android/inputmethod/latin/makedict/UnsupportedFormatException.java
index 511ad5675..bd42fb8fa 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/UnsupportedFormatException.java
+++ b/java/src/com/android/inputmethod/latin/makedict/UnsupportedFormatException.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
/**
* Simple exception thrown when a file format is not recognized.
diff --git a/tools/makedict/src/com/android/inputmethod/latin/Word.java b/java/src/com/android/inputmethod/latin/makedict/Word.java
index cf6116f91..c2c01e1f8 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/Word.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Word.java
@@ -14,9 +14,9 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
-import com.android.inputmethod.latin.FusionDictionary.WeightedString;
+import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import java.util.ArrayList;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
index c9c88fd23..dd83a0c4e 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
@@ -23,9 +23,7 @@ import android.graphics.drawable.Drawable;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
-import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.Utils;
@@ -38,8 +36,6 @@ public class MoreSuggestions extends Keyboard {
}
public static class Builder extends Keyboard.Builder<Builder.MoreSuggestionsParam> {
- private static final boolean DBG = LatinImeLogger.sDBG;
-
private final MoreSuggestionsView mPaneView;
private SuggestedWords mSuggestions;
private int mFromPos;
@@ -56,10 +52,8 @@ public class MoreSuggestions extends Keyboard {
public int mDividerWidth;
public int layout(SuggestedWords suggestions, int fromPos, int maxWidth, int minWidth,
- int maxRow, KeyboardView view) {
+ int maxRow, MoreSuggestionsView view) {
clearKeys();
- final Paint paint = new Paint();
- paint.setAntiAlias(true);
final Resources res = view.getContext().getResources();
mDivider = res.getDrawable(R.drawable.more_suggestions_divider);
// TODO: Drawable itself should have an alpha value.
@@ -67,6 +61,7 @@ public class MoreSuggestions extends Keyboard {
mDividerWidth = mDivider.getIntrinsicWidth();
final int padding = (int) res.getDimension(
R.dimen.more_suggestions_key_horizontal_padding);
+ final Paint paint = view.newDefaultLabelPaint();
int row = 0;
int pos = fromPos, rowStartPos = fromPos;
@@ -74,7 +69,7 @@ public class MoreSuggestions extends Keyboard {
while (pos < size) {
final String word = suggestions.getWord(pos).toString();
// TODO: Should take care of text x-scaling.
- mWidths[pos] = (int)view.getDefaultLabelWidth(word, paint) + padding;
+ mWidths[pos] = (int)view.getLabelWidth(word, paint) + padding;
final int numColumn = pos - rowStartPos + 1;
final int columnWidth =
(maxWidth - mDividerWidth * (numColumn - 1)) / numColumn;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index f11b1a4c1..e64e7a685 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -43,17 +43,17 @@ import com.android.inputmethod.latin.R;
public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
private final int[] mCoordinates = new int[2];
- private final KeyDetector mModalPanelKeyDetector;
+ final KeyDetector mModalPanelKeyDetector;
private final KeyDetector mSlidingPanelKeyDetector;
private Controller mController;
- private KeyboardActionListener mListener;
+ KeyboardActionListener mListener;
private int mOriginX;
private int mOriginY;
- private static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter();
+ static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter();
- private final KeyboardActionListener mSuggestionsPaneListener =
+ final KeyboardActionListener mSuggestionsPaneListener =
new KeyboardActionListener.Adapter() {
@Override
public void onPressKey(int primaryCode) {
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
index 286bf0aea..06fda44fa 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
@@ -62,7 +62,6 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
import com.android.inputmethod.latin.Suggest;
import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.Utils;
import java.util.ArrayList;
diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index 84048d77d..fa69de854 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -137,9 +137,10 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i
// codesSize == 0 means we are trying to find bigram predictions.
if (codesSize < 1 || checkFirstCharacter(bigramBuffer)) {
const int frequency = UnigramDictionary::MASK_ATTRIBUTE_FREQUENCY & bigramFlags;
- addWordBigram(bigramBuffer, length, frequency);
+ if (addWordBigram(bigramBuffer, length, frequency)) {
+ ++bigramCount;
+ }
}
- ++bigramCount;
} while (0 != (UnigramDictionary::FLAG_ATTRIBUTE_HAS_NEXT & bigramFlags));
return bigramCount;
}
diff --git a/tools/makedict/Android.mk b/tools/makedict/Android.mk
index 6832b1cb6..facbbf7b8 100644
--- a/tools/makedict/Android.mk
+++ b/tools/makedict/Android.mk
@@ -13,15 +13,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-LOCAL_SRC_FILES += $(call all-java-files-under,tests)
-LOCAL_JAR_MANIFEST := etc/manifest.txt
-LOCAL_MODULE_TAGS := eng
-LOCAL_MODULE := makedict
-LOCAL_JAVA_LIBRARIES := junit
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-include $(LOCAL_PATH)/etc/Android.mk
+#LOCAL_PATH := $(call my-dir)
+#include $(CLEAR_VARS)
+#
+#LOCAL_SRC_FILES := $(call all-java-files-under,src)
+#LOCAL_SRC_FILES += $(call all-java-files-under,tests)
+#LOCAL_JAR_MANIFEST := etc/manifest.txt
+#LOCAL_MODULE_TAGS := eng
+#LOCAL_MODULE := makedict
+#LOCAL_JAVA_LIBRARIES := junit
+#
+#include $(BUILD_HOST_JAVA_LIBRARY)
+#include $(LOCAL_PATH)/etc/Android.mk
diff --git a/tools/makedict/etc/manifest.txt b/tools/makedict/etc/manifest.txt
index 948609da6..4f085e7c8 100644
--- a/tools/makedict/etc/manifest.txt
+++ b/tools/makedict/etc/manifest.txt
@@ -1 +1 @@
-Main-Class: com.android.inputmethod.latin.DictionaryMaker
+Main-Class: com.android.inputmethod.latin.makedict.DictionaryMaker
diff --git a/tools/makedict/src/com/android/inputmethod/latin/DictionaryMaker.java b/tools/makedict/src/com/android/inputmethod/latin/makedict/DictionaryMaker.java
index fbfa424a0..5e3921573 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/DictionaryMaker.java
+++ b/tools/makedict/src/com/android/inputmethod/latin/makedict/DictionaryMaker.java
@@ -14,7 +14,7 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
import java.io.File;
import java.io.FileInputStream;
diff --git a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java b/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java
index 77c536668..483473b3c 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java
+++ b/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java
@@ -14,9 +14,9 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
-import com.android.inputmethod.latin.FusionDictionary.WeightedString;
+import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import java.io.IOException;
import java.io.InputStream;
diff --git a/tools/makedict/tests/com/android/inputmethod/latin/BinaryDictInputOutputTest.java b/tools/makedict/tests/com/android/inputmethod/latin/BinaryDictInputOutputTest.java
index 6ac046bbf..9682c9b4e 100644
--- a/tools/makedict/tests/com/android/inputmethod/latin/BinaryDictInputOutputTest.java
+++ b/tools/makedict/tests/com/android/inputmethod/latin/BinaryDictInputOutputTest.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.latin.makedict;
-import com.android.inputmethod.latin.FusionDictionary.Node;
+import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
import java.util.ArrayList;