diff --git a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt index e4d41e8..6e41430 100644 --- a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.detector.common.view +import android.app.Activity import android.content.ComponentName import android.content.Context import android.content.Intent @@ -15,6 +16,7 @@ import android.util.Log import android.view.KeyEvent import android.view.View +import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation @@ -112,15 +114,13 @@ private var ids = HashSet() private var freeTaskId: String? = null private var connectState = ConnectState.CLOSED - private var socketClient: SocketClient? = null private var serialPortService: SerialPortService? = null private var searchMarkerTimer: Timer? = null private var soundResourceId = 0 private var isExecuteTask = false - private var remoteHost = "" - private var remotePort = "" private var outStream: OutputStream? = null private lateinit var aMap: AMap + private lateinit var socketClient: SocketClient override fun initViewBinding(): ActivityMainBinding { return ActivityMainBinding.inflate(layoutInflater) @@ -151,12 +151,14 @@ soundResourceId = soundPool.load(this, R.raw.ring3, 1) + //连接千寻RTK服务器 + lifecycleScope.launch(Dispatchers.IO) { connectQianXunServer() } RtkLocationTool.getCurrentLocation(this) { if (connectState == ConnectState.SUCCESS) { //连接成功就发送千寻请求报文 val gga = it.convertToGPGGA() Log.d(kTag, gga) - socketClient?.sendData(gga) + socketClient.sendData(gga) } } @@ -282,7 +284,11 @@ 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> completionMarker() - 5 -> navigatePageTo() + 5 -> { + Intent(this@MainActivity, RtkConfigActivity::class.java).also { + rtkConfigLauncher.launch(it) + } + } } } }) @@ -467,6 +473,38 @@ } } + private val rtkConfigLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) { + lifecycleScope.launch(Dispatchers.IO) { + if (connectState == ConnectState.SUCCESS) { + socketClient.disconnect() + delay(3000) + } + + connectQianXunServer() + } + } + } + + private fun connectQianXunServer() { + //取缓存 + val remoteHost = SaveKeyValues.getValue( + LocaleConstant.RTK_SERVER, "203.107.45.154" + ) as String + val remotePort = SaveKeyValues.getValue( + LocaleConstant.RTK_PORT, "8003" + ) as String + + socketClient = SocketClient.Builder() + .setHostname(remoteHost) + .setPort(remotePort.toInt()) + .setTimeout(5000) + .setOnSocketListener(this) + .build() + socketClient.connect() + } + private fun uploadTask(taskId: String, taskCode: String, state: String) { if (isNetworkConnected()) { val userId = SaveKeyValues.getValue(LocaleConstant.USER_ID, "") as String @@ -889,30 +927,6 @@ } showLabelsOnMap() } - - //取缓存 - remoteHost = SaveKeyValues.getValue(LocaleConstant.RTK_SERVER, "203.107.45.154") as String - remotePort = SaveKeyValues.getValue(LocaleConstant.RTK_PORT, "8003") as String - - //连接千寻RTK服务器 - lifecycleScope.launch(Dispatchers.IO) { - if (socketClient != null) { - socketClient?.disconnect() - delay(3000) - } - - connectQianXunServer() - } - } - - private fun connectQianXunServer() { - socketClient = SocketClient.Builder() - .setHostname(remoteHost) - .setPort(remotePort.toInt()) - .setTimeout(5000) - .setOnSocketListener(this) - .build() - socketClient?.connect() } override fun onMessageResponse(data: ByteArray) { @@ -923,7 +937,6 @@ * 0d0a0d0a -> \r\n\r\n * */ val result = String(data, StandardCharsets.UTF_8) - Log.d(kTag, "onMessageResponse: $result") if (result.contains("ICY 200 OK")) { "高精度定位服务连接成功".show(this) } @@ -936,6 +949,7 @@ override fun onServiceConnectStatusChanged(status: ConnectState) { this.connectState = status + Log.d(kTag, "onServiceConnectStatusChanged: $status") if (connectState == ConnectState.SUCCESS) { //连接成功就发送千寻请求报文 val account = SaveKeyValues.getValue(LocaleConstant.ACK, "qxtmcr0087663") as String @@ -957,11 +971,11 @@ .toString() val byteBuf = Unpooled.wrappedBuffer(msg.toByteArray()) - socketClient?.sendData(byteBuf) - } else { + socketClient.sendData(byteBuf) + } else if (status == ConnectState.ERROR) { AlertControlDialog.Builder().setContext(context) .setTitle("温馨提示") - .setMessage("千寻定位服务已断开,谁否重连?") + .setMessage("千寻定位服务已断开,是否重连?") .setPositiveButton("是") .setNegativeButton("否") .setOnDialogButtonClickListener(object : diff --git a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt index e4d41e8..6e41430 100644 --- a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.detector.common.view +import android.app.Activity import android.content.ComponentName import android.content.Context import android.content.Intent @@ -15,6 +16,7 @@ import android.util.Log import android.view.KeyEvent import android.view.View +import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation @@ -112,15 +114,13 @@ private var ids = HashSet() private var freeTaskId: String? = null private var connectState = ConnectState.CLOSED - private var socketClient: SocketClient? = null private var serialPortService: SerialPortService? = null private var searchMarkerTimer: Timer? = null private var soundResourceId = 0 private var isExecuteTask = false - private var remoteHost = "" - private var remotePort = "" private var outStream: OutputStream? = null private lateinit var aMap: AMap + private lateinit var socketClient: SocketClient override fun initViewBinding(): ActivityMainBinding { return ActivityMainBinding.inflate(layoutInflater) @@ -151,12 +151,14 @@ soundResourceId = soundPool.load(this, R.raw.ring3, 1) + //连接千寻RTK服务器 + lifecycleScope.launch(Dispatchers.IO) { connectQianXunServer() } RtkLocationTool.getCurrentLocation(this) { if (connectState == ConnectState.SUCCESS) { //连接成功就发送千寻请求报文 val gga = it.convertToGPGGA() Log.d(kTag, gga) - socketClient?.sendData(gga) + socketClient.sendData(gga) } } @@ -282,7 +284,11 @@ 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> completionMarker() - 5 -> navigatePageTo() + 5 -> { + Intent(this@MainActivity, RtkConfigActivity::class.java).also { + rtkConfigLauncher.launch(it) + } + } } } }) @@ -467,6 +473,38 @@ } } + private val rtkConfigLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == Activity.RESULT_OK) { + lifecycleScope.launch(Dispatchers.IO) { + if (connectState == ConnectState.SUCCESS) { + socketClient.disconnect() + delay(3000) + } + + connectQianXunServer() + } + } + } + + private fun connectQianXunServer() { + //取缓存 + val remoteHost = SaveKeyValues.getValue( + LocaleConstant.RTK_SERVER, "203.107.45.154" + ) as String + val remotePort = SaveKeyValues.getValue( + LocaleConstant.RTK_PORT, "8003" + ) as String + + socketClient = SocketClient.Builder() + .setHostname(remoteHost) + .setPort(remotePort.toInt()) + .setTimeout(5000) + .setOnSocketListener(this) + .build() + socketClient.connect() + } + private fun uploadTask(taskId: String, taskCode: String, state: String) { if (isNetworkConnected()) { val userId = SaveKeyValues.getValue(LocaleConstant.USER_ID, "") as String @@ -889,30 +927,6 @@ } showLabelsOnMap() } - - //取缓存 - remoteHost = SaveKeyValues.getValue(LocaleConstant.RTK_SERVER, "203.107.45.154") as String - remotePort = SaveKeyValues.getValue(LocaleConstant.RTK_PORT, "8003") as String - - //连接千寻RTK服务器 - lifecycleScope.launch(Dispatchers.IO) { - if (socketClient != null) { - socketClient?.disconnect() - delay(3000) - } - - connectQianXunServer() - } - } - - private fun connectQianXunServer() { - socketClient = SocketClient.Builder() - .setHostname(remoteHost) - .setPort(remotePort.toInt()) - .setTimeout(5000) - .setOnSocketListener(this) - .build() - socketClient?.connect() } override fun onMessageResponse(data: ByteArray) { @@ -923,7 +937,6 @@ * 0d0a0d0a -> \r\n\r\n * */ val result = String(data, StandardCharsets.UTF_8) - Log.d(kTag, "onMessageResponse: $result") if (result.contains("ICY 200 OK")) { "高精度定位服务连接成功".show(this) } @@ -936,6 +949,7 @@ override fun onServiceConnectStatusChanged(status: ConnectState) { this.connectState = status + Log.d(kTag, "onServiceConnectStatusChanged: $status") if (connectState == ConnectState.SUCCESS) { //连接成功就发送千寻请求报文 val account = SaveKeyValues.getValue(LocaleConstant.ACK, "qxtmcr0087663") as String @@ -957,11 +971,11 @@ .toString() val byteBuf = Unpooled.wrappedBuffer(msg.toByteArray()) - socketClient?.sendData(byteBuf) - } else { + socketClient.sendData(byteBuf) + } else if (status == ConnectState.ERROR) { AlertControlDialog.Builder().setContext(context) .setTitle("温馨提示") - .setMessage("千寻定位服务已断开,谁否重连?") + .setMessage("千寻定位服务已断开,是否重连?") .setPositiveButton("是") .setNegativeButton("否") .setOnDialogButtonClickListener(object : diff --git a/app/src/main/java/com/casic/detector/common/view/RtkConfigActivity.kt b/app/src/main/java/com/casic/detector/common/view/RtkConfigActivity.kt index b51f072..06fff6a 100644 --- a/app/src/main/java/com/casic/detector/common/view/RtkConfigActivity.kt +++ b/app/src/main/java/com/casic/detector/common/view/RtkConfigActivity.kt @@ -1,5 +1,6 @@ package com.casic.detector.common.view +import android.content.Intent import android.os.Bundle import com.casic.detector.common.databinding.ActivityRtkConfigBinding import com.casic.detector.common.utils.LocaleConstant @@ -10,8 +11,6 @@ class RtkConfigActivity : KotlinBaseActivity() { - private val kTag = "RtkConfigActivity" - override fun initEvent() { binding.saveButton.setOnClickListener { val account = binding.accountView.text.toString().trim() @@ -43,7 +42,9 @@ SaveKeyValues.putValue(LocaleConstant.RTK_SERVER, ip) SaveKeyValues.putValue(LocaleConstant.RTK_PORT, port) - "差分定位服务器配置成功".show(this) + Intent().also { + setResult(RESULT_OK, it) + } finish() } }