diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml
new file mode 100644
index 0000000..13102d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_map.xml
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml
new file mode 100644
index 0000000..13102d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_map.xml
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml
index f5a8bc6..3bb7f3c 100644
--- a/app/src/main/res/layout/dialog_input.xml
+++ b/app/src/main/res/layout/dialog_input.xml
@@ -16,7 +16,7 @@
android:id="@+id/dialogTitleView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:fontFamily="sans-serif-black"
+ android:fontFamily="sans-serif-medium"
android:gravity="center_horizontal"
android:paddingVertical="15dp"
android:text="@string/app_name"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml
new file mode 100644
index 0000000..13102d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_map.xml
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml
index f5a8bc6..3bb7f3c 100644
--- a/app/src/main/res/layout/dialog_input.xml
+++ b/app/src/main/res/layout/dialog_input.xml
@@ -16,7 +16,7 @@
android:id="@+id/dialogTitleView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:fontFamily="sans-serif-black"
+ android:fontFamily="sans-serif-medium"
android:gravity="center_horizontal"
android:paddingVertical="15dp"
android:text="@string/app_name"
diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml
new file mode 100644
index 0000000..671463f
--- /dev/null
+++ b/app/src/main/res/layout/dialog_single_choice.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml
new file mode 100644
index 0000000..13102d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_map.xml
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml
index f5a8bc6..3bb7f3c 100644
--- a/app/src/main/res/layout/dialog_input.xml
+++ b/app/src/main/res/layout/dialog_input.xml
@@ -16,7 +16,7 @@
android:id="@+id/dialogTitleView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:fontFamily="sans-serif-black"
+ android:fontFamily="sans-serif-medium"
android:gravity="center_horizontal"
android:paddingVertical="15dp"
android:text="@string/app_name"
diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml
new file mode 100644
index 0000000..671463f
--- /dev/null
+++ b/app/src/main/res/layout/dialog_single_choice.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_dialog_listview.xml b/app/src/main/res/layout/item_dialog_listview.xml
new file mode 100644
index 0000000..00dadf7
--- /dev/null
+++ b/app/src/main/res/layout/item_dialog_listview.xml
@@ -0,0 +1,13 @@
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7949d16..6a3f570 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,10 @@
+
+
+
+
@@ -48,6 +52,7 @@
android:theme="@style/Theme.BigImageActivity" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
new file mode 100644
index 0000000..b6b5281
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/BluetoothStateBroadcastReceiver.kt
@@ -0,0 +1,31 @@
+package com.casic.birmm.inspect.utils
+
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.casic.birmm.inspect.view.MapActivity
+
+class BluetoothStateBroadcastReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ BluetoothAdapter.ACTION_STATE_CHANGED -> {
+ when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) {
+ BluetoothAdapter.STATE_OFF -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_OFF)
+ }
+ BluetoothAdapter.STATE_ON -> {
+ MapActivity.sendEmptyMessage(Constant.BLUETOOTH_ON)
+ }
+ }
+ }
+ BluetoothDevice.ACTION_ACL_CONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_CONNECTED)
+ }
+ BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
+ MapActivity.sendEmptyMessage(Constant.DEVICE_DISCONNECTED)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index 0ae38db..aef675a 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -13,6 +13,10 @@
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 15
+ const val BLUETOOTH_ON = 20
+ const val BLUETOOTH_OFF = 21
+ const val DEVICE_CONNECTED = 22
+ const val DEVICE_DISCONNECTED = 23
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index 94d269e..c3b1e6b 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -59,6 +59,7 @@
aMap = mapView.map
val uiSettings = aMap.uiSettings
uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
//根据id查询详情
id = intent.getStringExtra("id")!!
@@ -120,6 +121,7 @@
}
fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
eventButton.setChangeAlphaWhenPress(true)
eventButton.setOnClickListener {
val intent = Intent(this, EventListActivity::class.java)
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index 8ed4a0c..da4b03e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -168,6 +168,5 @@
}
}
}
-
}
}
\ 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 517203f..dddea49 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
@@ -132,9 +132,13 @@
.setNegativeButton("取消")
.setPositiveButton("保存")
.setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
- override fun onButtonClick(input: String) {
+ override fun onConfirmClick(input: String) {
SaveKeyValues.putValue(Constant.DEFAULT_SERVER_CONFIG, input)
}
+
+ override fun onCancelClick() {
+
+ }
})
.build().show()
}
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 4ef86d3..2db634f 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
@@ -15,9 +15,9 @@
import com.casic.birmm.inspect.utils.SaveKeyValues
import com.casic.birmm.inspect.utils.StatusBarColorUtil
import com.casic.birmm.inspect.vm.UserViewModel
+import com.casic.birmm.inspect.widgets.SingleChoiceDialog
import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
-import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -25,6 +25,7 @@
class MainActivity : BaseActivity() {
private var clickTime: Long = 0
+ private val itemList: List = arrayListOf("巡检记录", "事件记录")
override fun initLayoutView(): Int = R.layout.activity_main
@@ -53,26 +54,37 @@
override fun initEvent() {
//新建巡检
createIssueLayout.setOnClickListener {
-
+ startActivity(Intent(this, MapActivity::class.java))
}
//记录查询
logSearchLayout.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
+ SingleChoiceDialog.Builder()
+ .setContext(this)
.setTitle("选择记录类型")
- .addItem("巡检记录")
- .addItem("事件记录")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, position, _ ->
- dialog?.dismiss()
- when (position) {
- 0 -> {
- startActivity(Intent(this, InspectionQueryActivity::class.java))
- }
- 1 -> {
- startActivity(Intent(this, EventQueryActivity::class.java))
+ .setChoiceItemButton(itemList)
+ .setOnDialogClickListener(object : SingleChoiceDialog.OnDialogItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ InspectionQueryActivity::class.java
+ )
+ )
+ }
+ 1 -> {
+ startActivity(
+ Intent(
+ this@MainActivity,
+ EventQueryActivity::class.java
+ )
+ )
+ }
}
}
- }.build().show()
+ })
+ .build().show()
}
//系统设置
settingsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
new file mode 100644
index 0000000..207f6c3
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt
@@ -0,0 +1,176 @@
+package com.casic.birmm.inspect.view
+
+import android.bluetooth.BluetoothAdapter
+import android.graphics.Color
+import android.os.Bundle
+import android.os.Handler
+import android.os.Message
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapOptions
+import com.amap.api.maps.model.MyLocationStyle
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.Constant
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.widgets.InputDialog
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.mapView
+import kotlinx.android.synthetic.main.activity_map.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+import java.lang.ref.WeakReference
+
+
+class MapActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ companion object {
+ private const val Tag = "MapActivity"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+
+ fun sendEmptyMessage(what: Int) {
+ weakReferenceHandler.sendEmptyMessage(what)
+ }
+ }
+
+ private lateinit var aMap: AMap
+ private lateinit var locationStyle: MyLocationStyle
+
+ init {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ private class WeakReferenceHandler(activity: MapActivity) : Handler() {
+ private val activity: WeakReference = WeakReference(activity)
+ override fun handleMessage(msg: Message) {
+ val mainActivity = activity.get() ?: return
+ when (msg.what) {
+ Constant.BLUETOOTH_ON -> {
+ "蓝牙已开启".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ }
+ Constant.BLUETOOTH_OFF -> {
+ "蓝牙已关闭".show(mainActivity)
+ mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ }
+ Constant.DEVICE_CONNECTED -> {
+ //TODO 设备已连接
+ }
+ Constant.DEVICE_DISCONNECTED -> {
+ //TODO 设备断开连接
+ }
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_map)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度
+ //显示定位小蓝点
+ locationStyle = MyLocationStyle()
+ locationStyle.showMyLocation(true)//设置是否显示定位小蓝点
+ locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色
+ locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色
+ aMap.myLocationStyle = locationStyle
+ aMap.isMyLocationEnabled = true
+ aMap.addOnMyLocationChangeListener {
+ Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]")
+ }
+ }
+
+ fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ //需要判断是否是上次未完的巡检
+// selectInspectMode()
+
+ //判断蓝牙的状态
+ val blueAdapter = BluetoothAdapter.getDefaultAdapter()
+ if (blueAdapter == null) {
+ "该设备不支持蓝牙,无法连接".show(this)
+ } else {
+ if (blueAdapter.isEnabled) {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable)
+ bluetoothButton.setOnClickListener {
+ //搜索蓝牙
+ }
+ } else {
+ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled)
+ //打开
+ }
+ }
+
+ newEventButton.setChangeAlphaWhenPress(true)
+ newEventButton.setOnClickListener {
+
+ }
+ }
+
+ private fun selectInspectMode() {
+ InputDialog.Builder().setContext(this)
+ .setTitle("请输入巡检标签")
+ .setHintText("如:xxx区间巡检")
+ .setNegativeButton("放弃")
+ .setPositiveButton("开始巡检")
+ .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(input: String) {
+
+ }
+
+ override fun onCancelClick() {
+ finish()
+ }
+ })
+ .build().show()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
index cfa32dc..f2db4c9 100644
--- a/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/InputDialog.kt
@@ -16,6 +16,7 @@
private var ctx: Context? = null
private var title: String? = null
+ private var hint: String? = null
private var value: String? = null
private var positiveBtn: String? = null
private var negativeBtn: String? = null
@@ -24,6 +25,7 @@
init {
this.ctx = builder.mContext
this.title = builder.title
+ this.hint = builder.hint
this.value = builder.value
this.positiveBtn = builder.positiveBtn
this.negativeBtn = builder.negativeBtn
@@ -38,6 +40,7 @@
setCanceledOnTouchOutside(false)
dialogTitleView.text = title
+ dialogInputView.hint = hint!!
value.apply {
dialogInputView.setText(this)
}
@@ -46,6 +49,7 @@
dialogCancelButton.setChangeAlphaWhenPress(true)
dialogCancelButton.setOnClickListener {
this.dismiss()
+ listener?.onCancelClick()
}
dialogConfirmButton.text = positiveBtn
@@ -56,8 +60,8 @@
"什么都没输入,请重新输入".show(ctx!!)
return@setOnClickListener
}
- listener?.onButtonClick(inputValue)
this.dismiss()
+ listener?.onConfirmClick(inputValue)
}
}
@@ -73,6 +77,7 @@
class Builder {
var mContext: Context? = null
var title: String? = null
+ var hint: String? = null
var value: String? = null
var positiveBtn: String? = null
var negativeBtn: String? = null
@@ -88,6 +93,11 @@
return this
}
+ fun setHintText(hint: String?): Builder {
+ this.hint = hint
+ return this
+ }
+
fun setDefaultValue(value: String?): Builder {
this.value = value
return this
@@ -114,6 +124,8 @@
}
interface OnDialogButtonClickListener {
- fun onButtonClick(input: String)
+ fun onCancelClick()
+
+ fun onConfirmClick(input: String)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
new file mode 100644
index 0000000..216befd
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/widgets/SingleChoiceDialog.kt
@@ -0,0 +1,123 @@
+package com.casic.birmm.inspect.widgets
+
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import android.widget.BaseAdapter
+import com.casic.birmm.inspect.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+import kotlinx.android.synthetic.main.dialog_input.dialogTitleView
+import kotlinx.android.synthetic.main.dialog_single_choice.*
+
+
+class SingleChoiceDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) {
+
+ private var ctx: Context? = null
+ private var title: String? = null
+ private var items: List? = null
+ private var listener: OnDialogItemClickListener? = null
+
+ init {
+ this.ctx = builder.mContext
+ this.title = builder.title
+ this.items = builder.items
+ this.listener = builder.listener
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ configDialogLayout()
+ setContentView(R.layout.dialog_single_choice)
+ setCancelable(true)
+ setCanceledOnTouchOutside(true)
+
+ dialogTitleView.text = title
+ dialogListView.adapter = ItemChoiceAdapter()
+ }
+
+ private fun configDialogLayout() {
+ window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window?.decorView?.setBackgroundColor(Color.TRANSPARENT)
+ val params: WindowManager.LayoutParams? = window?.attributes
+ params?.width = QMUIDisplayHelper.dp2px(ctx, 220)
+ params?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window?.attributes = params
+ }
+
+ inner class ItemChoiceAdapter : BaseAdapter() {
+
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx!!)
+
+ override fun getCount(): Int = items!!.size
+
+ override fun getItem(position: Int): Any = items!![position]
+
+ override fun getItemId(position: Int): Long = position.toLong()
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val view: View
+ val itemViewHolder: ItemViewHolder
+ if (convertView == null) {
+ view = inflater.inflate(R.layout.item_dialog_listview, null)!!
+ itemViewHolder = ItemViewHolder(view)
+ view.tag = itemViewHolder
+ } else {
+ view = convertView
+ itemViewHolder = view.tag as ItemViewHolder
+ }
+ itemViewHolder.itemTagView.text = items!![position]
+ itemViewHolder.itemTagView.setChangeAlphaWhenPress(true)
+ itemViewHolder.itemTagView.setOnClickListener {
+ dismiss()
+ listener?.onItemClick(position)
+ }
+ return view
+ }
+ }
+
+ class ItemViewHolder(v: View) {
+ var itemTagView: QMUIRoundButton = v.findViewById(R.id.itemTagView)
+ }
+
+ class Builder {
+ var mContext: Context? = null
+ var title: String? = null
+ var items: List? = null
+ var listener: OnDialogItemClickListener? = null
+
+ fun setContext(context: Context?): Builder {
+ mContext = context
+ return this
+ }
+
+ fun setTitle(title: String?): Builder {
+ this.title = title
+ return this
+ }
+
+ fun setChoiceItemButton(items: List?): Builder {
+ this.items = items
+ return this
+ }
+
+ fun setOnDialogClickListener(listener: OnDialogItemClickListener): Builder {
+ this.listener = listener
+ return this
+ }
+
+ fun build(): SingleChoiceDialog {
+ return SingleChoiceDialog(this)
+ }
+ }
+
+ interface OnDialogItemClickListener {
+ fun onItemClick(position: Int)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_image_button_layout.xml b/app/src/main/res/drawable/bg_image_button_layout.xml
new file mode 100644
index 0000000..41a75be
--- /dev/null
+++ b/app/src/main/res/drawable/bg_image_button_layout.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_aim.xml b/app/src/main/res/drawable/ic_aim.xml
new file mode 100644
index 0000000..88d9e36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_aim.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_disabled.xml b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
new file mode 100644
index 0000000..1a8526e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_empty.xml b/app/src/main/res/drawable/ic_bluetooth_empty.xml
new file mode 100644
index 0000000..477d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_empty.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth_enable.xml b/app/src/main/res/drawable/ic_bluetooth_enable.xml
new file mode 100644
index 0000000..d60b5ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth_enable.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml
new file mode 100644
index 0000000..4ed867e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..ab62a60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..1f12913
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
index 6c11830..38d2421 100644
--- a/app/src/main/res/layout/activity_inspect_route.xml
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -7,7 +7,7 @@
-
@@ -30,10 +30,12 @@
@@ -65,12 +67,14 @@
app:layout_constraintEnd_toEndOf="parent" />
@@ -79,7 +83,7 @@
android:id="@+id/eventButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_alignParentBottom="true"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="20dp"
android:paddingVertical="7dp"
@@ -89,5 +93,5 @@
app:qmui_backgroundColor="@color/mainThemeColor"
app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="5dp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml
new file mode 100644
index 0000000..13102d9
--- /dev/null
+++ b/app/src/main/res/layout/activity_map.xml
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml
index f5a8bc6..3bb7f3c 100644
--- a/app/src/main/res/layout/dialog_input.xml
+++ b/app/src/main/res/layout/dialog_input.xml
@@ -16,7 +16,7 @@
android:id="@+id/dialogTitleView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:fontFamily="sans-serif-black"
+ android:fontFamily="sans-serif-medium"
android:gravity="center_horizontal"
android:paddingVertical="15dp"
android:text="@string/app_name"
diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml
new file mode 100644
index 0000000..671463f
--- /dev/null
+++ b/app/src/main/res/layout/dialog_single_choice.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_dialog_listview.xml b/app/src/main/res/layout/item_dialog_listview.xml
new file mode 100644
index 0000000..00dadf7
--- /dev/null
+++ b/app/src/main/res/layout/item_dialog_listview.xml
@@ -0,0 +1,13 @@
+
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 176b516..b8cd701 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -8,6 +8,15 @@
- @color/colorAccent
+
+