diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/build.gradle b/app/build.gradle index 256bb73..c1c3a37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt deleted file mode 100644 index 215028a..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseActivity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseActivity : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + : AppCompatActivity() { - - protected lateinit var binding: VB - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = initViewBinding() - setContentView(binding.root) - setupTopBarLayout() - initDefaultData(savedInstanceState) - observeRequestState() - initEvent() - } - - /** - * 初始化ViewBinding - */ - abstract fun initViewBinding(): VB - - /** - * 特定页面定制沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 数据请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt deleted file mode 100644 index faf37c2..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/KotlinBaseFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding - -abstract class KotlinBaseFragment : Fragment() { - - private lateinit var _binding: VB - - protected val binding get() = _binding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - _binding = initViewBinding(inflater, container) - return _binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initDefaultData(savedInstanceState) - setupTopBarLayout() - observeRequestState() - initEvent() - } - - /** - * 初始化布局以及控件 - */ - abstract fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB - - /** - * 沉浸式状态栏 - */ - abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initDefaultData(savedInstanceState: Bundle?) - - /** - * 网络请求状态监听 - */ - abstract fun observeRequestState() - - /** - * 业务逻辑,按钮等事件 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java index f79000d..b28d94a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventLocalBean.java @@ -18,16 +18,15 @@ private double lng; // 经度 private double lat; // 维度 private String type; // 事件类型:自定义事件 or 报警事件 - private double data; // 最大泄漏数值 + private int data; // 最大泄漏数值 private String images; // 图片 private String description; // 事件描述 private String user; - @Generated(hash = 2046097734) + @Generated(hash = 1163567033) public TaskEventLocalBean(Long id, String taskId, String inspectionId, String eventTitle, String createTime, double lng, double lat, - String type, double data, String images, String description, - String user) { + String type, int data, String images, String description, String user) { this.id = id; this.taskId = taskId; this.inspectionId = inspectionId; @@ -110,11 +109,11 @@ this.type = type; } - public double getData() { + public int getData() { return this.data; } - public void setData(double data) { + public void setData(int data) { this.data = data; } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index b3b749c..6396644 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -2,17 +2,16 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.casic.birmm.inspect.databinding.FragmentQueryDataLogBinding import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : KotlinBaseFragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,17 +21,22 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.viewPager.adapter = + SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + binding.topTabLayout.setupWithViewPager(binding.viewPager) } override fun initEvent() { } - override fun initLayoutView(): Int = R.layout.fragment_query_data_log + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryDataLogBinding { + return FragmentQueryDataLogBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -41,9 +45,9 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.WHITE) + binding.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index aa98396..535adf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,7 +11,10 @@ import android.os.Message import android.os.Vibrator import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.toDataModel @@ -53,24 +57,11 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton -import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton -import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView -import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView -import kotlinx.android.synthetic.main.fragment_map_inspect.mapView -import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton -import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton -import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView -import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView -import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton import java.util.LinkedList import java.util.UUID @SuppressLint("MissingPermission", "SetTextI18n") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } @@ -88,19 +79,25 @@ private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false private var alarmCount = 0 + private var isDataCommandOpened = false + private var connectedDeviceName = "" - override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMapInspectBinding { + return FragmentMapInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + binding.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -110,8 +107,8 @@ //按钮默认状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true } //BLE @@ -137,8 +134,8 @@ } //Map - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -192,21 +189,22 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + binding.inspectNameView.text = "" + binding.inspectTimeView.text = "" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + binding.stopInspectButton.isEnabled = false + binding.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + isDataCommandOpened = false LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -218,7 +216,7 @@ } override fun initEvent() { - addInspectionButton.setOnClickListener { + binding.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") .setPositiveButton("开始巡检") @@ -229,8 +227,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + binding.inspectNameView.text = value + binding.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -240,8 +238,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + binding.stopInspectButton.isEnabled = true + binding.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -253,7 +251,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + binding.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -279,7 +277,7 @@ private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + binding.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -300,8 +298,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -318,10 +316,11 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + binding.currentValueView.text = "--" + binding.settingsValueView.text = "--" + binding.maxValueView.text = "--" + binding.deviceStatusView.text = "设备编号:未连接" + isDataCommandOpened = false "设备已断开连接".show(requireContext()) } }).build().show() @@ -348,11 +347,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + binding.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -365,13 +364,13 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + binding.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } @@ -433,13 +432,22 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + binding.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } else if (bytes.size == 14) { handleMethaneData(bytes) } else { - "甲烷数据格式异常".show(requireContext()) + //如果收到错误数据,就保存设备编号 + binding.deviceStatusView.text = "设备编号: $connectedDeviceName" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, connectedDeviceName) + if (!isDataCommandOpened) { + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + isDataCommandOpened = true + } } } @@ -452,7 +460,8 @@ private fun startConnectDevice(device: BluetoothDevice) { this.currentDevice = device if (!curConnectState) { - LoadingDialogHub.show(requireActivity(), "正在连接[${currentDevice!!.name}]...") + connectedDeviceName = currentDevice!!.name + LoadingDialogHub.show(requireActivity(), "正在连接[${connectedDeviceName}]...") BLEManager.connectBleDevice( requireContext(), currentDevice!!, 10000, LocaleConstant.SERVICE_UUID, @@ -587,9 +596,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + binding.currentValueView.text = dataModel.potency.toString() + binding.settingsValueView.text = dataModel.alarmValue.toString() + binding.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -629,7 +638,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录", user = userData.name!! @@ -640,35 +649,39 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + binding.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newInspectionModel!!.name + binding.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index 8d50e4a..570fb00 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.view.EventDetailActivity @@ -15,10 +18,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_event.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryEventFragment : KotlinBaseFragment() { +class QueryEventFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -31,13 +32,17 @@ private lateinit var eventListAdapter: NormalRecyclerAdapter private lateinit var eventViewModel: EventViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_event + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryEventBinding { + return FragmentQueryEventBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -47,17 +52,19 @@ when { isRefresh -> { eventListAdapter.setRefreshData(dataRows) - eventLayout.finishRefresh() + binding.eventLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } eventListAdapter.setLoadMoreData(dataRows) - eventLayout.finishLoadMore() + binding.eventLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210712) @@ -68,13 +75,13 @@ } override fun initEvent() { - eventLayout.setOnRefreshListener { + binding.eventLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getEventList() } - eventLayout.setOnLoadMoreListener { + binding.eventLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getEventList() @@ -98,9 +105,9 @@ private val callback = Handler.Callback { if (it.what == 20210712) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans @@ -121,7 +128,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventListAdapter + binding.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index f914288..2d8b8b4 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -2,8 +2,11 @@ import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel @@ -13,10 +16,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_query_inspect.* -import kotlinx.android.synthetic.main.include_empty_view.* -class QueryInspectionFragment : KotlinBaseFragment() { +class QueryInspectionFragment : KotlinBaseFragment() { private var keywords = "" private var startTime = "" @@ -29,13 +30,17 @@ private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.fragment_query_inspect + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentQueryInspectBinding { + return FragmentQueryInspectBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -45,17 +50,19 @@ when { isRefresh -> { inspectListAdapter.setRefreshData(dataRows) - inspectLayout.finishRefresh() + binding.inspectLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } inspectListAdapter.setLoadMoreData(dataRows) - inspectLayout.finishLoadMore() + binding.inspectLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(20210709) @@ -66,13 +73,13 @@ } override fun initEvent() { - inspectLayout.setOnRefreshListener { + binding.inspectLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 getInspectionList() } - inspectLayout.setOnLoadMoreListener { + binding.inspectLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ getInspectionList() @@ -95,9 +102,9 @@ private val callback = Handler.Callback { if (it.what == 20210709) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + binding.emptyInclude.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans @@ -115,7 +122,7 @@ // .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.adapter = inspectListAdapter + binding.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 0457325..596aac2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -6,6 +6,8 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.ViewGroup import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -13,6 +15,7 @@ import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.FragmentUserSettingsBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.reformat @@ -40,59 +43,50 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout -import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.fragment_user_settings.userNameView -import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView -import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView -import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var vibrator: Vibrator private lateinit var user: UserInfoModel.DataModel - override fun initLayoutView(): Int = R.layout.fragment_user_settings + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentUserSettingsBinding { + return FragmentUserSettingsBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = binding.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + binding.statusBarView.requestLayout() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { this.user = it.data - userNameView.text = user.name - userUnitView.text = user.deptName - userPhoneView.text = user.phone + binding.userNameView.text = user.name + binding.userUnitView.text = user.deptName + binding.userPhoneView.text = user.phone if (user.avatar.isNullOrBlank()) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } else { Glide.with(requireContext()) .load(user.avatar.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } } @@ -127,16 +121,16 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(binding.userAvatarView) } } val isOpen = SaveKeyValues.getValue(LocaleConstant.OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + binding.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + binding.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + binding.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -145,14 +139,18 @@ override fun observeRequestState() { uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "头像更新中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userAvatarView.setOnClickListener { + binding.userAvatarView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -202,7 +200,7 @@ }).build().show() } - exitLoginView.setOnClickListener { + binding.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -222,18 +220,18 @@ }).build().show() } - userAccountLayout.setOnClickListener { + binding.userAccountLayout.setOnClickListener { requireContext().navigatePageTo() } - warningSwitch.setOnClickListener { + binding.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + binding.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -243,7 +241,7 @@ SaveKeyValues.putValue(LocaleConstant.OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + binding.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.AUTO_RECORD, true) } else { @@ -251,15 +249,15 @@ } } - helpLayout.setOnClickListener { + binding.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + binding.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + binding.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java index 722cc93..5b65241 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventLocalBeanDao.java @@ -32,7 +32,7 @@ public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); - public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Data = new Property(8, int.class, "data", false, "DATA"); public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); public final static Property User = new Property(11, String.class, "user", false, "USER"); @@ -59,7 +59,7 @@ "\"LNG\" REAL NOT NULL ," + // 5: lng "\"LAT\" REAL NOT NULL ," + // 6: lat "\"TYPE\" TEXT," + // 7: type - "\"DATA\" REAL NOT NULL ," + // 8: data + "\"DATA\" INTEGER NOT NULL ," + // 8: data "\"IMAGES\" TEXT," + // 9: images "\"DESCRIPTION\" TEXT," + // 10: description "\"USER\" TEXT);"); // 11: user @@ -106,7 +106,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -159,7 +159,7 @@ if (type != null) { stmt.bindString(8, type); } - stmt.bindDouble(9, entity.getData()); + stmt.bindLong(9, entity.getData()); String images = entity.getImages(); if (images != null) { @@ -185,18 +185,18 @@ @Override public TaskEventLocalBean readEntity(Cursor cursor, int offset) { TaskEventLocalBean entity = new TaskEventLocalBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle - cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime - cursor.getDouble(offset + 5), // lng - cursor.getDouble(offset + 6), // lat - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type - cursor.getDouble(offset + 8), // data - cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images - cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description - cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // taskId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // eventTitle + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getInt(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user ); return entity; } @@ -211,7 +211,7 @@ entity.setLng(cursor.getDouble(offset + 5)); entity.setLat(cursor.getDouble(offset + 6)); entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); - entity.setData(cursor.getDouble(offset + 8)); + entity.setData(cursor.getInt(offset + 8)); entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index 9f2c1e9..fec8503 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,8 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentQueryDataLogBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight class DataLogPageFragment : KotlinBaseFragment() { @@ -36,7 +36,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { binding.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, titles) //绑定 binding.topTabLayout.setupWithViewPager(binding.viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 5065648..3834d69 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -24,7 +25,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.id @@ -33,6 +33,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -85,7 +86,7 @@ binding.statusBarView.requestLayout() } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -407,6 +408,7 @@ //清除缓存 blueToothBeans.clear() latLngs.clear() + aMap.clear()//清除原来的路线 SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) isDataCommandOpened = false @@ -609,7 +611,7 @@ type = "报警事件", lng = latLngs.last.longitude, lat = latLngs.last.latitude, - data = maxValue.toDouble(), + data = maxValue, images = "", description = "自动报警记录" ) @@ -627,7 +629,11 @@ if (code.isEmpty()) { binding.deviceStatusView.text = "设备编号: 未连接" } else { - binding.deviceStatusView.text = "设备编号: $code" + if (code.isDigitsOnly()) { + binding.deviceStatusView.text = "设备编号: $code" + } else { + binding.deviceStatusView.text = "设备编号: 未连接" + } } //设置标题和时间 diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 12137d7..f775478 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryEventBinding import com.casic.birmm.inspect.single.view.EventDetailActivity @@ -16,6 +15,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -93,7 +93,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 8b7ea28..5ac5c96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.databinding.SingleFragmentQueryInspectBinding import com.casic.birmm.inspect.single.view.InspectionRouteActivity @@ -15,6 +14,7 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -111,7 +111,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index 0a82d40..fbc4c18 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -12,12 +12,12 @@ import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.KotlinBaseFragment import com.casic.birmm.inspect.databinding.SingleFragmentUserSettingsBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -48,7 +48,7 @@ } - override fun initDefaultData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 78db4ca..f2dc231 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityEventDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson @@ -13,27 +14,20 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.single_activity_event_detail.dataView -import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description - dataView.text = model.data.toString() + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description + binding.dataView.text = model.data.toString() val images = model.images @@ -55,8 +49,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -66,21 +60,20 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_event_detail + override fun initViewBinding(): SingleActivityEventDetailBinding { + return SingleActivityEventDetailBinding.inflate(layoutInflater) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this) - .statusBarDarkFont(false) - .statusBarColor(R.color.themeColor) - .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6848548..7a72831 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.databinding.SingleActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -13,14 +14,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_event_detail.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) @@ -57,7 +54,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -68,10 +65,12 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_event + override fun initViewBinding(): SingleActivityInspectionEventBinding { + return SingleActivityInspectionEventBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -82,7 +81,7 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 48fc32d..36f4c37 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar @@ -18,42 +19,31 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView -import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var inspectionId: String - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! //根据id查询详情 val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - inspectMsgView.text = detailData.inspectionTitle - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime - startLocationView.text = detailData.startAddress - endLocationView.text = detailData.endAddress - distanceView.text = detailData.distance.toString() + binding.inspectMsgView.text = detailData.inspectionTitle + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime + binding.startLocationView.text = detailData.startAddress + binding.endLocationView.text = detailData.endAddress + binding.distanceView.text = detailData.distance.toString() //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -84,21 +74,23 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(inspectionId) } } - override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + override fun initViewBinding(): SingleActivityInspectionRouteBinding { + return SingleActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } override fun observeRequestState() { @@ -114,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 8c3f0a7..b907f9d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.SingleActivityMainBinding import com.casic.birmm.inspect.single.fragment.DataLogPageFragment import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.single_activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.single_activity_main + override fun initViewBinding(): SingleActivityMainBinding { + return SingleActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index dda9c94..06bf6c8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.SingleActivityNewEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager @@ -23,18 +24,9 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton -import kotlinx.android.synthetic.main.single_activity_new_event.addImageView -import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView -import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.single_activity_new_event.rootView import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -46,10 +38,13 @@ private var isWarning: Boolean = true private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 + override fun initViewBinding(): SingleActivityNewEventBinding { + return SingleActivityNewEventBinding.inflate(layoutInflater) + } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] @@ -58,22 +53,22 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) imageAdapter.setupImage(realPaths) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -105,25 +100,25 @@ } }) - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } - if (inspectValue.toDouble() > 100000) { + if (inspectValue.toInt() > 100000) { "泄露值最大为100000ppm·m".show(this) return@setOnClickListener } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -132,13 +127,13 @@ taskId = UUID.randomUUID().toString(), inspectionId = inspectionId, eventTitle = title, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = realPaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter() + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter() ) "保存成功".show(this) finish() @@ -197,8 +192,6 @@ }) } - override fun initLayoutView(): Int = R.layout.single_activity_new_event - override fun observeRequestState() { } @@ -208,6 +201,6 @@ .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f88a07c..88354c2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -180,7 +180,7 @@ lng: Double, lat: Double, type: String, - data: Double, + data: Int, images: String, description: String ) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index cfd24bd..b6db218 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -117,9 +117,9 @@ @Field("name") name: String, @Field("createTime") createTime: String, @Field("type") type: String, - @Field("Lng") Lng: Double, - @Field("Lat") Lat: Double, - @Field("data") data: Double, + @Field("Lng") lng: Double, + @Field("Lat") lat: Double, + @Field("data") data: Int, @Field("images") images: String, @Field("description") description: String, @Field("user") user: String diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 324cf23..3157621 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -115,7 +115,7 @@ */ suspend fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ): String { return api.addEventTask( AuthenticationHelper.token!!, id, inspectionId, name, createTime, type, lng, lat, data, diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 488e38f..16ace0a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 508d610..7e82602 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityEventDetailBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel @@ -13,49 +14,44 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import kotlinx.android.synthetic.main.activity_event_detail.createTimeView -import kotlinx.android.synthetic.main.activity_event_detail.dataView -import kotlinx.android.synthetic.main.activity_event_detail.descriptionView -import kotlinx.android.synthetic.main.activity_event_detail.imageGridView -import kotlinx.android.synthetic.main.activity_event_detail.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class EventDetailActivity : KotlinBaseActivity() { +class EventDetailActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } - override fun initLayoutView(): Int = R.layout.activity_event_detail + override fun initViewBinding(): ActivityEventDetailBinding { + return ActivityEventDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件详情" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件详情" } override fun observeRequestState() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type ) - createTimeView.text = model.createTime - descriptionView.text = model.description + binding.createTimeView.text = model.createTime + binding.descriptionView.text = model.description val data = model.data val value = if (data.isNullOrBlank()) { "0.0" } else { data } - dataView.text = value + binding.dataView.text = value val images = model.images @@ -77,8 +73,8 @@ } //绑定图片 val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(this@EventDetailActivity) } else { @@ -88,6 +84,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index 056f442..b302e92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -4,34 +4,33 @@ import android.view.View import android.webkit.WebViewClient import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityHelpCenterBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_help_center.answerView -import kotlinx.android.synthetic.main.activity_help_center.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class HelpCenterActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_help_center +class HelpCenterActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityHelpCenterBinding { + return ActivityHelpCenterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "帮助中心" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "帮助中心" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { - answerView.loadUrl("file:///android_asset/HelpCenterH5.html") - answerView.settings.defaultTextEncodingName = "utf-8" - answerView.webViewClient = WebViewClient() + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.answerView.loadUrl("file:///android_asset/HelpCenterH5.html") + binding.answerView.settings.defaultTextEncodingName = "utf-8" + binding.answerView.webViewClient = WebViewClient() } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index ac97920..3181b79 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionEventBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -16,27 +17,25 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView -import kotlinx.android.synthetic.main.activity_inspection_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class InspectionEventActivity : KotlinBaseActivity() { +class InspectionEventActivity : KotlinBaseActivity() { private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_event + override fun initViewBinding(): ActivityInspectionEventBinding { + return ActivityInspectionEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "事件清单" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "事件清单" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] @@ -77,7 +76,7 @@ .setText(R.id.inspectDateView, "时间:${item.createTime}") } } - eventRecyclerView.adapter = eventAdapter + binding.eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( @@ -92,7 +91,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 5ff3383..11ffdef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -10,6 +10,7 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityInspectionRouteBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -20,41 +21,35 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_route.eventButton -import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView -import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView -import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView -class InspectionRouteActivity : KotlinBaseActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap private lateinit var id: String private lateinit var viewModel: InspectionViewModel - override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun initViewBinding(): ActivityInspectionRouteBinding { + return ActivityInspectionRouteBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) - titleView.text = "巡检记录" + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "巡检记录" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] id = intent.getStringExtra(Constant.INTENT_PARAM)!! - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 @@ -64,9 +59,9 @@ viewModel.inspectDetail.observe(this) { val detailData = it.data!! - inspectMsgView.text = detailData.name - startTimeView.text = detailData.startTime - endTimeView.text = detailData.endTime + binding.inspectMsgView.text = detailData.name + binding.startTimeView.text = detailData.startTime + binding.endTimeView.text = detailData.endTime //TODO 未完 @@ -87,8 +82,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } + binding.eventButton.setOnClickListener { navigatePageTo(id) } } @@ -111,21 +106,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index 78c3b03..a2d451c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityLoginBinding import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -20,30 +21,36 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertInputDialog -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 - Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) + Glide.with(this).load(R.mipmap.ic_login_bg).into(binding.backgroundView) } else { - backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) + binding.backgroundView.setBackgroundResource(R.mipmap.ic_login_bg) } // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -70,9 +77,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -112,13 +119,13 @@ } //单机模式 - singleModeView.setOnClickListener { + binding.singleModeView.setOnClickListener { navigatePageTo() finish() } //修改服务器配置 - changeServerConfigView.setOnClickListener { + binding.changeServerConfigView.setOnClickListener { val defaultValue = SaveKeyValues.getValue( LocaleConstant.DEFAULT_SERVER_CONFIG, "http://111.198.10.15:12204" diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 8cd4362..0e5ce33 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -8,15 +8,15 @@ import com.amap.api.maps.MapsInitializer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ViewPagerAdapter +import com.casic.birmm.inspect.databinding.ActivityMainBinding import com.casic.birmm.inspect.fragment.DataLogPageFragment import com.casic.birmm.inspect.fragment.HomePageFragment import com.casic.birmm.inspect.fragment.SettingPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private var clickTime: Long = 0 private var menuItem: MenuItem? = null @@ -28,29 +28,31 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) //导航 - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_log -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_setting -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } } false } - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -67,9 +69,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) @@ -79,7 +81,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 81c9cf0..428dcb6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener +import com.casic.birmm.inspect.databinding.ActivityNewEventBinding import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage import com.casic.birmm.inspect.extensions.initLayoutImmersionBar @@ -37,19 +38,10 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.addEventButton -import kotlinx.android.synthetic.main.activity_new_event.addImageView -import kotlinx.android.synthetic.main.activity_new_event.createTimeView -import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView -import kotlinx.android.synthetic.main.activity_new_event.inspectCardView -import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView -import kotlinx.android.synthetic.main.activity_new_event.rootView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File import java.util.UUID -class NewEventActivity : KotlinBaseActivity() { +class NewEventActivity : KotlinBaseActivity() { private val kTag = "NewEventActivity" private val context: Context = this@NewEventActivity @@ -64,19 +56,21 @@ private lateinit var inspectionName: String private var longitude: Double = 0.0 private var latitude: Double = 0.0 - private var data = 0.0//泄露默认值 + private var data = 0//泄露默认值 private lateinit var type: String private lateinit var userModel: UserInfoModel - override fun initLayoutView(): Int = R.layout.activity_new_event + override fun initViewBinding(): ActivityNewEventBinding { + return ActivityNewEventBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } override fun observeRequestState() { @@ -102,7 +96,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] @@ -119,21 +113,21 @@ latitude = args[4].toDouble() if (isWarning) { - titleView.text = "报警事件记录" - inspectCardView.visibility = View.VISIBLE + binding.titleInclude.titleView.text = "报警事件记录" + binding.inspectCardView.visibility = View.VISIBLE } else { - titleView.text = "自定义事件记录" - inspectCardView.visibility = View.GONE + binding.titleInclude.titleView.text = "自定义事件记录" + binding.inspectCardView.visibility = View.GONE } - createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() + binding.createTimeView.text = System.currentTimeMillis().timestampToCompleteDate() //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageView.adapter = imageAdapter + binding.addImageView.adapter = imageAdapter } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + binding.titleInclude.leftBackView.setOnClickListener { this.finish() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -186,13 +180,13 @@ } } - addEventButton.setOnClickListener { - if (eventEditTextView.text.toString().isBlank()) { + binding.addEventButton.setOnClickListener { + if (binding.eventEditTextView.text.toString().isBlank()) { "事件情况说明还未填写,请检查".show(this) return@setOnClickListener } if (isWarning) { - val inspectValue = inspectNumberView.text.toString() + val inspectValue = binding.inspectNumberView.text.toString() if (inspectValue.isBlank()) { "最大泄露值还未填写,请检查".show(this) return@setOnClickListener @@ -204,7 +198,7 @@ } type = "报警事件" - data = inspectValue.filterSpaceOrEnter().toDouble() + data = inspectValue.filterSpaceOrEnter().toInt() } else { type = "自定义事件" } @@ -213,13 +207,13 @@ id = UUID.randomUUID().toString(), inspectionId = inspectionId, name = inspectionName, - createTime = createTimeView.text.toString(), + createTime = binding.createTimeView.text.toString(), type = type, lng = longitude, lat = latitude, data = data, images = imagePaths.reformat(), - description = eventEditTextView.text.toString().filterSpaceOrEnter(), + description = binding.eventEditTextView.text.toString().filterSpaceOrEnter(), user = userModel.data.name ) eventViewModel.addEventResult.observe(this) { model -> diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 9e1dc34..f34fe85 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -3,6 +3,7 @@ import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityPermissionBinding import com.casic.birmm.inspect.utils.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -10,7 +11,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +26,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,7 +37,9 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -46,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 0fe65f9..6ef98c1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -4,49 +4,44 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.databinding.ActivityUserDetailBinding import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView -import kotlinx.android.synthetic.main.activity_user_detail.rootView -import kotlinx.android.synthetic.main.activity_user_detail.userDeptView -import kotlinx.android.synthetic.main.activity_user_detail.userNameView -import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView -import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class UserDetailActivity : KotlinBaseActivity() { +class UserDetailActivity : KotlinBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_user_detail + override fun initViewBinding(): ActivityUserDetailBinding { + return ActivityUserDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this) .statusBarDarkFont(false) .statusBarColor(R.color.themeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "个人资料" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "个人资料" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { if (it.code == 200) { val user = it.data - userNameView.text = user.account - userRealNameView.text = user.name - userDeptView.text = user.deptName - userPhoneView.text = user.phone - ipAddressView.text = user.ipAddr + binding.userNameView.text = user.account + binding.userRealNameView.text = user.name + binding.userDeptView.text = user.deptName + binding.userPhoneView.text = user.phone + binding.ipAddressView.text = user.ipAddr } } } diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt index 54cfea5..7f0bcf2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventViewModel.kt @@ -45,7 +45,7 @@ fun addEventTask( id: String, inspectionId: String, name: String, createTime: String, type: String, - lng: Double, lat: Double, data: Double, images: String, description: String, user: String + lng: Double, lat: Double, data: Int, images: String, description: String, user: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEventTask( diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 71dbcec..c32af14 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackground" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - +