diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 5ae40fb..e22082b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -55,4 +55,5 @@ const val METHANE_DEFAULT_VALUE_KEY = "Key_7" const val CURRENT_VOICE_VALUE_KEY = "Key_8" const val SAFE_TREE_CAMERA_IP_KEY = "Key_9" + const val SAFE_TREE_SOCKET_IP_KEY = "Key_10" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 5ae40fb..e22082b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -55,4 +55,5 @@ const val METHANE_DEFAULT_VALUE_KEY = "Key_7" const val CURRENT_VOICE_VALUE_KEY = "Key_8" const val SAFE_TREE_CAMERA_IP_KEY = "Key_9" + const val SAFE_TREE_SOCKET_IP_KEY = "Key_10" } \ 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 e77485c..bc95f3b 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 @@ -10,6 +10,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.AppCompatEditText import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.adapter.TabPageViewAdapter import com.casic.app.safetreecontroller.databinding.ActivityMainBinding @@ -23,11 +24,16 @@ import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import pub.devrel.easypermissions.EasyPermissions class MainActivity : KotlinBaseActivity(), Handler.Callback, @@ -40,6 +46,7 @@ private val kTag = "MainActivity" private val fragmentPages by lazy { ArrayList() } private val pageTitles = arrayOf("相机控制", "激光监测", "语音设置", "基础配置") + private val options = arrayListOf("修改安全树视频相机IP地址", "修改安全树数据通信IP地址") private var clickTime: Long = 0 init { @@ -110,26 +117,75 @@ } override fun onRightClick() { - AlertDialog.Builder(this@MainActivity) - .setTitle(getString(R.string.app_name)) - .setIcon(R.mipmap.ic_launcher) - .setView(R.layout.dialog_input_ip) - .setNegativeButton("取消") { _, _ -> } - .setPositiveButton("确定") { dialog, _ -> - val inputView = (dialog as AlertDialog).findViewById( - R.id.inputView - ) - val value = inputView?.text.toString() - if (value.isNotBlank()) { - SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) - } else { - "什么都还没输入呢!".show(this@MainActivity) + BottomActionSheet.Builder() + .setContext(this@MainActivity) + .setActionItemTitle(options) + .setItemTextColor(R.color.mainThemeColor.convertColor(this@MainActivity)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> modifyCameraIp() + 1 -> modifySocketIp() + } } - }.create().show() + }).build().show() } }) } + /** + * rtsp流IP地址,默认是192.168.10.137 + * */ + private fun modifyCameraIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_camera_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + + /** + * 板子tcp通信IP地址,默认是192.168.10.51 + * */ + private fun modifySocketIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_socket_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, value) + //设置通信IP之后需要重启服务 + lifecycleScope.launch(Dispatchers.IO) { + stopService(Intent(this@MainActivity, SocketConnectionService::class.java)) + + delay(1000) + + startService(Intent(this@MainActivity, SocketConnectionService::class.java)) + } + "安全树数据通信IP地址已更改,请注意切换网络".show(this) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 5ae40fb..e22082b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -55,4 +55,5 @@ const val METHANE_DEFAULT_VALUE_KEY = "Key_7" const val CURRENT_VOICE_VALUE_KEY = "Key_8" const val SAFE_TREE_CAMERA_IP_KEY = "Key_9" + const val SAFE_TREE_SOCKET_IP_KEY = "Key_10" } \ 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 e77485c..bc95f3b 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 @@ -10,6 +10,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.AppCompatEditText import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.adapter.TabPageViewAdapter import com.casic.app.safetreecontroller.databinding.ActivityMainBinding @@ -23,11 +24,16 @@ import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import pub.devrel.easypermissions.EasyPermissions class MainActivity : KotlinBaseActivity(), Handler.Callback, @@ -40,6 +46,7 @@ private val kTag = "MainActivity" private val fragmentPages by lazy { ArrayList() } private val pageTitles = arrayOf("相机控制", "激光监测", "语音设置", "基础配置") + private val options = arrayListOf("修改安全树视频相机IP地址", "修改安全树数据通信IP地址") private var clickTime: Long = 0 init { @@ -110,26 +117,75 @@ } override fun onRightClick() { - AlertDialog.Builder(this@MainActivity) - .setTitle(getString(R.string.app_name)) - .setIcon(R.mipmap.ic_launcher) - .setView(R.layout.dialog_input_ip) - .setNegativeButton("取消") { _, _ -> } - .setPositiveButton("确定") { dialog, _ -> - val inputView = (dialog as AlertDialog).findViewById( - R.id.inputView - ) - val value = inputView?.text.toString() - if (value.isNotBlank()) { - SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) - } else { - "什么都还没输入呢!".show(this@MainActivity) + BottomActionSheet.Builder() + .setContext(this@MainActivity) + .setActionItemTitle(options) + .setItemTextColor(R.color.mainThemeColor.convertColor(this@MainActivity)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> modifyCameraIp() + 1 -> modifySocketIp() + } } - }.create().show() + }).build().show() } }) } + /** + * rtsp流IP地址,默认是192.168.10.137 + * */ + private fun modifyCameraIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_camera_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + + /** + * 板子tcp通信IP地址,默认是192.168.10.51 + * */ + private fun modifySocketIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_socket_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, value) + //设置通信IP之后需要重启服务 + lifecycleScope.launch(Dispatchers.IO) { + stopService(Intent(this@MainActivity, SocketConnectionService::class.java)) + + delay(1000) + + startService(Intent(this@MainActivity, SocketConnectionService::class.java)) + } + "安全树数据通信IP地址已更改,请注意切换网络".show(this) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { diff --git a/app/src/main/res/layout/dialog_input_camera_ip.xml b/app/src/main/res/layout/dialog_input_camera_ip.xml new file mode 100644 index 0000000..fbe2a59 --- /dev/null +++ b/app/src/main/res/layout/dialog_input_camera_ip.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 5ae40fb..e22082b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -55,4 +55,5 @@ const val METHANE_DEFAULT_VALUE_KEY = "Key_7" const val CURRENT_VOICE_VALUE_KEY = "Key_8" const val SAFE_TREE_CAMERA_IP_KEY = "Key_9" + const val SAFE_TREE_SOCKET_IP_KEY = "Key_10" } \ 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 e77485c..bc95f3b 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 @@ -10,6 +10,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.AppCompatEditText import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.adapter.TabPageViewAdapter import com.casic.app.safetreecontroller.databinding.ActivityMainBinding @@ -23,11 +24,16 @@ import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import pub.devrel.easypermissions.EasyPermissions class MainActivity : KotlinBaseActivity(), Handler.Callback, @@ -40,6 +46,7 @@ private val kTag = "MainActivity" private val fragmentPages by lazy { ArrayList() } private val pageTitles = arrayOf("相机控制", "激光监测", "语音设置", "基础配置") + private val options = arrayListOf("修改安全树视频相机IP地址", "修改安全树数据通信IP地址") private var clickTime: Long = 0 init { @@ -110,26 +117,75 @@ } override fun onRightClick() { - AlertDialog.Builder(this@MainActivity) - .setTitle(getString(R.string.app_name)) - .setIcon(R.mipmap.ic_launcher) - .setView(R.layout.dialog_input_ip) - .setNegativeButton("取消") { _, _ -> } - .setPositiveButton("确定") { dialog, _ -> - val inputView = (dialog as AlertDialog).findViewById( - R.id.inputView - ) - val value = inputView?.text.toString() - if (value.isNotBlank()) { - SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) - } else { - "什么都还没输入呢!".show(this@MainActivity) + BottomActionSheet.Builder() + .setContext(this@MainActivity) + .setActionItemTitle(options) + .setItemTextColor(R.color.mainThemeColor.convertColor(this@MainActivity)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> modifyCameraIp() + 1 -> modifySocketIp() + } } - }.create().show() + }).build().show() } }) } + /** + * rtsp流IP地址,默认是192.168.10.137 + * */ + private fun modifyCameraIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_camera_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + + /** + * 板子tcp通信IP地址,默认是192.168.10.51 + * */ + private fun modifySocketIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_socket_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, value) + //设置通信IP之后需要重启服务 + lifecycleScope.launch(Dispatchers.IO) { + stopService(Intent(this@MainActivity, SocketConnectionService::class.java)) + + delay(1000) + + startService(Intent(this@MainActivity, SocketConnectionService::class.java)) + } + "安全树数据通信IP地址已更改,请注意切换网络".show(this) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { diff --git a/app/src/main/res/layout/dialog_input_camera_ip.xml b/app/src/main/res/layout/dialog_input_camera_ip.xml new file mode 100644 index 0000000..fbe2a59 --- /dev/null +++ b/app/src/main/res/layout/dialog_input_camera_ip.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_ip.xml b/app/src/main/res/layout/dialog_input_ip.xml deleted file mode 100644 index fbe2a59..0000000 --- a/app/src/main/res/layout/dialog_input_ip.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 7403f5e..2421ecd 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -159,10 +159,10 @@ val state = msg.obj as String if (state == "0") { isUseWithAI = true - binding.serverLayout.visibility = View.VISIBLE + binding.serverLayout.visibility = View.GONE } else { isUseWithAI = false - binding.serverLayout.visibility = View.GONE + binding.serverLayout.visibility = View.VISIBLE } } 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 index 5f5e3a8..039a116 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -122,7 +122,11 @@ override fun onCreate() { super.onCreate() weakReferenceHandler = WeakReferenceHandler(this) - tcpClient.start("192.168.10.51", 333) + val socketIp = SaveKeyValues.getValue( + LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, "192.168.10.51" + ) as String + tcpClient.start(socketIp, 333) + Log.d(kTag, "onCreate: SocketConnectionService") } override fun onConnected() { @@ -336,6 +340,7 @@ super.onDestroy() weakReferenceHandler?.removeCallbacks(methaneRunnable) tcpClient.stop() + Log.d(kTag, "onDestroy: SocketConnectionService") } override fun onBind(intent: Intent?): IBinder? { diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 5ae40fb..e22082b 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -55,4 +55,5 @@ const val METHANE_DEFAULT_VALUE_KEY = "Key_7" const val CURRENT_VOICE_VALUE_KEY = "Key_8" const val SAFE_TREE_CAMERA_IP_KEY = "Key_9" + const val SAFE_TREE_SOCKET_IP_KEY = "Key_10" } \ 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 e77485c..bc95f3b 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 @@ -10,6 +10,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.AppCompatEditText import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.adapter.TabPageViewAdapter import com.casic.app.safetreecontroller.databinding.ActivityMainBinding @@ -23,11 +24,16 @@ import com.casic.app.safetreecontroller.utils.LocaleConstant import com.casic.app.safetreecontroller.utils.VideoPlayerManager import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import pub.devrel.easypermissions.EasyPermissions class MainActivity : KotlinBaseActivity(), Handler.Callback, @@ -40,6 +46,7 @@ private val kTag = "MainActivity" private val fragmentPages by lazy { ArrayList() } private val pageTitles = arrayOf("相机控制", "激光监测", "语音设置", "基础配置") + private val options = arrayListOf("修改安全树视频相机IP地址", "修改安全树数据通信IP地址") private var clickTime: Long = 0 init { @@ -110,26 +117,75 @@ } override fun onRightClick() { - AlertDialog.Builder(this@MainActivity) - .setTitle(getString(R.string.app_name)) - .setIcon(R.mipmap.ic_launcher) - .setView(R.layout.dialog_input_ip) - .setNegativeButton("取消") { _, _ -> } - .setPositiveButton("确定") { dialog, _ -> - val inputView = (dialog as AlertDialog).findViewById( - R.id.inputView - ) - val value = inputView?.text.toString() - if (value.isNotBlank()) { - SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) - } else { - "什么都还没输入呢!".show(this@MainActivity) + BottomActionSheet.Builder() + .setContext(this@MainActivity) + .setActionItemTitle(options) + .setItemTextColor(R.color.mainThemeColor.convertColor(this@MainActivity)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> modifyCameraIp() + 1 -> modifySocketIp() + } } - }.create().show() + }).build().show() } }) } + /** + * rtsp流IP地址,默认是192.168.10.137 + * */ + private fun modifyCameraIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_camera_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_CAMERA_IP_KEY, value) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + + /** + * 板子tcp通信IP地址,默认是192.168.10.51 + * */ + private fun modifySocketIp() { + AlertDialog.Builder(this@MainActivity) + .setTitle(getString(R.string.app_name)) + .setIcon(R.mipmap.ic_launcher) + .setView(R.layout.dialog_input_socket_ip) + .setNegativeButton("取消") { _, _ -> } + .setPositiveButton("确定") { dialog, _ -> + val inputView = (dialog as AlertDialog).findViewById( + R.id.inputView + ) + val value = inputView?.text.toString() + if (value.isNotBlank()) { + SaveKeyValues.putValue(LocaleConstant.SAFE_TREE_SOCKET_IP_KEY, value) + //设置通信IP之后需要重启服务 + lifecycleScope.launch(Dispatchers.IO) { + stopService(Intent(this@MainActivity, SocketConnectionService::class.java)) + + delay(1000) + + startService(Intent(this@MainActivity, SocketConnectionService::class.java)) + } + "安全树数据通信IP地址已更改,请注意切换网络".show(this) + } else { + "什么都还没输入呢!".show(this@MainActivity) + } + }.create().show() + } + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { diff --git a/app/src/main/res/layout/dialog_input_camera_ip.xml b/app/src/main/res/layout/dialog_input_camera_ip.xml new file mode 100644 index 0000000..fbe2a59 --- /dev/null +++ b/app/src/main/res/layout/dialog_input_camera_ip.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_ip.xml b/app/src/main/res/layout/dialog_input_ip.xml deleted file mode 100644 index fbe2a59..0000000 --- a/app/src/main/res/layout/dialog_input_ip.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_socket_ip.xml b/app/src/main/res/layout/dialog_input_socket_ip.xml new file mode 100644 index 0000000..c923fc0 --- /dev/null +++ b/app/src/main/res/layout/dialog_input_socket_ip.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file