From a84e2f4e010dd7699e298d6db3704a9468dbd567 Mon Sep 17 00:00:00 2001 From: CaiFeng <2397707574@qq.com> Date: Mon, 4 Mar 2024 20:00:32 +0800 Subject: [PATCH 1/3] fix input --- .../cloudphone/apiimpl/CloudPhoneImeMgr.java | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java index 23ea88c..3ba6c03 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java @@ -10,6 +10,7 @@ import android.text.InputFilter; import android.text.TextWatcher; import android.util.TypedValue; import android.view.Gravity; +import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -39,7 +40,6 @@ public class CloudPhoneImeMgr { private static final int IME_PASTE_FROM_CLOUD = 6; private static final int IME_PASTE_TO_CLOUD = 7; private static final int IME_MSG_HEADER_LEN = 3; - private static final String IME_CURSOR_SEPARATOR = "="; private ViewGroup mRootViewGroup; private ViewGroup mImeViewGroup; @@ -48,8 +48,6 @@ public class CloudPhoneImeMgr { private PopupWindow mPopWindow; private CloudPhoneTextWatchListener mTextWatchListener; private CloudPhoneClipboardListener mClipboardListener; - private int mCurrentCursor; - private boolean mCursorInEnd; @SuppressLint("Range") public CloudPhoneImeMgr(Context context, ViewGroup viewGroup) { @@ -80,13 +78,9 @@ public class CloudPhoneImeMgr { @Override public void onTextChanged(CharSequence charSequence, int start, int before, int count) { - String text = ""; - int cursorPosition = mImeEditText.getSelectionStart(); - if (!mCursorInEnd|| (mCurrentCursor == before && mCurrentCursor == count)) { - text = charSequence.toString() + IME_CURSOR_SEPARATOR + mCurrentCursor; - mCursorInEnd = true; - } else { - text = charSequence.toString() + IME_CURSOR_SEPARATOR + cursorPosition; + String text = charSequence.toString(); + if (text.isEmpty()) { + return; } byte[] data = text.getBytes(); byte[] msg = new byte[IME_MSG_HEADER_LEN + data.length]; @@ -98,6 +92,7 @@ public class CloudPhoneImeMgr { if (mTextWatchListener != null) { mTextWatchListener.onTextChange(msg); } + mImeEditText.getText().clear(); } @Override @@ -106,6 +101,26 @@ public class CloudPhoneImeMgr { } }); + mImeEditText.setOnKeyListener(new View.OnKeyListener() { + @Override + public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { + if (keyCode == KeyEvent.KEYCODE_DEL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) { + byte[] msg = new byte[IME_MSG_HEADER_LEN + 2]; + msg[0] = IME_KEY_EVENT; + msg[1] = (byte) ((2 >> 8) & 0xFF); + msg[2] = (byte) (2 & 0XFF); + msg[3] = (byte) ((KeyEvent.KEYCODE_DEL >> 8) & 0xFF); + msg[4] = (byte) (KeyEvent.KEYCODE_DEL & 0XFF); + + if (mTextWatchListener != null) { + mTextWatchListener.onTextChange(msg); + } + return true; + } + return false; + } + }); + mPopWindow = new PopupWindow(mImeViewGroup, WindowManager.LayoutParams.MATCH_PARENT, dip2px(BOX_INPUT_HEIGHT), true); mPopWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); mPopWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); @@ -117,17 +132,11 @@ public class CloudPhoneImeMgr { if (mPopWindow.isShowing()) { return 0; } - if (text != null && text.length() > 0) { - int lastIndex = text.lastIndexOf(IME_CURSOR_SEPARATOR); - String content = text.substring(0 ,lastIndex); - int cursor = Integer.parseInt(text.substring(lastIndex + 1)); - mCurrentCursor = cursor; - mCursorInEnd = cursor == content.length() ? true : false; - mImeEditText.getText().replace(0, mImeEditText.length(), content); - mImeEditText.setSelection(cursor); - } else { - mImeEditText.getText().clear(); + if (text != null) { + CASLog.e(TAG, "text is not null"); + return 0; } + mImeEditText.getText().clear(); mPopWindow.setFocusable(true); mImeEditText.requestFocus(); mPopWindow.showAtLocation(mRootViewGroup, Gravity.BOTTOM, 0, 0); -- Gitee From ea93d4c5bbcebcc59547d5a39b15ac4e6d4b8b8e Mon Sep 17 00:00:00 2001 From: CaiFeng <2397707574@qq.com> Date: Mon, 4 Mar 2024 20:06:59 +0800 Subject: [PATCH 2/3] fix input --- .../com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java index 3ba6c03..5c904c6 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java @@ -40,6 +40,7 @@ public class CloudPhoneImeMgr { private static final int IME_PASTE_FROM_CLOUD = 6; private static final int IME_PASTE_TO_CLOUD = 7; private static final int IME_MSG_HEADER_LEN = 3; + private static final int IME_KEY_EVENT_LEN = 2; private ViewGroup mRootViewGroup; private ViewGroup mImeViewGroup; @@ -105,10 +106,10 @@ public class CloudPhoneImeMgr { @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { if (keyCode == KeyEvent.KEYCODE_DEL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) { - byte[] msg = new byte[IME_MSG_HEADER_LEN + 2]; + byte[] msg = new byte[IME_MSG_HEADER_LEN + IME_KEY_EVENT_LEN]; msg[0] = IME_KEY_EVENT; - msg[1] = (byte) ((2 >> 8) & 0xFF); - msg[2] = (byte) (2 & 0XFF); + msg[1] = (byte) ((IME_KEY_EVENT_LEN >> 8) & 0xFF); + msg[2] = (byte) (IME_KEY_EVENT_LEN & 0XFF); msg[3] = (byte) ((KeyEvent.KEYCODE_DEL >> 8) & 0xFF); msg[4] = (byte) (KeyEvent.KEYCODE_DEL & 0XFF); -- Gitee From 979366b9f8aa695f36937de78b169bf06807e6c0 Mon Sep 17 00:00:00 2001 From: CaiFeng <2397707574@qq.com> Date: Tue, 5 Mar 2024 22:41:10 +0800 Subject: [PATCH 3/3] fix input --- .../java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java index 5c904c6..deb2078 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImeMgr.java @@ -133,10 +133,6 @@ public class CloudPhoneImeMgr { if (mPopWindow.isShowing()) { return 0; } - if (text != null) { - CASLog.e(TAG, "text is not null"); - return 0; - } mImeEditText.getText().clear(); mPopWindow.setFocusable(true); mImeEditText.requestFocus(); -- Gitee