From 113cc80c2d6894e694f22efdc76dbb3b5b9d1de0 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Sat, 11 Dec 2021 22:34:10 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=E8=B0=83=E6=95=B4=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=92=8C=E4=BF=AE=E5=A4=8D=E9=94=AE=E7=9B=98Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotProvider.kt | 4 +- .../core/function/hmi/ui/MoGoHmiFragment.kt | 5 +- .../hmi/ui/tools/AutoPilotAndCheckView.kt | 74 +++++++++- .../hmi/ui/tools/SpeedKeyboardView.kt | 58 ++++++++ .../function/hmi/ui/utils/KeyBoardUtil.java | 134 ++++++++++++++++++ .../function/hmi/ui/widget/CheckStatusView.kt | 7 - .../res/drawable-xxhdpi/icon_tools_nor.png | Bin 0 -> 4400 bytes .../src/main/res/drawable/keyboard_blue.xml | 4 + .../src/main/res/drawable/keyboard_white.xml | 4 + .../src/main/res/layout/fragment_hmi.xml | 14 +- .../main/res/layout/view_auto_pilot_check.xml | 37 +++-- .../src/main/res/layout/view_check_status.xml | 32 +++-- .../src/main/res/values/attr.xml | 5 + .../src/main/res/xml/key.xml | 61 ++++++++ .../api/autopilot/IMoGoAutopilotProvider.java | 2 +- .../call/autopilot/CallerAutoPilotManager.kt | 4 +- 16 files changed, 399 insertions(+), 46 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/SpeedKeyboardView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_tools_nor.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/keyboard_blue.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/keyboard_white.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/xml/key.xml diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index f626fe2720..e51c6d550f 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -72,7 +72,7 @@ class MoGoAutopilotProvider : } - override fun setAutoPilotSpeed(speed: Int) { - AdasManager.getInstance().setSpeed(speed) + override fun setAutoPilotSpeed(speed: Int): Boolean { + return AdasManager.getInstance().setSpeed(speed) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 8fcfef0aee..542266a80b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -87,7 +87,8 @@ class MoGoHmiFragment : MvpFragment showCameraList(CallerMonitorManager.getCameraList()) } } - viewCheckStatus?.setOnClickListener { + + ivToolsIcon?.setOnClickListener { if (toolsViewFloat == null) { showToolsFloat() } @@ -256,7 +257,7 @@ class MoGoHmiFragment : MvpFragment } override fun setCheckStatusViewVisibility(visibility: Int) { - viewCheckStatus?.visibility = visibility +// viewCheckStatus?.visibility = visibility } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index f079337f1e..557ed1de2e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -1,23 +1,34 @@ package com.mogo.eagle.core.function.hmi.ui.tools +import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout +import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo +import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.check.CallerCheckManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.utils.KeyBoardUtil +import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.view_auto_pilot_check.view.* /** * @author ChenFufeng * 设置自动驾驶速度和检测页入口 */ -class AutoPilotAndCheckView : FrameLayout { +class AutoPilotAndCheckView : FrameLayout, IMoGoAutopilotStatusListener { private val TAG = "AutoPilotAndCheckView" private var clickListener: ClickListener? = null + private var keyBoardUtil: KeyBoardUtil? = null + private var connectStatus = false @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : super( @@ -31,13 +42,58 @@ class AutoPilotAndCheckView : FrameLayout { initView() } + @SuppressLint("ClickableViewAccessibility") private fun initView() { + if (keyBoardUtil == null) { + keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed) + } + keyBoardUtil?.setActionListener { inputContent -> + inputContent.toIntOrNull()?.let { speed -> + when { + !connectStatus -> { + ToastUtils.showShort("域控制器连接异常,请先启动") + } + speed > 60 -> { + ToastUtils.showShort("超过最大限速值60,设置失败") + } + else -> { + // 设置自动驾驶速度 + var isSuccess = CallerAutoPilotManager.setAutoPilotSpeed(speed) + when { + isSuccess -> { + ToastUtils.showShort("车速设置成功,立即生效") + } + else -> { + ToastUtils.showShort("车速设置失败,请稍后重试") + } + } + } + } + } + } + KeyBoardUtil.hideSystemSoftKeyboard(context, etInputSpeed) ivCloseIcon.setOnClickListener { clickListener?.onClose(it) } - ivCheckIcon.setOnClickListener { + viewCheckStatus.setOnClickListener { clickListener?.go2CheckPage() } + etInputSpeed.setOnTouchListener { v, _ -> + if (etInputSpeed.hasFocusable()) { + if (keyBoardUtil == null) { + keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed) + } + keyBoardUtil?.showKeyboard() + } + if (!etInputSpeed.hasFocus()) { + etInputSpeed.requestFocus() + } + return@setOnTouchListener false + } +// // 比如需要设置默认速度 +// val speed = "30" +// etInputSpeed.setText(speed) +// etInputSpeed.setSelection(speed.length) } fun setClickListener(clickListener: ClickListener) { @@ -46,10 +102,24 @@ class AutoPilotAndCheckView : FrameLayout { override fun onAttachedToWindow() { super.onAttachedToWindow() + CallerAutoPilotStatusListenerManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + connectStatus = autoPilotStatusInfo.connectStatus + } + + override fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?) { + + } + + override fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?) { + } interface ClickListener { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/SpeedKeyboardView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/SpeedKeyboardView.kt new file mode 100644 index 0000000000..9f1ec2b75f --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/SpeedKeyboardView.kt @@ -0,0 +1,58 @@ +package com.mogo.eagle.core.function.hmi.ui.tools + +import android.content.Context +import android.graphics.* +import android.inputmethodservice.KeyboardView +import android.util.AttributeSet +import com.mogo.eagle.core.function.hmi.R + +class SpeedKeyboardView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : KeyboardView(context, attrs) { + override fun onDraw(canvas: Canvas?) { + super.onDraw(canvas) + val keyboard = keyboard ?: return + val keys = keyboard.keys + if (keys != null && keys.size > 0) { + val paint = Paint() + paint.textAlign = Paint.Align.CENTER + val font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD) + paint.typeface = font + paint.isAntiAlias = true + for (key in keys) { + if (key.codes[0] == -4) {// 确定 + val dr = context.resources.getDrawable(R.drawable.keyboard_blue) + dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height) + dr.draw(canvas!!) + } else { + val dr = context.resources.getDrawable(R.drawable.keyboard_white) + dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height) + dr.draw(canvas!!) + } + if (key.label != null) { + // 确定和删除按键字体 + if (key.codes[0] == -4 || + key.codes[0] == -5 + ) { + paint.textSize = 36f + } else { + paint.textSize = 45f + } + paint.color = Color.parseColor("#FFFFFF") + val rect = Rect(key.x, key.y, key.x + key.width, key.y + key.height) + val fontMetrics = paint.fontMetricsInt + val baseline = + (rect.bottom + rect.top - fontMetrics.bottom - fontMetrics.top) / 2 + // 下面这行是实现水平居中,drawText对应改为传入targetRect.centerX() + paint.textAlign = Paint.Align.CENTER + canvas!!.drawText( + key.label.toString(), + rect.centerX().toFloat(), + baseline.toFloat(), + paint + ) + } + } + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java new file mode 100644 index 0000000000..af17983435 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java @@ -0,0 +1,134 @@ +package com.mogo.eagle.core.function.hmi.ui.utils; + +import android.content.Context; +import android.inputmethodservice.Keyboard; +import android.inputmethodservice.KeyboardView; +import android.os.Build; +import android.text.Editable; +import android.text.InputType; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import com.mogo.eagle.core.function.hmi.R; + +import java.lang.reflect.Method; + +public class KeyBoardUtil { + + private KeyboardView keyboardView; + private EditText editText; + private Keyboard keyboard;// 键盘 + private ActionListener actionListener; + + public KeyBoardUtil(KeyboardView keyboardView, EditText editText) { + this.keyboardView = keyboardView; + this.editText = editText; + + this.keyboard = new Keyboard(editText.getContext(), R.xml.key); + this.keyboardView.setOnKeyboardActionListener(listener); + this.keyboardView.setKeyboard(keyboard); + this.keyboardView.setEnabled(true); + this.keyboardView.setPreviewEnabled(false); + } + + public void setActionListener(ActionListener actionListener) { + this.actionListener = actionListener; + } + + private KeyboardView.OnKeyboardActionListener listener = new KeyboardView.OnKeyboardActionListener() { + + @Override + public void swipeUp() { + } + + @Override + public void swipeRight() { + + } + + @Override + public void swipeLeft() { + } + + @Override + public void swipeDown() { + } + + @Override + public void onText(CharSequence text) { + } + + @Override + public void onRelease(int primaryCode) { + } + + @Override + public void onPress(int primaryCode) { + } + + @Override + public void onKey(int primaryCode, int[] keyCodes) { + Editable editable = editText.getText(); + int start = editText.getSelectionStart(); + switch (primaryCode) { + case Keyboard.KEYCODE_DELETE: + if (editable != null && editable.length() > 0) { + if (start > 0) { + editable.delete(start - 1, start); + } + } + break; + case Keyboard.KEYCODE_DONE: + keyboardView.setVisibility(View.GONE); + if (actionListener != null) { + actionListener.onComplete(editText.getText().toString()); + } + break; + default: + editable.insert(start, Character.toString((char) primaryCode)); + break; + } + } + }; + + public static void hideSystemSoftKeyboard(Context context, EditText editText) { + int sdkInt = Build.VERSION.SDK_INT; + if (sdkInt >= Build.VERSION_CODES.HONEYCOMB && sdkInt < Build.VERSION_CODES.LOLLIPOP) { + try { + Class cls = EditText.class; + Method setShowSoftInputOnFocus; + setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class); + setShowSoftInputOnFocus.setAccessible(true); + setShowSoftInputOnFocus.invoke(editText, false); + + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } else if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) { + editText.setShowSoftInputOnFocus(false); + } else { + // 不会弹出系统键盘,同时不显示光标 + editText.setInputType(InputType.TYPE_NULL); + } + // 如果软键盘已经显示,则隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); + } + + // Activity中获取焦点时调用,显示出键盘 + public void showKeyboard() { + int visibility = keyboardView.getVisibility(); + if (visibility == View.GONE || visibility == View.INVISIBLE) { + keyboardView.setVisibility(View.VISIBLE); + } + } + + public interface ActionListener { + void onComplete(String inputContent); + } +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckStatusView.kt index 50315d1323..96a62ac937 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckStatusView.kt @@ -24,13 +24,6 @@ class CheckStatusView @JvmOverloads constructor( init { LayoutInflater.from(context).inflate(R.layout.view_check_status, this, true) - - setBackgroundResource(R.drawable.module_ext_check) - -// setOnClickListener { -// // 启动检测页面 -// CallerCheckManager.startCheckActivity(getContext()) -// } } private fun showErrorIcon() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_tools_nor.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_tools_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..ba41bf3a53886665bbf57855d8b8624342a10444 GIT binary patch literal 4400 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 + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/keyboard_white.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/keyboard_white.xml new file mode 100644 index 0000000000..3d9f532bc9 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/keyboard_white.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml index 599d5fc18c..7f8775e20d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml @@ -83,16 +83,20 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> - + app:layout_goneMarginStart="50px" + /> @@ -30,15 +30,15 @@ app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintTop_toTopOf="parent" + /> @@ -106,10 +109,23 @@ android:textColor="#B3FFFFFF" android:textSize="38px" android:layout_marginEnd="28px" + android:layout_gravity="center_vertical" /> + + - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_status.xml index 811aec84da..c16930b902 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_status.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_status.xml @@ -6,15 +6,25 @@ android:layout_height="wrap_content"> - + + + + + + + + + + + + + + @@ -24,8 +34,8 @@ android:layout_height="@dimen/dp_40" android:src="@drawable/check_error_image" android:visibility="invisible" - app:layout_constraintRight_toRightOf="@+id/moduleHmiCheck" - app:layout_constraintTop_toTopOf="@+id/moduleHmiCheck" /> + app:layout_constraintRight_toRightOf="@+id/ivCheckIcon" + app:layout_constraintTop_toTopOf="@+id/ivCheckIcon" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml index 8972302147..4827806e98 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml @@ -26,5 +26,10 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/xml/key.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/xml/key.xml new file mode 100644 index 0000000000..05d655ef9d --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/xml/key.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java index fecf0f428f..0d92a933c9 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java @@ -56,5 +56,5 @@ public interface IMoGoAutopilotProvider extends IMoGoFunctionServerProvider { */ void setIsWriteLog(boolean isWriteLog); - void setAutoPilotSpeed(int speed); + Boolean setAutoPilotSpeed(int speed); } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 896afd89a1..ff4200135e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -63,7 +63,7 @@ object CallerAutoPilotManager { providerApi.setIsWriteLog(isWriteLog) } - fun setAutoPilotSpeed(speed: Int) { - providerApi.setAutoPilotSpeed(speed) + fun setAutoPilotSpeed(speed: Int): Boolean { + return providerApi.setAutoPilotSpeed(speed) } } \ No newline at end of file