diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index d62ab27..a54be3b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -8,7 +8,7 @@ import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -72,9 +72,9 @@ override fun initEvent() { binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index d62ab27..a54be3b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -8,7 +8,7 @@ import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -72,9 +72,9 @@ override fun initEvent() { binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt deleted file mode 100644 index 3423a07..0000000 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt +++ /dev/null @@ -1,160 +0,0 @@ -package com.casic.app.safetreecontroller.service - -import android.app.Service -import android.content.Intent -import android.os.Handler -import android.os.IBinder -import android.os.Message -import android.util.Log -import com.casic.app.safetreecontroller.extensions.handleGasConcentration -import com.casic.app.safetreecontroller.extensions.toHex -import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment -import com.casic.app.safetreecontroller.utils.CommandCreator -import com.casic.app.safetreecontroller.utils.LocaleConstant -import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener -import com.pengxh.kt.lite.utils.socket.tcp.TcpClient - -class SocketCommunicationService : Service(), OnTcpConnectStateListener, Handler.Callback { - - companion object { - var weakReferenceHandler: WeakReferenceHandler? = null - } - - private val kTag = "SocketService" - private val tcpClient by lazy { TcpClient(this) } - - override fun handleMessage(msg: Message): Boolean { - when (msg.what) { - LocaleConstant.OPEN_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) - } - - LocaleConstant.CLOSE_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) - } - - LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { - val threshold = msg.obj as Int - val thresholdCommand = CommandCreator.createThresholdCommand(threshold) - tcpClient.sendMessage(thresholdCommand) - } - - LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - } - return true - } - - /** - * 甲烷查询 - * */ - private val methaneRunnable = object : Runnable { - override fun run() { - tcpClient.sendMessage(CommandCreator.createMethaneCommand()) - // 每5s重复一次 - weakReferenceHandler?.postDelayed(this, 5 * 1000L) - } - } - - override fun onCreate() { - super.onCreate() - weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) - Log.d(kTag, "onCreate: SocketCommunicationService") - } - - override fun onConnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) - //定时查询甲烷浓度 - weakReferenceHandler?.post(methaneRunnable) - //查询一次激光芯片温度 - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - - override fun onDisconnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onConnectFailed() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onMessageReceived(bytes: ByteArray?) { - if (bytes == null) { - return - } - Log.d(kTag, bytes.contentToString()) - - /** - * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] - * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] - * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] - * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] - * */ - if (bytes.size < 6) { - Log.d(kTag, "onMessageReceived: 数据异常,长度不够") - return - } - - //取前6位解析设备编号 - val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") - - //取数据类型标志位,根据标志位解析不同的数据 - val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() - Log.d(kTag, "flag: $flag") - when (flag) { - "AA" -> { - //甲烷浓度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(7, bytes.size) - val concentration = dataArray.handleGasConcentration() - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE - message.obj = concentration - weakReferenceHandler.sendMessage(message) - } - } - - "BB" -> { - //激光状态 - if (bytes.size == 13) { - if (bytes[10].toInt() == 1) { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) - } else { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) - } - } - } - - "CC" -> { - //激光温度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(10, bytes.size) - val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE - message.obj = temperature - weakReferenceHandler.sendMessage(message) - } - } - } - } - - override fun onDestroy() { - super.onDestroy() - weakReferenceHandler?.removeCallbacks(methaneRunnable) - tcpClient.stop() - } - - override fun onBind(intent: Intent?): IBinder? { - return null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index d62ab27..a54be3b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -8,7 +8,7 @@ import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -72,9 +72,9 @@ override fun initEvent() { binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt deleted file mode 100644 index 3423a07..0000000 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt +++ /dev/null @@ -1,160 +0,0 @@ -package com.casic.app.safetreecontroller.service - -import android.app.Service -import android.content.Intent -import android.os.Handler -import android.os.IBinder -import android.os.Message -import android.util.Log -import com.casic.app.safetreecontroller.extensions.handleGasConcentration -import com.casic.app.safetreecontroller.extensions.toHex -import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment -import com.casic.app.safetreecontroller.utils.CommandCreator -import com.casic.app.safetreecontroller.utils.LocaleConstant -import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener -import com.pengxh.kt.lite.utils.socket.tcp.TcpClient - -class SocketCommunicationService : Service(), OnTcpConnectStateListener, Handler.Callback { - - companion object { - var weakReferenceHandler: WeakReferenceHandler? = null - } - - private val kTag = "SocketService" - private val tcpClient by lazy { TcpClient(this) } - - override fun handleMessage(msg: Message): Boolean { - when (msg.what) { - LocaleConstant.OPEN_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) - } - - LocaleConstant.CLOSE_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) - } - - LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { - val threshold = msg.obj as Int - val thresholdCommand = CommandCreator.createThresholdCommand(threshold) - tcpClient.sendMessage(thresholdCommand) - } - - LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - } - return true - } - - /** - * 甲烷查询 - * */ - private val methaneRunnable = object : Runnable { - override fun run() { - tcpClient.sendMessage(CommandCreator.createMethaneCommand()) - // 每5s重复一次 - weakReferenceHandler?.postDelayed(this, 5 * 1000L) - } - } - - override fun onCreate() { - super.onCreate() - weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) - Log.d(kTag, "onCreate: SocketCommunicationService") - } - - override fun onConnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) - //定时查询甲烷浓度 - weakReferenceHandler?.post(methaneRunnable) - //查询一次激光芯片温度 - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - - override fun onDisconnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onConnectFailed() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onMessageReceived(bytes: ByteArray?) { - if (bytes == null) { - return - } - Log.d(kTag, bytes.contentToString()) - - /** - * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] - * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] - * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] - * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] - * */ - if (bytes.size < 6) { - Log.d(kTag, "onMessageReceived: 数据异常,长度不够") - return - } - - //取前6位解析设备编号 - val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") - - //取数据类型标志位,根据标志位解析不同的数据 - val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() - Log.d(kTag, "flag: $flag") - when (flag) { - "AA" -> { - //甲烷浓度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(7, bytes.size) - val concentration = dataArray.handleGasConcentration() - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE - message.obj = concentration - weakReferenceHandler.sendMessage(message) - } - } - - "BB" -> { - //激光状态 - if (bytes.size == 13) { - if (bytes[10].toInt() == 1) { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) - } else { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) - } - } - } - - "CC" -> { - //激光温度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(10, bytes.size) - val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE - message.obj = temperature - weakReferenceHandler.sendMessage(message) - } - } - } - } - - override fun onDestroy() { - super.onDestroy() - weakReferenceHandler?.removeCallbacks(methaneRunnable) - tcpClient.stop() - } - - override fun onBind(intent: Intent?): IBinder? { - return null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt new file mode 100644 index 0000000..23577c7 --- /dev/null +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -0,0 +1,160 @@ +package com.casic.app.safetreecontroller.service + +import android.app.Service +import android.content.Intent +import android.os.Handler +import android.os.IBinder +import android.os.Message +import android.util.Log +import com.casic.app.safetreecontroller.extensions.handleGasConcentration +import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment +import com.casic.app.safetreecontroller.utils.CommandCreator +import com.casic.app.safetreecontroller.utils.LocaleConstant +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener +import com.pengxh.kt.lite.utils.socket.tcp.TcpClient + +class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } + + private val kTag = "SocketService" + private val tcpClient by lazy { TcpClient(this) } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + LocaleConstant.OPEN_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) + } + + LocaleConstant.CLOSE_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) + } + + LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { + val threshold = msg.obj as Int + val thresholdCommand = CommandCreator.createThresholdCommand(threshold) + tcpClient.sendMessage(thresholdCommand) + } + + LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + } + return true + } + + /** + * 甲烷查询 + * */ + private val methaneRunnable = object : Runnable { + override fun run() { + tcpClient.sendMessage(CommandCreator.createMethaneCommand()) + // 每5s重复一次 + weakReferenceHandler?.postDelayed(this, 5 * 1000L) + } + } + + override fun onCreate() { + super.onCreate() + weakReferenceHandler = WeakReferenceHandler(this) + tcpClient.start("192.168.10.51", 333) + Log.d(kTag, "onCreate: SocketConnectionService") + } + + override fun onConnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) + //定时查询甲烷浓度 + weakReferenceHandler?.post(methaneRunnable) + //查询一次激光芯片温度 + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + + override fun onDisconnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onConnectFailed() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onMessageReceived(bytes: ByteArray?) { + if (bytes == null) { + return + } + Log.d(kTag, bytes.contentToString()) + + /** + * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] + * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] + * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] + * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] + * */ + if (bytes.size < 6) { + Log.d(kTag, "onMessageReceived: 数据异常,长度不够") + return + } + + //取前6位解析设备编号 + val deviceCode = bytes.take(6).toByteArray().toHex() + Log.d(kTag, "deviceCode: $deviceCode") + + //取数据类型标志位,根据标志位解析不同的数据 + val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() + Log.d(kTag, "flag: $flag") + when (flag) { + "AA" -> { + //甲烷浓度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(7, bytes.size) + val concentration = dataArray.handleGasConcentration() + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE + message.obj = concentration + weakReferenceHandler.sendMessage(message) + } + } + + "BB" -> { + //激光状态 + if (bytes.size == 13) { + if (bytes[10].toInt() == 1) { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) + } else { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) + } + } + } + + "CC" -> { + //激光温度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(10, bytes.size) + val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE + message.obj = temperature + weakReferenceHandler.sendMessage(message) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + weakReferenceHandler?.removeCallbacks(methaneRunnable) + tcpClient.stop() + } + + override fun onBind(intent: Intent?): IBinder? { + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index d62ab27..a54be3b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -8,7 +8,7 @@ import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -72,9 +72,9 @@ override fun initEvent() { binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt deleted file mode 100644 index 3423a07..0000000 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt +++ /dev/null @@ -1,160 +0,0 @@ -package com.casic.app.safetreecontroller.service - -import android.app.Service -import android.content.Intent -import android.os.Handler -import android.os.IBinder -import android.os.Message -import android.util.Log -import com.casic.app.safetreecontroller.extensions.handleGasConcentration -import com.casic.app.safetreecontroller.extensions.toHex -import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment -import com.casic.app.safetreecontroller.utils.CommandCreator -import com.casic.app.safetreecontroller.utils.LocaleConstant -import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener -import com.pengxh.kt.lite.utils.socket.tcp.TcpClient - -class SocketCommunicationService : Service(), OnTcpConnectStateListener, Handler.Callback { - - companion object { - var weakReferenceHandler: WeakReferenceHandler? = null - } - - private val kTag = "SocketService" - private val tcpClient by lazy { TcpClient(this) } - - override fun handleMessage(msg: Message): Boolean { - when (msg.what) { - LocaleConstant.OPEN_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) - } - - LocaleConstant.CLOSE_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) - } - - LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { - val threshold = msg.obj as Int - val thresholdCommand = CommandCreator.createThresholdCommand(threshold) - tcpClient.sendMessage(thresholdCommand) - } - - LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - } - return true - } - - /** - * 甲烷查询 - * */ - private val methaneRunnable = object : Runnable { - override fun run() { - tcpClient.sendMessage(CommandCreator.createMethaneCommand()) - // 每5s重复一次 - weakReferenceHandler?.postDelayed(this, 5 * 1000L) - } - } - - override fun onCreate() { - super.onCreate() - weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) - Log.d(kTag, "onCreate: SocketCommunicationService") - } - - override fun onConnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) - //定时查询甲烷浓度 - weakReferenceHandler?.post(methaneRunnable) - //查询一次激光芯片温度 - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - - override fun onDisconnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onConnectFailed() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onMessageReceived(bytes: ByteArray?) { - if (bytes == null) { - return - } - Log.d(kTag, bytes.contentToString()) - - /** - * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] - * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] - * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] - * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] - * */ - if (bytes.size < 6) { - Log.d(kTag, "onMessageReceived: 数据异常,长度不够") - return - } - - //取前6位解析设备编号 - val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") - - //取数据类型标志位,根据标志位解析不同的数据 - val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() - Log.d(kTag, "flag: $flag") - when (flag) { - "AA" -> { - //甲烷浓度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(7, bytes.size) - val concentration = dataArray.handleGasConcentration() - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE - message.obj = concentration - weakReferenceHandler.sendMessage(message) - } - } - - "BB" -> { - //激光状态 - if (bytes.size == 13) { - if (bytes[10].toInt() == 1) { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) - } else { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) - } - } - } - - "CC" -> { - //激光温度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(10, bytes.size) - val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE - message.obj = temperature - weakReferenceHandler.sendMessage(message) - } - } - } - } - - override fun onDestroy() { - super.onDestroy() - weakReferenceHandler?.removeCallbacks(methaneRunnable) - tcpClient.stop() - } - - override fun onBind(intent: Intent?): IBinder? { - return null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt new file mode 100644 index 0000000..23577c7 --- /dev/null +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -0,0 +1,160 @@ +package com.casic.app.safetreecontroller.service + +import android.app.Service +import android.content.Intent +import android.os.Handler +import android.os.IBinder +import android.os.Message +import android.util.Log +import com.casic.app.safetreecontroller.extensions.handleGasConcentration +import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment +import com.casic.app.safetreecontroller.utils.CommandCreator +import com.casic.app.safetreecontroller.utils.LocaleConstant +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener +import com.pengxh.kt.lite.utils.socket.tcp.TcpClient + +class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } + + private val kTag = "SocketService" + private val tcpClient by lazy { TcpClient(this) } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + LocaleConstant.OPEN_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) + } + + LocaleConstant.CLOSE_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) + } + + LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { + val threshold = msg.obj as Int + val thresholdCommand = CommandCreator.createThresholdCommand(threshold) + tcpClient.sendMessage(thresholdCommand) + } + + LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + } + return true + } + + /** + * 甲烷查询 + * */ + private val methaneRunnable = object : Runnable { + override fun run() { + tcpClient.sendMessage(CommandCreator.createMethaneCommand()) + // 每5s重复一次 + weakReferenceHandler?.postDelayed(this, 5 * 1000L) + } + } + + override fun onCreate() { + super.onCreate() + weakReferenceHandler = WeakReferenceHandler(this) + tcpClient.start("192.168.10.51", 333) + Log.d(kTag, "onCreate: SocketConnectionService") + } + + override fun onConnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) + //定时查询甲烷浓度 + weakReferenceHandler?.post(methaneRunnable) + //查询一次激光芯片温度 + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + + override fun onDisconnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onConnectFailed() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onMessageReceived(bytes: ByteArray?) { + if (bytes == null) { + return + } + Log.d(kTag, bytes.contentToString()) + + /** + * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] + * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] + * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] + * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] + * */ + if (bytes.size < 6) { + Log.d(kTag, "onMessageReceived: 数据异常,长度不够") + return + } + + //取前6位解析设备编号 + val deviceCode = bytes.take(6).toByteArray().toHex() + Log.d(kTag, "deviceCode: $deviceCode") + + //取数据类型标志位,根据标志位解析不同的数据 + val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() + Log.d(kTag, "flag: $flag") + when (flag) { + "AA" -> { + //甲烷浓度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(7, bytes.size) + val concentration = dataArray.handleGasConcentration() + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE + message.obj = concentration + weakReferenceHandler.sendMessage(message) + } + } + + "BB" -> { + //激光状态 + if (bytes.size == 13) { + if (bytes[10].toInt() == 1) { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) + } else { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) + } + } + } + + "CC" -> { + //激光温度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(10, bytes.size) + val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE + message.obj = temperature + weakReferenceHandler.sendMessage(message) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + weakReferenceHandler?.removeCallbacks(methaneRunnable) + tcpClient.stop() + } + + override fun onBind(intent: Intent?): IBinder? { + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt index d678e6e..b2593ea 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt @@ -17,7 +17,7 @@ import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment import com.casic.app.safetreecontroller.fragments.VoiceSettingsFragment import com.casic.app.safetreecontroller.service.ForegroundRunningService -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -58,7 +58,7 @@ LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - startService(Intent(this, SocketCommunicationService::class.java)) + startService(Intent(this, SocketConnectionService::class.java)) startService(Intent(this, ForegroundRunningService::class.java)) weakReferenceHandler = WeakReferenceHandler(this) diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index d62ab27..a54be3b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -8,7 +8,7 @@ import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -72,9 +72,9 @@ override fun initEvent() { binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt deleted file mode 100644 index 3423a07..0000000 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt +++ /dev/null @@ -1,160 +0,0 @@ -package com.casic.app.safetreecontroller.service - -import android.app.Service -import android.content.Intent -import android.os.Handler -import android.os.IBinder -import android.os.Message -import android.util.Log -import com.casic.app.safetreecontroller.extensions.handleGasConcentration -import com.casic.app.safetreecontroller.extensions.toHex -import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment -import com.casic.app.safetreecontroller.utils.CommandCreator -import com.casic.app.safetreecontroller.utils.LocaleConstant -import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener -import com.pengxh.kt.lite.utils.socket.tcp.TcpClient - -class SocketCommunicationService : Service(), OnTcpConnectStateListener, Handler.Callback { - - companion object { - var weakReferenceHandler: WeakReferenceHandler? = null - } - - private val kTag = "SocketService" - private val tcpClient by lazy { TcpClient(this) } - - override fun handleMessage(msg: Message): Boolean { - when (msg.what) { - LocaleConstant.OPEN_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) - } - - LocaleConstant.CLOSE_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) - } - - LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { - val threshold = msg.obj as Int - val thresholdCommand = CommandCreator.createThresholdCommand(threshold) - tcpClient.sendMessage(thresholdCommand) - } - - LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - } - return true - } - - /** - * 甲烷查询 - * */ - private val methaneRunnable = object : Runnable { - override fun run() { - tcpClient.sendMessage(CommandCreator.createMethaneCommand()) - // 每5s重复一次 - weakReferenceHandler?.postDelayed(this, 5 * 1000L) - } - } - - override fun onCreate() { - super.onCreate() - weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) - Log.d(kTag, "onCreate: SocketCommunicationService") - } - - override fun onConnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) - //定时查询甲烷浓度 - weakReferenceHandler?.post(methaneRunnable) - //查询一次激光芯片温度 - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - - override fun onDisconnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onConnectFailed() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onMessageReceived(bytes: ByteArray?) { - if (bytes == null) { - return - } - Log.d(kTag, bytes.contentToString()) - - /** - * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] - * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] - * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] - * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] - * */ - if (bytes.size < 6) { - Log.d(kTag, "onMessageReceived: 数据异常,长度不够") - return - } - - //取前6位解析设备编号 - val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") - - //取数据类型标志位,根据标志位解析不同的数据 - val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() - Log.d(kTag, "flag: $flag") - when (flag) { - "AA" -> { - //甲烷浓度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(7, bytes.size) - val concentration = dataArray.handleGasConcentration() - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE - message.obj = concentration - weakReferenceHandler.sendMessage(message) - } - } - - "BB" -> { - //激光状态 - if (bytes.size == 13) { - if (bytes[10].toInt() == 1) { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) - } else { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) - } - } - } - - "CC" -> { - //激光温度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(10, bytes.size) - val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE - message.obj = temperature - weakReferenceHandler.sendMessage(message) - } - } - } - } - - override fun onDestroy() { - super.onDestroy() - weakReferenceHandler?.removeCallbacks(methaneRunnable) - tcpClient.stop() - } - - override fun onBind(intent: Intent?): IBinder? { - return null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt new file mode 100644 index 0000000..23577c7 --- /dev/null +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -0,0 +1,160 @@ +package com.casic.app.safetreecontroller.service + +import android.app.Service +import android.content.Intent +import android.os.Handler +import android.os.IBinder +import android.os.Message +import android.util.Log +import com.casic.app.safetreecontroller.extensions.handleGasConcentration +import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment +import com.casic.app.safetreecontroller.utils.CommandCreator +import com.casic.app.safetreecontroller.utils.LocaleConstant +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener +import com.pengxh.kt.lite.utils.socket.tcp.TcpClient + +class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } + + private val kTag = "SocketService" + private val tcpClient by lazy { TcpClient(this) } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + LocaleConstant.OPEN_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) + } + + LocaleConstant.CLOSE_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) + } + + LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { + val threshold = msg.obj as Int + val thresholdCommand = CommandCreator.createThresholdCommand(threshold) + tcpClient.sendMessage(thresholdCommand) + } + + LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + } + return true + } + + /** + * 甲烷查询 + * */ + private val methaneRunnable = object : Runnable { + override fun run() { + tcpClient.sendMessage(CommandCreator.createMethaneCommand()) + // 每5s重复一次 + weakReferenceHandler?.postDelayed(this, 5 * 1000L) + } + } + + override fun onCreate() { + super.onCreate() + weakReferenceHandler = WeakReferenceHandler(this) + tcpClient.start("192.168.10.51", 333) + Log.d(kTag, "onCreate: SocketConnectionService") + } + + override fun onConnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) + //定时查询甲烷浓度 + weakReferenceHandler?.post(methaneRunnable) + //查询一次激光芯片温度 + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + + override fun onDisconnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onConnectFailed() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onMessageReceived(bytes: ByteArray?) { + if (bytes == null) { + return + } + Log.d(kTag, bytes.contentToString()) + + /** + * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] + * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] + * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] + * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] + * */ + if (bytes.size < 6) { + Log.d(kTag, "onMessageReceived: 数据异常,长度不够") + return + } + + //取前6位解析设备编号 + val deviceCode = bytes.take(6).toByteArray().toHex() + Log.d(kTag, "deviceCode: $deviceCode") + + //取数据类型标志位,根据标志位解析不同的数据 + val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() + Log.d(kTag, "flag: $flag") + when (flag) { + "AA" -> { + //甲烷浓度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(7, bytes.size) + val concentration = dataArray.handleGasConcentration() + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE + message.obj = concentration + weakReferenceHandler.sendMessage(message) + } + } + + "BB" -> { + //激光状态 + if (bytes.size == 13) { + if (bytes[10].toInt() == 1) { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) + } else { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) + } + } + } + + "CC" -> { + //激光温度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(10, bytes.size) + val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE + message.obj = temperature + weakReferenceHandler.sendMessage(message) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + weakReferenceHandler?.removeCallbacks(methaneRunnable) + tcpClient.stop() + } + + override fun onBind(intent: Intent?): IBinder? { + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt index d678e6e..b2593ea 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt @@ -17,7 +17,7 @@ import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment import com.casic.app.safetreecontroller.fragments.VoiceSettingsFragment import com.casic.app.safetreecontroller.service.ForegroundRunningService -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -58,7 +58,7 @@ LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - startService(Intent(this, SocketCommunicationService::class.java)) + startService(Intent(this, SocketConnectionService::class.java)) startService(Intent(this, ForegroundRunningService::class.java)) weakReferenceHandler = WeakReferenceHandler(this) diff --git a/app/src/main/res/drawable/ic_audio.xml b/app/src/main/res/drawable/ic_audio.xml index be021b2..dc034d8 100644 --- a/app/src/main/res/drawable/ic_audio.xml +++ b/app/src/main/res/drawable/ic_audio.xml @@ -1,6 +1,6 @@ if (checkedId == R.id.openRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.OPEN_METHANE_CODE) } else if (checkedId == R.id.closeRadioButton) { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.CLOSE_METHANE_CODE) } } @@ -87,8 +87,8 @@ } SaveKeyValues.putValue(LocaleConstant.METHANE_DEFAULT_VALUE, threshold) - val weakReferenceHandler = - SocketCommunicationService.weakReferenceHandler ?: return@setOnClickListener + val weakReferenceHandler = SocketConnectionService.weakReferenceHandler + ?: return@setOnClickListener val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.UPDATE_GAS_THRESHOLD_CODE message.obj = threshold @@ -96,7 +96,7 @@ } binding.queryCpuTemperatureButton.setOnClickListener { - SocketCommunicationService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt deleted file mode 100644 index 3423a07..0000000 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketCommunicationService.kt +++ /dev/null @@ -1,160 +0,0 @@ -package com.casic.app.safetreecontroller.service - -import android.app.Service -import android.content.Intent -import android.os.Handler -import android.os.IBinder -import android.os.Message -import android.util.Log -import com.casic.app.safetreecontroller.extensions.handleGasConcentration -import com.casic.app.safetreecontroller.extensions.toHex -import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment -import com.casic.app.safetreecontroller.utils.CommandCreator -import com.casic.app.safetreecontroller.utils.LocaleConstant -import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener -import com.pengxh.kt.lite.utils.socket.tcp.TcpClient - -class SocketCommunicationService : Service(), OnTcpConnectStateListener, Handler.Callback { - - companion object { - var weakReferenceHandler: WeakReferenceHandler? = null - } - - private val kTag = "SocketService" - private val tcpClient by lazy { TcpClient(this) } - - override fun handleMessage(msg: Message): Boolean { - when (msg.what) { - LocaleConstant.OPEN_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) - } - - LocaleConstant.CLOSE_METHANE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) - } - - LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { - val threshold = msg.obj as Int - val thresholdCommand = CommandCreator.createThresholdCommand(threshold) - tcpClient.sendMessage(thresholdCommand) - } - - LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - } - return true - } - - /** - * 甲烷查询 - * */ - private val methaneRunnable = object : Runnable { - override fun run() { - tcpClient.sendMessage(CommandCreator.createMethaneCommand()) - // 每5s重复一次 - weakReferenceHandler?.postDelayed(this, 5 * 1000L) - } - } - - override fun onCreate() { - super.onCreate() - weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) - Log.d(kTag, "onCreate: SocketCommunicationService") - } - - override fun onConnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) - //定时查询甲烷浓度 - weakReferenceHandler?.post(methaneRunnable) - //查询一次激光芯片温度 - tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) - } - - override fun onDisconnected() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onConnectFailed() { - ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) - weakReferenceHandler?.removeCallbacks(methaneRunnable) - } - - override fun onMessageReceived(bytes: ByteArray?) { - if (bytes == null) { - return - } - Log.d(kTag, bytes.contentToString()) - - /** - * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] - * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] - * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] - * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] - * */ - if (bytes.size < 6) { - Log.d(kTag, "onMessageReceived: 数据异常,长度不够") - return - } - - //取前6位解析设备编号 - val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") - - //取数据类型标志位,根据标志位解析不同的数据 - val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() - Log.d(kTag, "flag: $flag") - when (flag) { - "AA" -> { - //甲烷浓度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(7, bytes.size) - val concentration = dataArray.handleGasConcentration() - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE - message.obj = concentration - weakReferenceHandler.sendMessage(message) - } - } - - "BB" -> { - //激光状态 - if (bytes.size == 13) { - if (bytes[10].toInt() == 1) { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) - } else { - SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) - } - } - } - - "CC" -> { - //激光温度 - if (bytes.size == 13) { - val dataArray = bytes.copyOfRange(10, bytes.size) - val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f - val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE - message.obj = temperature - weakReferenceHandler.sendMessage(message) - } - } - } - } - - override fun onDestroy() { - super.onDestroy() - weakReferenceHandler?.removeCallbacks(methaneRunnable) - tcpClient.stop() - } - - override fun onBind(intent: Intent?): IBinder? { - return null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt new file mode 100644 index 0000000..23577c7 --- /dev/null +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -0,0 +1,160 @@ +package com.casic.app.safetreecontroller.service + +import android.app.Service +import android.content.Intent +import android.os.Handler +import android.os.IBinder +import android.os.Message +import android.util.Log +import com.casic.app.safetreecontroller.extensions.handleGasConcentration +import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment +import com.casic.app.safetreecontroller.utils.CommandCreator +import com.casic.app.safetreecontroller.utils.LocaleConstant +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener +import com.pengxh.kt.lite.utils.socket.tcp.TcpClient + +class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } + + private val kTag = "SocketService" + private val tcpClient by lazy { TcpClient(this) } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + LocaleConstant.OPEN_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createOpenLightCommand()) + } + + LocaleConstant.CLOSE_METHANE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCloseLightCommand()) + } + + LocaleConstant.UPDATE_GAS_THRESHOLD_CODE -> { + val threshold = msg.obj as Int + val thresholdCommand = CommandCreator.createThresholdCommand(threshold) + tcpClient.sendMessage(thresholdCommand) + } + + LocaleConstant.QUERY_CPU_TEMPERATURE_CODE -> { + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + } + return true + } + + /** + * 甲烷查询 + * */ + private val methaneRunnable = object : Runnable { + override fun run() { + tcpClient.sendMessage(CommandCreator.createMethaneCommand()) + // 每5s重复一次 + weakReferenceHandler?.postDelayed(this, 5 * 1000L) + } + } + + override fun onCreate() { + super.onCreate() + weakReferenceHandler = WeakReferenceHandler(this) + tcpClient.start("192.168.10.51", 333) + Log.d(kTag, "onCreate: SocketConnectionService") + } + + override fun onConnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501) + //定时查询甲烷浓度 + weakReferenceHandler?.post(methaneRunnable) + //查询一次激光芯片温度 + tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand()) + } + + override fun onDisconnected() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110502) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onConnectFailed() { + ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110503) + weakReferenceHandler?.removeCallbacks(methaneRunnable) + } + + override fun onMessageReceived(bytes: ByteArray?) { + if (bytes == null) { + return + } + Log.d(kTag, bytes.contentToString()) + + /** + * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109] + * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110] + * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14] + * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8] + * */ + if (bytes.size < 6) { + Log.d(kTag, "onMessageReceived: 数据异常,长度不够") + return + } + + //取前6位解析设备编号 + val deviceCode = bytes.take(6).toByteArray().toHex() + Log.d(kTag, "deviceCode: $deviceCode") + + //取数据类型标志位,根据标志位解析不同的数据 + val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() + Log.d(kTag, "flag: $flag") + when (flag) { + "AA" -> { + //甲烷浓度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(7, bytes.size) + val concentration = dataArray.handleGasConcentration() + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_METHANE_RESPONSE_CODE + message.obj = concentration + weakReferenceHandler.sendMessage(message) + } + } + + "BB" -> { + //激光状态 + if (bytes.size == 13) { + if (bytes[10].toInt() == 1) { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, true) + } else { + SaveKeyValues.putValue(LocaleConstant.OPEN_METHANE, false) + } + } + } + + "CC" -> { + //激光温度 + if (bytes.size == 13) { + val dataArray = bytes.copyOfRange(10, bytes.size) + val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f + val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE + message.obj = temperature + weakReferenceHandler.sendMessage(message) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + weakReferenceHandler?.removeCallbacks(methaneRunnable) + tcpClient.stop() + } + + override fun onBind(intent: Intent?): IBinder? { + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt index d678e6e..b2593ea 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/view/MainActivity.kt @@ -17,7 +17,7 @@ import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment import com.casic.app.safetreecontroller.fragments.VoiceSettingsFragment import com.casic.app.safetreecontroller.service.ForegroundRunningService -import com.casic.app.safetreecontroller.service.SocketCommunicationService +import com.casic.app.safetreecontroller.service.SocketConnectionService import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -58,7 +58,7 @@ LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - startService(Intent(this, SocketCommunicationService::class.java)) + startService(Intent(this, SocketConnectionService::class.java)) startService(Intent(this, ForegroundRunningService::class.java)) weakReferenceHandler = WeakReferenceHandler(this) diff --git a/app/src/main/res/drawable/ic_audio.xml b/app/src/main/res/drawable/ic_audio.xml index be021b2..dc034d8 100644 --- a/app/src/main/res/drawable/ic_audio.xml +++ b/app/src/main/res/drawable/ic_audio.xml @@ -1,6 +1,6 @@ - + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + +