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