diff --git a/leankeykeyboard/build.gradle b/leankeykeyboard/build.gradle index 4a2e85c..975d4f9 100644 --- a/leankeykeyboard/build.gradle +++ b/leankeykeyboard/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.liskovsoft.leankeykeyboard.pro" minSdkVersion project.properties.minSdkVersion targetSdkVersion project.properties.targetSdkVersion - versionCode 56 - versionName "4.3.6" + versionCode 57 + versionName "4.3.7" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java b/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java index c84e4cf..d3625a3 100644 --- a/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java +++ b/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java @@ -49,6 +49,7 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi private PointF mTempPoint; private LeanbackKeyboardController.TouchEventListener mTouchEventListener; private long prevTime; + private boolean mShowInput; public LeanbackKeyboardController(final InputMethodService context, final LeanbackKeyboardController.InputListener listener) { this(context, listener, new TouchNavSpaceTracker(), new LeanbackKeyboardContainer(context)); @@ -681,23 +682,37 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi } } - public void onStartInput(EditorInfo var1) { - if (this.mContainer != null) { - this.mContainer.onStartInput(var1); - this.initInputView(); + public void onStartInput(EditorInfo info) { + if (mContainer != null) { + mContainer.onStartInput(info); + initInputView(); } + // prevent accidental kbd pop-up on FireTV devices + // more info: https://forum.xda-developers.com/fire-tv/general/guide-change-screen-keyboard-to-leankey-t3527675/page2 + int maskAction = info.imeOptions & EditorInfo.IME_MASK_ACTION; + mShowInput = maskAction != 0; + } + + public boolean showInputView() { + return mShowInput; + } + + private void onHideIme() { + mContext.requestHideSelf(InputMethodService.BACK_DISPOSITION_DEFAULT); } public void onStartInputView() { - this.mKeyDownReceived = false; - if (this.mContainer != null) { - this.mContainer.onStartInputView(); + mKeyDownReceived = false; + + if (mContainer != null) { + mContainer.onStartInputView(); } - this.mDoubleClickDetector.reset(); + mDoubleClickDetector.reset(); } + @Override public boolean onTouch(View view, MotionEvent event) { Object tag = view.getTag(); if (tag != null && "Go".equals(tag)) { diff --git a/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java b/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java index 8e07d04..c08bce5 100644 --- a/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java +++ b/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java @@ -224,15 +224,19 @@ public class LeanbackImeService extends InputMethodService { return false; } + /** + * At this point, decision whether to show kbd taking place + * @return whether to show kbd + */ @SuppressLint("MissingSuperCall") @Override public boolean onEvaluateInputViewShown() { - return true; + return mKeyboardController.showInputView(); } @Override - public void onFinishInputView(boolean var1) { - super.onFinishInputView(var1); + public void onFinishInputView(boolean finishingInput) { + super.onFinishInputView(finishingInput); this.sendBroadcast(new Intent(IME_CLOSE)); this.mSuggestionsFactory.clearSuggestions(); } @@ -246,7 +250,7 @@ public class LeanbackImeService extends InputMethodService { } public void onHideIme() { - this.requestHideSelf(0); + requestHideSelf(InputMethodService.BACK_DISPOSITION_DEFAULT); } @Override @@ -298,6 +302,14 @@ public class LeanbackImeService extends InputMethodService { @Override public void onStartInputView(EditorInfo info, boolean restarting) { super.onStartInputView(info, restarting); + + // FireTV: fix accidental kbd pop-ups + // more info: https://forum.xda-developers.com/fire-tv/general/guide-change-screen-keyboard-to-leankey-t3527675/page2 + //if (!mKeyboardController.showInputView()) { + // onHideIme(); + // return; + //} + mKeyboardController.onStartInputView(); sendBroadcast(new Intent(IME_OPEN)); if (mKeyboardController.areSuggestionsEnabled()) {