|
@@ -0,0 +1,379 @@
|
|
|
+package com.wdkl.app.ncs.callingbed.activity
|
|
|
+
|
|
|
+import android.graphics.Color
|
|
|
+import android.hardware.Camera
|
|
|
+import android.os.Bundle
|
|
|
+import android.text.method.ScrollingMovementMethod
|
|
|
+import android.view.SurfaceHolder
|
|
|
+import android.view.View
|
|
|
+import com.enation.javashop.android.jrouter.external.annotation.Router
|
|
|
+import com.enation.javashop.net.engine.model.NetState
|
|
|
+import com.wdkl.app.ncs.callingdoor.R
|
|
|
+import com.wdkl.app.ncs.callingdoor.databinding.TestLayBinding
|
|
|
+import com.wdkl.app.ncs.callingdoor.helper.*
|
|
|
+import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
|
|
|
+import com.wdkl.ncs.android.lib.base.BaseActivity
|
|
|
+import com.wdkl.ncs.android.lib.settings.SettingConfig
|
|
|
+import com.wdkl.ncs.android.lib.vo.filter
|
|
|
+import com.wdkl.ncs.android.middleware.common.Constant
|
|
|
+import com.wdkl.ncs.android.middleware.common.MessageEvent
|
|
|
+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.test_fragment_lay.camera_preview_surface
|
|
|
+import kotlinx.android.synthetic.main.test_fragment_lay.tv_camera
|
|
|
+import kotlinx.android.synthetic.main.test_fragment_lay.tv_test_info
|
|
|
+import kotlinx.android.synthetic.main.test_lay.*
|
|
|
+import org.greenrobot.eventbus.EventBus
|
|
|
+import org.greenrobot.eventbus.Subscribe
|
|
|
+import org.greenrobot.eventbus.ThreadMode
|
|
|
+
|
|
|
+
|
|
|
+@Router(path = "/callingdoor/text")
|
|
|
+class AppTextActivity :BaseActivity<QrCodeFragmentPresenter, TestLayBinding>(), QrCodeFragmentContract.View{
|
|
|
+ private val TAG = "AppTextActivity"
|
|
|
+
|
|
|
+ var info = ""
|
|
|
+ var buttonTest = false
|
|
|
+ var is_startTest = false
|
|
|
+ var testButton1 = false
|
|
|
+ var testButton2 = false
|
|
|
+ var testButton3 = false
|
|
|
+
|
|
|
+ var sosState = 0
|
|
|
+ var netOff = false
|
|
|
+
|
|
|
+ private var mCamera: Camera? = null
|
|
|
+ val colors = arrayOf(
|
|
|
+ Color.BLACK,
|
|
|
+ Color.WHITE,
|
|
|
+ Color.RED,
|
|
|
+ Color.parseColor("#FFA500"), // 橙色
|
|
|
+ Color.YELLOW,
|
|
|
+ Color.GREEN,
|
|
|
+ Color.CYAN,
|
|
|
+ Color.BLUE,
|
|
|
+ Color.MAGENTA
|
|
|
+ )
|
|
|
+ var colorIndex = 0
|
|
|
+ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
+ //切换语言
|
|
|
+ val languageId: Int = SettingConfig.getLanguageId(this)
|
|
|
+ LocaleMangerUtils.setApplicationLanguageByIndex(this, languageId)
|
|
|
+ super.onCreate(savedInstanceState)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun getLayId(): Int {
|
|
|
+ return R.layout.test_lay
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun bindDagger() {
|
|
|
+ CallingdoorLaunch.component.inject(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun init() {
|
|
|
+ Constant.IS_TEXT = true
|
|
|
+ is_startTest=false
|
|
|
+ RecordHelper.getInstance().init()
|
|
|
+ SoundPoolManager.getInstance().playSound(4, 1.0f, 1.0f, 0)
|
|
|
+ tv_test_info.movementMethod = ScrollingMovementMethod.getInstance()
|
|
|
+ tv_ip.text = "IP:" + NetHelper.getInstance().localIP
|
|
|
+
|
|
|
+ startCameraPreview()
|
|
|
+ }
|
|
|
+ private var red = 0
|
|
|
+ var is_cm = false
|
|
|
+ override fun bindEvent() {
|
|
|
+ btn_reset.setOnClickListener {
|
|
|
+ SerialPortHelper.resetDevice()
|
|
|
+ }
|
|
|
+ view_title_layout_img.setOnClickListener {
|
|
|
+ Constant.IS_TEXT = false
|
|
|
+ finish()
|
|
|
+ }
|
|
|
+ btn_fist.setOnClickListener {
|
|
|
+ slayout.visibility = View.GONE
|
|
|
+ btn_fist.visibility = View.GONE
|
|
|
+ color_view.visibility = View.GONE
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ btn_color.setOnClickListener {
|
|
|
+ SoundPoolManager.getInstance().playSound(6, 1.0f, 1.0f, 0)
|
|
|
+ color_view.bringToFront()
|
|
|
+ color_view.visibility = View.VISIBLE
|
|
|
+ btn_fist.visibility = View.VISIBLE
|
|
|
+
|
|
|
+ }
|
|
|
+ color_view.setOnClickListener {
|
|
|
+ btn_fist.visibility = View.VISIBLE
|
|
|
+ color_view.setBackgroundColor(colors[colorIndex])
|
|
|
+ colorIndex = (colorIndex + 1) % colors.size
|
|
|
+ }
|
|
|
+ btn_cm.setOnClickListener {
|
|
|
+ SoundPoolManager.getInstance().playSound(7, 1.0f, 1.0f, 0)
|
|
|
+ is_cm=true
|
|
|
+ slayout.bringToFront()
|
|
|
+ slayout.visibility = View.VISIBLE
|
|
|
+ btn_fist.visibility = View.VISIBLE
|
|
|
+// slayout.removeAllViews()
|
|
|
+// red = ContextCompat.getColor(this, R.color.colorAccent);//指定一种颜色
|
|
|
+// for (i in 0 until 9) {
|
|
|
+// for (j in 0 until 5) {
|
|
|
+// val textView = TextView(this)
|
|
|
+// textView.setOnTouchListener(this) // 每个TextView都监听触摸事件
|
|
|
+// val rowSpec = GridLayout.spec(i, 1.0f) // 行坐标和比重rowweight,用float表示的
|
|
|
+// val columnSpec = GridLayout.spec(j, 1.0f) // 列坐标和columnweight
|
|
|
+// val params = GridLayout.LayoutParams(rowSpec, columnSpec)
|
|
|
+// slayout.addView(textView, params)
|
|
|
+// }
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ btn_net_off.setOnClickListener {
|
|
|
+ if (netOff) {
|
|
|
+ netOff = false
|
|
|
+ SerialPortHelper.netOff(false)
|
|
|
+ } else {
|
|
|
+ netOff = true
|
|
|
+ SerialPortHelper.netOff(true)
|
|
|
+ }
|
|
|
+ btn_net_off.isEnabled = false
|
|
|
+
|
|
|
+ Thread {
|
|
|
+ try {
|
|
|
+ Thread.sleep(5000)
|
|
|
+
|
|
|
+ activity.runOnUiThread {
|
|
|
+ tv_ip.text = "IP:" + NetHelper.getInstance().localIP
|
|
|
+ btn_net_off.isEnabled = true
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (ex: Exception) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }.start()
|
|
|
+ }
|
|
|
+
|
|
|
+ btn_sos_test.setOnClickListener {
|
|
|
+ if (sosState == 0) {
|
|
|
+ sosState = 1
|
|
|
+ SerialPortHelper.setSosLight("1")
|
|
|
+ SerialPortHelper.setDoorLight(1, "111") //白色
|
|
|
+ } else if (sosState == 1) {
|
|
|
+ sosState = 2
|
|
|
+ SerialPortHelper.setSosLight("2")
|
|
|
+ //门灯红色闪烁
|
|
|
+ SerialPortHelper.setDoorLight(1, "200") //红色闪烁
|
|
|
+ } else if (sosState == 2) {
|
|
|
+ sosState = 3
|
|
|
+ SerialPortHelper.setDoorLight(1, Constant.nursingColor) //绿色
|
|
|
+ }else {
|
|
|
+ sosState = 0
|
|
|
+ SerialPortHelper.setSosLight("0")
|
|
|
+ SerialPortHelper.setDoorLight(0, "000")
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private fun startTest() {
|
|
|
+ is_startTest=true
|
|
|
+ Thread {
|
|
|
+ info += "\r\n--> 麦克风测试:\r\n"
|
|
|
+ showInfo(info)
|
|
|
+ SoundPoolManager.getInstance().playSound(3, 1.0f, 1.0f, 0)
|
|
|
+ Thread.sleep(2000)
|
|
|
+ info += "开始录音...\r\n"
|
|
|
+ showInfo(info)
|
|
|
+ RecordHelper.getInstance().recordTestStart()
|
|
|
+ Thread.sleep(2500)
|
|
|
+ RecordHelper.getInstance().recordTestStop()
|
|
|
+ Thread.sleep(500)
|
|
|
+ info += "播放录音...\r\n"
|
|
|
+ showInfo(info)
|
|
|
+ MediaPlayHelper.getInstance().playUrlMusic(RecordHelper.getInstance().audiofilePath, 1.0f, false)
|
|
|
+
|
|
|
+ Thread.sleep(3000)
|
|
|
+ RecordHelper.getInstance().deleteAudioFile()
|
|
|
+
|
|
|
+ info += "--> 指示灯测试\r\n"
|
|
|
+ showInfo(info)
|
|
|
+ SerialPortHelper.setCallStatus("1")
|
|
|
+ Thread.sleep(2000)
|
|
|
+ SerialPortHelper.setCallStatus("0")
|
|
|
+
|
|
|
+ info += "===测试结束!===\r\n"
|
|
|
+ showInfo(info)
|
|
|
+ is_startTest=false
|
|
|
+ }.start()
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// override fun keepScreenOn(): Boolean {
|
|
|
+// return true
|
|
|
+// }
|
|
|
+
|
|
|
+ private fun showInfo(text: String) {
|
|
|
+ activity.runOnUiThread {
|
|
|
+ if (tv_test_info != null) {
|
|
|
+ tv_test_info.text = text
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun startCameraPreview() {
|
|
|
+ val num = Camera.getNumberOfCameras()
|
|
|
+ if (num > 0) {
|
|
|
+ try {
|
|
|
+ mCamera = Camera.open()
|
|
|
+ } catch (e: Exception) {
|
|
|
+ tv_camera.visibility = View.VISIBLE
|
|
|
+ tv_camera.text = "摄像头打开失败"
|
|
|
+ e.printStackTrace()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ camera_preview_surface.getHolder().addCallback(object : SurfaceHolder.Callback {
|
|
|
+ override fun surfaceCreated(holder: SurfaceHolder) {
|
|
|
+ /**
|
|
|
+ * The SurfaceHolder must already contain a surface when this method is called.
|
|
|
+ * If you are using SurfaceView, you will need to register a SurfaceHolder.Callback
|
|
|
+ * with SurfaceHolder#addCallback(SurfaceHolder.Callback) and wait for
|
|
|
+ * SurfaceHolder.Callback#surfaceCreated(SurfaceHolder) before
|
|
|
+ * calling setPreviewDisplay() or starting preview.
|
|
|
+ * 相机的预览必须在surfaceCreated后调用,否则黑屏且没有任何提示哦
|
|
|
+ */
|
|
|
+
|
|
|
+ try {
|
|
|
+ mCamera!!.setPreviewDisplay(camera_preview_surface.getHolder())
|
|
|
+ mCamera!!.startPreview()
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun surfaceChanged(
|
|
|
+ holder: SurfaceHolder,
|
|
|
+ format: Int,
|
|
|
+ width: Int,
|
|
|
+ height: Int
|
|
|
+ ) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun surfaceDestroyed(holder: SurfaceHolder) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ tv_camera.visibility = View.VISIBLE
|
|
|
+ tv_camera.text = "没有摄像头"
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onStart() {
|
|
|
+ EventBus.getDefault().register(this)
|
|
|
+ super.onStart()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onStop() {
|
|
|
+ EventBus.getDefault().unregister(this)
|
|
|
+ super.onStop()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun destory() {
|
|
|
+ if (mCamera != null) {
|
|
|
+ mCamera!!.stopPreview()
|
|
|
+ mCamera!!.release()
|
|
|
+ mCamera = null
|
|
|
+ }
|
|
|
+
|
|
|
+ SOSHelper.sosStop()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onError(message: String, type: Int) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+ 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) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+// override fun onTouchEvent(event: MotionEvent): Boolean {
|
|
|
+// when (event.action) {
|
|
|
+// MotionEvent.ACTION_DOWN -> {
|
|
|
+// if (is_cm){
|
|
|
+// slayout.setBackgroundColor(Color.RED)
|
|
|
+// }
|
|
|
+// return true
|
|
|
+// }
|
|
|
+// MotionEvent.ACTION_MOVE -> {}
|
|
|
+// MotionEvent.ACTION_UP -> {}
|
|
|
+// }
|
|
|
+// return false
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
+ fun onMoonEvent(messageEvent: MessageEvent) {
|
|
|
+ if (Constant.EVENT_SERIAL_TEST == messageEvent.type) {
|
|
|
+ if (!buttonTest) {
|
|
|
+ val message = messageEvent.message as String
|
|
|
+ if (message == "call1" && !testButton1) {
|
|
|
+ info += " #面板呼叫键# "
|
|
|
+ testButton1 = true
|
|
|
+ } else if (message == "call2" && !testButton2) {
|
|
|
+ info += " #手柄按键# "
|
|
|
+ testButton2 = true
|
|
|
+ } else if (message == "call_end" && !testButton3) {
|
|
|
+ info += " #面板挂断键# "
|
|
|
+ testButton3 = true
|
|
|
+ } else if (message == "call_sos") {
|
|
|
+ info += " #SOS键# "
|
|
|
+ }
|
|
|
+
|
|
|
+ showInfo(info)
|
|
|
+ if (testButton1 && testButton2 && testButton3) {
|
|
|
+ buttonTest = true
|
|
|
+ }else{
|
|
|
+ if (!is_startTest){
|
|
|
+ startTest()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// override fun onTouch(v: View?, event: MotionEvent?): Boolean {
|
|
|
+// when (event?.action) {
|
|
|
+// MotionEvent.ACTION_DOWN -> {
|
|
|
+// if (is_cm){
|
|
|
+// v?.setBackgroundColor(Color.RED)
|
|
|
+// }
|
|
|
+// return true
|
|
|
+// }
|
|
|
+// MotionEvent.ACTION_MOVE -> {}
|
|
|
+// MotionEvent.ACTION_UP -> {}
|
|
|
+// }
|
|
|
+// return false
|
|
|
+// }
|
|
|
+}
|