Skip to content

Commit

Permalink
[WIP] Integrate LatinIME code
Browse files Browse the repository at this point in the history
  • Loading branch information
KentVu committed Jun 24, 2020
1 parent e71d1b0 commit 9546c79
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,26 @@ import android.content.Intent
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import android.text.InputType
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodInfo
import android.view.inputmethod.InputMethodManager
import android.view.inputmethod.InputMethodSubtype
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.android.inputmethod.accessibility.AccessibilityUtils
import com.android.inputmethod.keyboard.KeyboardId
import com.android.inputmethod.keyboard.KeyboardLayoutSet
import com.android.inputmethod.keyboard.MainKeyboardView
import com.android.inputmethod.keyboard.internal.KeyboardBuilder
import com.android.inputmethod.keyboard.internal.KeyboardParams
import com.android.inputmethod.latin.InputView
import com.android.inputmethod.latin.RichInputMethodManager
import com.android.inputmethod.latin.RichInputMethodSubtype
import com.android.inputmethod.latin.utils.ResourceUtils
import com.vutrankien.t9vietnamese.lib.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand All @@ -41,6 +47,8 @@ class MainActivity : Activity(), MVPView {
companion object {
private const val WAKELOCK_TIMEOUT = 60000L
}
private lateinit var subtype: InputMethodSubtype

override val scope = CoroutineScope(Dispatchers.Main + Job())

override val eventSource: Channel<EventWithData<Event, Key>> =
Expand Down Expand Up @@ -76,13 +84,33 @@ class MainActivity : Activity(), MVPView {
(application as T9Application).appComponent.inject(this)
log = logFactory.newLog("MainActivity")
setContentView(R.layout.main)
AccessibilityUtils.init(this)
val inputView = findViewById<InputView>(R.id.dialpad)
val kbView =
inputView.findViewById(com.android.inputmethod.latin.R.id.keyboard_view) as MainKeyboardView
val builder = KeyboardBuilder(this, KeyboardParams())
builder.load(R.xml.t9, KeyboardId(KeyboardId.ELEMENT_PHONE, KeyboardLayoutSet.Params()/*.also { mKeyboardWith = .... }*/))
val keyboard = builder.build()
kbView.setKeyboard(keyboard)
val editorInfo = EditorInfo()
editorInfo.inputType = InputType.TYPE_CLASS_TEXT
val builder = KeyboardLayoutSet.Builder(this, editorInfo)
val res = resources
val keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res)
val keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res)
builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)
RichInputMethodManager.init(this)
val mRichImm = RichInputMethodManager.getInstance()
val imi: InputMethodInfo = mRichImm.getInputMethodInfoOfThisIme()
val subtypeCount = imi.subtypeCount
for (index in 0 until subtypeCount) {
//mAllSubtypesList.add(imi.getSubtypeAt(index))
if (imi.getSubtypeAt(index) != null) {
subtype = imi.getSubtypeAt(index)!!
break
}
}
builder.setSubtype(RichInputMethodSubtype.getRichInputMethodSubtype(subtype))
builder.setIsSpellChecker(true /* isSpellChecker */)
builder.disableTouchPositionCorrectionData()
val keyboardLayoutSet = builder.build()
kbView.setKeyboard(keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET))
kbView.setKeyboardActionListener(
KeyboardActionListener(
logFactory,
Expand Down
12 changes: 8 additions & 4 deletions app/src/main/res/layout/input.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<com.android.inputmethod.latin.InputView
xmlns:android="http://schemas.android.com/apk/res/android"
<com.android.inputmethod.latin.InputView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_alignParentBottom="true"
style="?attr/inputViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
android:layout_alignParentBottom="true">

<include
android:id="@+id/main_keyboard_frame"
layout="@layout/main_keyboard_frame" />
</com.android.inputmethod.latin.InputView>

2 changes: 1 addition & 1 deletion app/src/main/res/layout/main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/test_hint"
app:layout_constraintBottom_toTopOf="@+id/dialpad"
app:layout_constraintBottom_toTopOf="@id/dialpad"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public class ProximityInfo {
return;
}
computeNearestNeighbors();
mNativeProximityInfo = createNativeProximityInfo(touchPositionCorrection);
//mNativeProximityInfo = createNativeProximityInfo(touchPositionCorrection);
}

private long mNativeProximityInfo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,8 +481,8 @@ protected void onDetachedFromWindow() {
protected void onSizeChanged(final int w, final int h, final int oldw, final int oldh) {
// Called by the framework when the size is known. Show the important notice if applicable.
// This may be overriden by showing suggestions later, if applicable.
if (oldw <= 0 && w > 0) {
maybeShowImportantNoticeTitle();
}
// if (oldw <= 0 && w > 0) {
// maybeShowImportantNoticeTitle();
// }
}
}

0 comments on commit 9546c79

Please sign in to comment.