diff --git a/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml
index dc9cf1b26e..b0de6b5f86 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml
+++ b/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml
@@ -5,5 +5,7 @@
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
index 2e809bf915..1f8dfe50b6 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
@@ -15,6 +15,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
+import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager
import com.zhjt.mogo_core_function_devatools.status.*
@@ -42,6 +43,7 @@ class DevaToolsProvider : IDevaToolsProvider {
bizConfigCenter.init(mContext!!)
FuncConfigImpl.init()
MogoLogCatchManager.init(mContext!!)
+ MoFangManager.INSTANCE.init(mContext!!)
}
override fun startLogCatch() {
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt
new file mode 100644
index 0000000000..62dad7b169
--- /dev/null
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt
@@ -0,0 +1,109 @@
+package com.zhjt.mogo_core_function_devatools.mofang
+
+import android.annotation.SuppressLint
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.util.Log
+import com.mogo.commons.context.ContextHolderUtil.getContext
+import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateMfStatusView
+import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
+
+
+@SuppressLint("StaticFieldLeak")
+class MoFangManager private constructor() {
+
+ companion object {
+ val INSTANCE: MoFangManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+ MoFangManager()
+ }
+ }
+
+ private var mContext: Context? = null
+ private val TAG = "MoFangManager"
+ private val mBluetoothAdapter: BluetoothAdapter? = null
+ private var deviceName = ""
+ //添加状态判断
+ private var isMfConnect: Boolean = false
+
+
+ fun init(context: Context) {
+// initBluetooth()
+// mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
+// if (!mBluetoothAdapter.isEnabled) {
+// mBluetoothAdapter.enable()
+// }
+// mBluetoothAdapter.startDiscovery()
+// showBondedDevice(mBluetoothAdapter)
+ }
+
+ /**
+ * 初始化蓝牙广播
+ */
+ private fun initBluetooth() {
+ val intentFilter = IntentFilter();
+ // 监视蓝牙关闭和打开的状态
+ intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ // 监视蓝牙设备与APP连接的状态
+ intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
+ intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
+ // 注册广播
+ getContext().registerReceiver(bluetoothMonitorReceiver, intentFilter);
+ }
+
+ /**
+ * 查找蓝牙连接过的蓝牙设备
+ */
+ private fun showBondedDevice(bluetoothAdapter: BluetoothAdapter) {
+// val deviceList = bluetoothAdapter.bondedDevices
+// for (device in deviceList) {
+// try {
+// //使用反射调用获取设备连接状态方法
+// val isConnectedMethod = BluetoothDevice::class.java.getDeclaredMethod(
+// "isConnected",
+// *null as Array?>?
+// )
+// isConnectedMethod.isAccessible = true
+//// boolean isConnected = (boolean) isConnectedMethod.invoke(device, (Object[]) null);
+// Log.d(TAG, "-- device.getName() = " + device.name) //device.getAddress()
+// if (device.name == "MINI_KEYBOARD") { //并且连接 TODO
+// SharedPrefsMgr.getInstance(getContext()).putString("BLUETOOTH", device.name)
+// }
+// } catch (e: NoSuchMethodException) {
+// e.printStackTrace()
+// }
+// }
+ }
+
+
+ private val bluetoothMonitorReceiver: BroadcastReceiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ when (intent.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> { //中间状态
+
+ }
+
+ BluetoothDevice.ACTION_ACL_CONNECTED -> { //蓝牙设备已连接
+ if (!isMfConnect) {
+ updateMfStatusView("mofang", true)
+ isMfConnect = true
+ }
+ }
+
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> { //蓝牙设备已断开 主动更新 TODO
+ if (isMfConnect) {
+ updateMfStatusView("mofang", false)
+ isMfConnect = false
+ }
+ }
+
+ }
+ }
+ }
+
+
+
+}
\ 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 b18902c002..d14a2fd150 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
@@ -459,6 +459,10 @@ class MoGoHmiFragment : MvpFragment(),
statusBarView?.updateProgressView(insert, tag, progress)
}
+ override fun updateMfStatus(tag: String, status: Boolean) {
+ statusBarView?.updateMfStatus(tag, status)
+ }
+
override fun updateDriverMsgBoxTipView(show: Boolean) {
if(show){
MsgBoxTipView.visibility = View.VISIBLE
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java
index 94324cc205..cc40050a7a 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java
@@ -25,6 +25,7 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener;
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.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver;
@@ -219,6 +220,8 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
public boolean dispatchKeyEvent(KeyEvent event) {
// Log.d(TAG, "dispatchKeyEvent code = " + event.getKeyCode() + "--action = " + event.getAction() + "----" + event);
String bluetoothName = SharedPrefsMgr.getInstance(getContext()).getString("BLUETOOTH");
+// CallerHmiManager.INSTANCE.updateMfStatusView("mofang", true);
+
if (!isPressEnd) {
Log.e(TAG, "dispatchKeyEvent bluetoothName = " + bluetoothName);
}
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt
index a2ee096f68..245c505d1c 100644
--- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt
@@ -310,4 +310,10 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy {
* 更新(添加/删除)下载进度
*/
fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int)
+
+ /**
+ * 更新魔方的连接状态
+ */
+ fun updateMfStatus(tag: String, status: Boolean)
+
}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
index 68054d3207..4f14582d45 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
@@ -488,6 +488,7 @@ object CallerHmiManager : CallerBase() {
fun updatePassengerMsgBoxTipView(show: Boolean = false){
waringProviderApi?.updatePassengerMsgBoxTipView(show)
}
+
/**
* 更新(添加/删除)状态栏右侧元素
*/
@@ -495,5 +496,13 @@ object CallerHmiManager : CallerBase() {
waringProviderApi?.updateStatusBarDownloadView(insert, tag, progress)
}
+ /**
+ * 更新魔方的链接状态
+ */
+ fun updateMfStatusView(tag: String, status: Boolean) {
+ waringProviderApi?.updateMfStatus(tag, status)
+ }
+
+
}
\ No newline at end of file