Просмотр исходного кода

#ADD 开机未注册状态增加二维码界面显示

weizhengliang 4 лет назад
Родитель
Сommit
8e77d88097

+ 38 - 24
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -1,9 +1,6 @@
 package com.wdkl.app.ncs.callingdoor.activity
 
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
+import android.content.*
 import android.net.ConnectivityManager
 import android.os.CountDownTimer
 import android.os.Handler
@@ -84,21 +81,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     private lateinit var curFragment: String
     //首页
     private val mainFragment = "main_fragment"
-    //语音留言
-    private val costFragment = "cost_fragment"
     //二维码
     private val qrFragment = "qr_fragment"
 
-    //来电设备id
-    //private var fromId: Int = -1
-    //Interaction ID
-    //private var interactionId: Int = -1
     //呼叫倒计时
     lateinit var countDownTimer: CountDownTimer
 
-    private lateinit var linearLayout : LinearLayoutManager
-    private lateinit var nurseConfigAdpter : NurseConfigAdpter
-    private var configList = ArrayList<NurseConfigDto>()
     private var updating :Boolean = false
 
     private var clickTime : Long = 0
@@ -138,14 +126,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         //串口监听
         setSerialListner()
 
-        initDevice()
-
         //更新状态图标
         updateNetState()
 
-        //启动主fragment
-        switchFragment(R.id.callingdoor_main_frame, MainFragment(), mainFragment)
-
         //打开MIC
         SerialPortHelper.setMIC(true)
         SerialPortHelper.setHandsFree(true)
@@ -154,6 +137,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         SerialPortHelper.setDoorLight(1, "111")
 
         app_version.text = "V" + BuildConfig.VERSION_NAME
+
+        //显示二维码界面
+        switchFragment(R.id.callingdoor_main_frame, QrCodeFragment(), qrFragment)
+
+        initDevice()
     }
 
     override fun userLogin() {
@@ -195,7 +183,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
         //增援按钮
         room_action_support.setOnClickListener {
-            showMessage("增援请求已发送!")
+            if (Constant.TCP_CONNECTED) {
+                showMessage("增援请求已发送!")
+            } else {
+                showMessage("网络异常,请求失败!")
+            }
         }
 
         //呼叫按钮
@@ -218,7 +210,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                             startCall(Constant.VOICE_CALL)
                         }
                     } else {
-                        showMessage("当前设备可能未注册,不能呼叫")
+                        showMessage("当前设备可能未注册或网络异常,不能呼叫")
                     }
                 }
 
@@ -227,6 +219,19 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 showMessage("请勿频繁点击...")
             }
         }
+
+        app_version.setOnLongClickListener {
+            AppInfoDialogHelper.showAppDialog(this@CallingdoorActivity, object :DialogInterface.OnClickListener {
+                override fun onClick(dialog: DialogInterface?, which: Int) {
+                    AppUpdateHelper.reboot(activity)
+                }
+            }, object :DialogInterface.OnClickListener {
+                override fun onClick(dialog: DialogInterface?, which: Int) {
+                    checkAppVersion()
+                }
+            })
+            return@setOnLongClickListener true
+        }
     }
 
     //设置串口监听
@@ -248,9 +253,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 //呼叫超时,返回到主界面
                 showMessage("无人应答...")
                 Constant.CALL_STATE = Constant.CALL_STANDBY
-                //MediaPlayHelper.getInstance().stopMusic()
                 VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
-                //endCall()
                 CallDialogHelper.dismissCallDialog()
             }
         }
@@ -267,7 +270,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
 
     override fun destory() {
-        configList.clear()
         countDownTimer.cancel()
         unRegReceiver()
         if (EventBus.getDefault().isRegistered(this)) {
@@ -310,6 +312,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
     //显示设备信息
     override fun showDeviceInfo(deviceInfo: DeviceRoomInfoVO) {
+        //显示床位信息界面
+        if (!mainFragment.equals(curFragment)) {
+            switchFragment(R.id.callingdoor_main_frame, MainFragment(), mainFragment)
+        }
+
         Constant.SIP_ID = deviceInfo.sipId
         Constant.DEVICE_ID = deviceInfo.id
         Constant.PART_ID = deviceInfo.partId
@@ -328,9 +335,10 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         if (deviceInfo.frameId != null) {
             Constant.FRAME_ID = deviceInfo.frameId
             EventBus.getDefault().post(MessageEvent("updateCustom", Constant.EVENT_UPDATE_CUSTOM))
-            presenter.loadPartSettings(Constant.PART_ID)
         }
 
+        presenter.loadPartSettings(Constant.PART_ID)
+
         if (SocketManager.getInstance().userState == 0) {
             connectSocket()
         }
@@ -438,6 +446,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     inCalling()
                 } else if (Constant.CALL_STATE == Constant.CALL_CALLING) {
                     hangupCall()
+                } else if (Constant.CALL_STATE == Constant.CALL_OUTGOING) {
+                    cancelCall()
                 }
             }
         }
@@ -647,6 +657,10 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
             view_title_layout_iv_ethernet.visibility = View.VISIBLE
             view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_success)
             view_title_layout_iv_wifi.visibility = View.GONE
+        } else {
+            view_title_layout_iv_ethernet.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_fail)
+            view_title_layout_iv_wifi.visibility = View.GONE
         }
 
         if (NetHelper.isBTConnected()) {

+ 4 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/di/CallingdoorComponent.kt

@@ -12,7 +12,9 @@ interface CallingdoorComponent {
 
     fun inject(activity: AppUpdateActivity)
 
-    fun inject(activity: MainFragment)
+    fun inject(fragment: MainFragment)
 
-    fun inject(activity: CallFragment)
+    fun inject(fragment: CallFragment)
+
+    fun inject(fragment: QrCodeFragment)
 }

+ 104 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/QrCodeFragment.kt

@@ -0,0 +1,104 @@
+package com.wdkl.app.ncs.callingdoor.fragment
+
+import android.graphics.BitmapFactory
+import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.app.ncs.callingdoor.BuildConfig
+import com.wdkl.app.ncs.callingdoor.R
+import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity
+import com.wdkl.app.ncs.callingdoor.databinding.QrCodeLayBinding
+import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper
+import com.wdkl.app.ncs.callingdoor.helper.NetHelper
+import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
+import com.wdkl.ncs.android.lib.base.BaseFragment
+import com.wdkl.ncs.android.lib.utils.*
+import com.wdkl.ncs.android.lib.vo.filter
+import com.wdkl.ncs.android.middleware.common.Constant
+import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.QrCodeFragmentContract
+import com.wdkl.ncs.android.middleware.logic.presenter.callingdoor.QrCodeFragmentPresenter
+import kotlinx.android.synthetic.main.qr_code_lay.*
+import java.lang.StringBuilder
+
+class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrCodeLayBinding>(), QrCodeFragmentContract.View {
+    val TAG = "QrCodeFragment"
+
+    val QR_CODE_PATH = "http://m.wdklian.com/care/apk/care.user?type=NCS_DEVICE"
+
+    override fun getLayId(): Int {
+        return R.layout.qr_code_lay
+    }
+
+    override fun bindDagger() {
+        CallingdoorLaunch.component.inject(this)
+    }
+
+    override fun init() {
+        Thread{
+            //val logoBitmap = BitmapFactory.decodeResource(resources, R.mipmap.erlogo)
+            var builder = StringBuilder()
+            builder.append(QR_CODE_PATH)
+            builder.append("&code=")
+            builder.append(Constant.DEVICE_CODE)
+            builder.append("&mac=")
+            builder.append(Constant.LOCAL_MAC)
+            builder.append("&model=")
+            builder.append(Constant.DEVICE_MODEL)
+            builder.append("&hard_ver=")
+            builder.append(Constant.DEVICE_HARD_VER)
+            builder.append("&soft_ver=")
+            builder.append(Constant.DEVICE_SOFT_VER)
+            builder.append("&device_type=")
+            builder.append(Constant.DEVICE_TYPE)
+            builder.append("&device_name=")
+            builder.append(Constant.DEVICE_NAME)
+            val code = EcodeHelper().createQRImage(builder.toString(),200, null)
+            activity.runOnUiThread {
+                view_qr_code?.setImageBitmap(code)
+            }
+        }.start()
+        val macAddr = NetHelper.getInstance().macAddress
+        val ipAddr = NetHelper.getInstance().localIP
+        tv_device_id.text = "设备ID: " + Constant.DEVICE_ID
+        tv_local_ip.text = "本机IP: " + ipAddr
+        tv_local_mac.text = "本机MAC: " + macAddr
+        tv_app_version.text = "版本信息: V" + BuildConfig.VERSION_NAME
+        tv_mcu_version.text = "MCU版本: " + Constant.MCU_VERSION_NUMBER
+    }
+
+    override fun bindEvent() {
+        tv_btn_update_app.setOnClickListener {
+            (activity as CallingdoorActivity).checkAppVersion()
+        }
+
+        tv_btn_reboot.setOnClickListener {
+            AppUpdateHelper.reboot(context)
+        }
+    }
+
+    override fun destory() {
+    }
+
+    override fun onError(message: String, type: Int) {
+        errorLog("error",message)
+        showMessage(message)
+    }
+
+    override fun complete(message: String, type: Int) {
+    }
+
+    override fun start() {
+    }
+
+    override fun networkMonitor(state: NetState) {
+        state.filter(onWifi = {
+
+        },onMobile = {
+
+        },offline = {
+
+        })
+    }
+
+    override fun setUrlString(url: String) {
+        //
+    }
+}

+ 42 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/AppInfoDialogHelper.java

@@ -0,0 +1,42 @@
+package com.wdkl.app.ncs.callingdoor.helper;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+
+import com.wdkl.app.ncs.callingdoor.BuildConfig;
+import com.wdkl.ncs.android.middleware.common.Constant;
+
+public class AppInfoDialogHelper {
+
+    private static AlertDialog appDialog;
+
+    public static void showAppDialog(Activity activity, DialogInterface.OnClickListener rebootListener, DialogInterface.OnClickListener appCheckListener) {
+        if (appDialog != null && appDialog.isShowing()) {
+            appDialog.dismiss();
+        }
+
+        StringBuilder stringBuilder = new StringBuilder();
+        String macAddr = NetHelper.getInstance().getMacAddress();
+        String ipAddr = NetHelper.getInstance().getLocalIP();
+        stringBuilder.append("设备ID: ");
+        stringBuilder.append(Constant.DEVICE_ID);
+        stringBuilder.append("\n本机IP: ");
+        stringBuilder.append(ipAddr);
+        stringBuilder.append("\n本机MAC: ");
+        stringBuilder.append(macAddr);
+        stringBuilder.append("\n版本信息: V");
+        stringBuilder.append(BuildConfig.VERSION_NAME);
+        stringBuilder.append("\nMCU版本: ");
+        stringBuilder.append(Constant.MCU_VERSION_NUMBER);
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setTitle("版本信息");
+        builder.setPositiveButton("重置", rebootListener);
+        builder.setNegativeButton("检查更新", appCheckListener);
+        builder.setMessage(stringBuilder.toString());
+
+        appDialog = builder.create();
+        appDialog.show();
+    }
+}

+ 2 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/helper/SerialPortHelper.java

@@ -51,6 +51,7 @@ public class SerialPortHelper {
 
     //重置设备
     public static void resetDevice() {
-        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
+        //SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
+        SerialPortUtil.getInstance().systemRestart();
     }
 }

+ 1 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/settings/SettingConfig.java

@@ -6,8 +6,7 @@ import android.content.SharedPreferences;
 
 public class SettingConfig {
 
-
-    private static final String SP_NAME = "SP_BED_FUNCTION";
+    private static final String SP_NAME = "SP_DOOR_FUNCTION";
 
     //白昼设置白天的初始时间设置
     private static final String KEY_SP_INITIAL_DAY_TIME = "KEY_SP_INITIAL_DAY_TIME";

+ 4 - 2
callingdoor/src/main/res/layout/callingdoor_main_lay.xml

@@ -35,7 +35,9 @@
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
                 android:layout_marginBottom="10dp"
-                android:gravity="right"
+                android:paddingTop="4dp"
+                android:paddingBottom="10dp"
+                android:gravity="center"
                 android:text="版本"
                 android:textColor="@color/main_color"/>
             <TextView
@@ -54,7 +56,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_above="@id/room_action_reset"
-                android:layout_marginBottom="20dp"
+                android:layout_marginBottom="10dp"
                 android:background="@mipmap/bg_bottom_btn"
                 android:drawableLeft="@mipmap/ic_call"
                 android:drawablePadding="6dp"

+ 0 - 5
callingdoor/src/main/res/layout/qr_code_lay.xml

@@ -5,14 +5,10 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <include android:id="@+id/lay_qr_bed_name"
-        layout="@layout/view_bed_name"/>
-
     <LinearLayout
         android:id="@+id/ll_qr_code_view"
         android:layout_width="360dp"
         android:layout_height="match_parent"
-        android:layout_below="@id/lay_qr_bed_name"
         android:layout_marginTop="6dp"
         android:layout_marginBottom="6dp"
         android:background="@color/white"
@@ -78,7 +74,6 @@
         android:layout_height="match_parent"
         android:background="@color/white"
         android:layout_toRightOf="@id/ll_qr_code_view"
-        android:layout_below="@id/lay_qr_bed_name"
         android:layout_marginTop="6dp"
         android:layout_marginBottom="6dp"
         android:layout_marginLeft="10dp"

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/PresenterComponent.kt

@@ -60,4 +60,5 @@ interface PresenterComponent {
 
     fun inject(presenter: CallFragmentPresenter)
 
+    fun inject(presenter: QrCodeFragmentPresenter)
 }

+ 13 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/callingdoor/QrCodeFragmentContract.kt

@@ -0,0 +1,13 @@
+package com.wdkl.ncs.android.middleware.logic.contract.callingdoor
+
+import com.wdkl.ncs.android.lib.base.BaseContract
+
+interface QrCodeFragmentContract {
+    interface View : BaseContract.BaseView {
+        fun setUrlString(url: String)
+    }
+
+    interface Presenter : BaseContract.BasePresenter {
+        fun loadUrlString()
+    }
+}

+ 45 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingdoor/QrCodeFragmentPresenter.kt

@@ -0,0 +1,45 @@
+package com.wdkl.ncs.android.middleware.logic.presenter.callingdoor
+
+import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
+import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.wdkl.ncs.android.lib.base.RxPresenter
+import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
+import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.QrCodeFragmentContract
+import io.reactivex.disposables.Disposable
+import javax.inject.Inject
+
+class QrCodeFragmentPresenter @Inject constructor() : RxPresenter<QrCodeFragmentContract.View>(), QrCodeFragmentContract.Presenter {
+
+    override fun bindDagger() {
+        MiddlewareDaggerComponent.component.inject(this)
+    }
+
+    /**
+     * @Name  observer
+     * @Type  ConnectionObserver
+     * @Note  数据监听者
+     */
+    private val observer = object : ConnectionObserver<String>() {
+        override fun onStartWithConnection() {
+            providerView()
+        }
+
+        override fun onNextWithConnection(result: String, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            providerView().setUrlString(result)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+    }
+
+    override fun loadUrlString() {
+        //
+    }
+}