Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS

 Conflicts:
	app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
This commit is contained in:
squallzhjch 2023-05-08 14:33:52 +08:00
commit a13e1f660d
152 changed files with 341 additions and 154 deletions

1
app/.gitignore vendored
View File

@ -1 +1,2 @@
/build /build
/release

View File

@ -3,7 +3,6 @@ plugins {
id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt' id 'kotlin-kapt'
id 'com.google.dagger.hilt.android' id 'com.google.dagger.hilt.android'
id 'realm-android'
id 'kotlin-parcelize' // id 'kotlin-parcelize' //
id 'androidx.navigation.safeargs.kotlin'//Safe Args传递数据 id 'androidx.navigation.safeargs.kotlin'//Safe Args传递数据
} }
@ -74,7 +73,7 @@ android {
dependencies { dependencies {
implementation project(':collect-library') api project(':collect-library')
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
@ -89,11 +88,6 @@ dependencies {
implementation 'com.google.dagger:hilt-android:2.45' implementation 'com.google.dagger:hilt-android:2.45'
kapt 'com.google.dagger:hilt-compiler:2.45' kapt 'com.google.dagger:hilt-compiler:2.45'
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
implementation('com.squareup.okhttp3:okhttp:5.0.0-alpha.11')
implementation('com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11')
kapt 'android.arch.persistence.room:compiler:1.1.1'// compiler room kapt 'android.arch.persistence.room:compiler:1.1.1'// compiler room
kapt "androidx.room:room-compiler:2.5.1" kapt "androidx.room:room-compiler:2.5.1"

View File

@ -11,7 +11,7 @@
"name": "道路种别" "name": "道路种别"
}, },
{ {
"table": "OMDB_RD_LINK_DIRECT", "table": "OMDB_LINK_DIRECT",
"code": 2010, "code": 2010,
"name": "道路方向" "name": "道路方向"
}, },

View File

@ -47,11 +47,6 @@ class Constant {
*/ */
lateinit var DOWNLOAD_PATH: String lateinit var DOWNLOAD_PATH: String
/**
* 服务器地址
*/
const val SERVER_ADDRESS = "http://fastmap.navinfo.com/"
const val DEBUG = true const val DEBUG = true
var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull<Boolean>() var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull<Boolean>()

View File

@ -1,7 +1,6 @@
package com.navinfo.omqs.db package com.navinfo.omqs.db
import com.navinfo.collect.library.data.entity.HadLinkDvoBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.bean.TaskBean
import io.realm.annotations.RealmModule import io.realm.annotations.RealmModule
@RealmModule(classes = [TaskBean::class]) @RealmModule(classes = [TaskBean::class])

View File

@ -7,6 +7,7 @@ import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.navinfo.collect.library.data.dao.impl.TraceDataBase import com.navinfo.collect.library.data.dao.impl.TraceDataBase
import com.navinfo.collect.library.system.Constant.SERVER_ADDRESS
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.OMQSApplication import com.navinfo.omqs.OMQSApplication
import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.db.RoomAppDatabase
@ -82,7 +83,7 @@ class GlobalModule {
converterFactory: GsonConverterFactory, converterFactory: GsonConverterFactory,
): Retrofit { ): Retrofit {
val retrofitBuilder = Retrofit.Builder() val retrofitBuilder = Retrofit.Builder()
.baseUrl(Constant.SERVER_ADDRESS) .baseUrl(SERVER_ADDRESS)
.client(client.get()) .client(client.get())
.addConverterFactory(converterFactory) .addConverterFactory(converterFactory)

View File

@ -1,7 +1,7 @@
package com.navinfo.omqs.http package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
/** /**

View File

@ -1,7 +1,7 @@
package com.navinfo.omqs.http package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import javax.inject.Inject import javax.inject.Inject

View File

@ -2,9 +2,8 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.EvaluationInfo import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import okhttp3.ResponseBody import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response import retrofit2.Response
import retrofit2.http.* import retrofit2.http.*

View File

@ -4,13 +4,10 @@ import android.content.Context
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import dagger.hilt.android.qualifiers.ActivityContext
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import javax.inject.Inject
/** /**

View File

@ -5,7 +5,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.ImportOMDBHelper import com.navinfo.omqs.db.ImportOMDBHelper
import com.navinfo.omqs.tools.FileManager import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus

View File

@ -3,7 +3,7 @@ package com.navinfo.omqs.http.taskupload
import android.content.Context import android.content.Context
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap

View File

@ -8,16 +8,10 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.bean.EvaluationInfo import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import io.realm.Realm import io.realm.Realm
import kotlinx.coroutines.* import kotlinx.coroutines.*
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.* import java.util.*
class TaskUploadScope( class TaskUploadScope(
@ -67,7 +61,6 @@ class TaskUploadScope(
} }
} }
/** /**
* 更新状态 * 更新状态
* @param status [OfflineMapCityBean.Status] * @param status [OfflineMapCityBean.Status]
@ -76,6 +69,8 @@ class TaskUploadScope(
if (taskBean.syncStatus != status) { if (taskBean.syncStatus != status) {
taskBean.syncStatus = status taskBean.syncStatus = status
uploadData.postValue(taskBean) uploadData.postValue(taskBean)
//同步中不进行状态记录,只做界面变更显示
if(status!=FileUploadStatus.UPLOADING){
launch { launch {
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
realm.executeTransaction { realm.executeTransaction {
@ -84,6 +79,7 @@ class TaskUploadScope(
} }
} }
} }
}
/** /**
* 是否未上传 * 是否未上传
@ -112,11 +108,17 @@ class TaskUploadScope(
} }
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
val bodyList: MutableList<EvaluationInfo> = ArrayList() val bodyList: MutableList<EvaluationInfo> = ArrayList()
if (taskBean.syncStatus == FileUploadStatus.WAITING){
change(FileUploadStatus.UPLOADING)
}
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean -> taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
val objects = realm.where(QsRecordBean::class.java) val objects = realm.where(QsRecordBean::class.java)
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll() .equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll()
if (objects != null) { if (objects != null&&objects.size>0) {
val copyList = realm.copyFromRealm(objects) val copyList = realm.copyFromRealm(objects)
copyList.forEach { copyList.forEach {
val evaluationInfo = EvaluationInfo( val evaluationInfo = EvaluationInfo(
@ -139,18 +141,15 @@ class TaskUploadScope(
bodyList.add(evaluationInfo) bodyList.add(evaluationInfo)
} }
}
}
} if(bodyList.size>0){
}
if (bodyList.size == 0) {
if (taskBean.syncStatus == FileUploadStatus.WAITING)
change(FileUploadStatus.NONE)
return
}
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object : val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
// Callback<ResponseBody> { // Callback<ResponseBody> {
if (result.isSuccessful) { if (result.isSuccessful) {
if (result.code() == 200) { if (result.code() == 200) {
// taskBean.syncStatus = FileUploadStatus.DONE
// handle the response // handle the response
change(FileUploadStatus.DONE) change(FileUploadStatus.DONE)
} else { } else {
@ -160,6 +159,9 @@ class TaskUploadScope(
} else { } else {
change(FileUploadStatus.ERROR) change(FileUploadStatus.ERROR)
} }
}else{
change(FileUploadStatus.NONE)
}
} catch (e: Throwable) { } catch (e: Throwable) {
change(FileUploadStatus.ERROR) change(FileUploadStatus.ERROR)
Log.e("jingo", "数据上传出错 ${e.message}") Log.e("jingo", "数据上传出错 ${e.message}")

View File

@ -3,7 +3,7 @@ package com.navinfo.omqs.tools
import android.content.Context import android.content.Context
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import java.io.File import java.io.File
class FileManager { class FileManager {
@ -27,6 +27,7 @@ class FileManager {
const val DONE = 1 //完成 const val DONE = 1 //完成
const val ERROR = 2 //错误 const val ERROR = 2 //错误
const val WAITING = 3 //等待中 const val WAITING = 3 //等待中
const val UPLOADING = 4 //同步中
} }
//初始化数据文件夹 //初始化数据文件夹

View File

@ -176,7 +176,7 @@ class LoginViewModel @Inject constructor(
.directory(userFolder) .directory(userFolder)
.name("OMQS.realm") .name("OMQS.realm")
.encryptionKey(password) .encryptionKey(password)
.modules(Realm.getDefaultModule(), MyRealmModule()) // .modules(Realm.getDefaultModule(), MyRealmModule())
.schemaVersion(1) .schemaVersion(1)
.build() .build()
Realm.setDefaultConfiguration(config) Realm.setDefaultConfiguration(config)

View File

@ -31,7 +31,7 @@ import com.navinfo.omqs.Constant
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.bean.ImportConfig
import com.navinfo.omqs.bean.SignBean import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.RealmOperateHelper import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.ui.dialog.CommonDialog import com.navinfo.omqs.ui.dialog.CommonDialog
import com.navinfo.omqs.ui.manager.TakePhotoManager import com.navinfo.omqs.ui.manager.TakePhotoManager

View File

@ -1,18 +1,11 @@
package com.navinfo.omqs.ui.fragment.tasklist package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context import android.content.Context
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.databinding.AdapterQsRecordListBinding import com.navinfo.omqs.databinding.AdapterQsRecordListBinding
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder import com.navinfo.omqs.ui.other.BaseViewHolder

View File

@ -1,25 +1,19 @@
package com.navinfo.omqs.ui.fragment.tasklist package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context
import android.graphics.Color
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.databinding.AdapterTaskListBinding import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.http.taskupload.TaskUploadManager import com.navinfo.omqs.http.taskupload.TaskUploadManager
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder import com.navinfo.omqs.ui.other.BaseViewHolder
import java.io.File
import java.util.*
import javax.inject.Inject
/** /**
* 离线地图城市列表 RecyclerView 适配器 * 离线地图城市列表 RecyclerView 适配器
@ -130,6 +124,9 @@ class TaskListAdapter(
FileUploadStatus.WAITING -> { FileUploadStatus.WAITING -> {
binding.taskUploadBtn.text = "等待同步" binding.taskUploadBtn.text = "等待同步"
} }
FileUploadStatus.UPLOADING -> {
binding.taskUploadBtn.text = "同步中"
}
} }
} }

View File

@ -10,7 +10,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager import com.navinfo.omqs.tools.FileManager

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/black" /> <solid android:color="@color/white" />
<stroke <stroke
android:width="1dp" android:width="1dp"
android:color="@color/deepskyblue" /> android:color="@color/highFontColor" />
<corners <corners
android:bottomLeftRadius="5dp" android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp" android:bottomRightRadius="5dp"

View File

@ -4,7 +4,7 @@
<shape> <shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding> <padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" /> <solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners> <corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" /> <stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape> </shape>
</item> </item>
@ -12,7 +12,7 @@
<shape> <shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding> <padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" /> <solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners> <corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" /> <stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape> </shape>
</item> </item>
@ -20,7 +20,7 @@
<shape> <shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding> <padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" /> <solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners> <corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" /> <stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape> </shape>
</item> </item>
@ -28,7 +28,7 @@
<shape> <shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding> <padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" /> <solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners> <corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" /> <stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape> </shape>
</item> </item>
@ -36,7 +36,7 @@
<shape> <shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding> <padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" /> <solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners> <corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" /> <stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape> </shape>
</item> </item>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_checked="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape>
</item>
<item>
<shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape>
</item>
</selector>

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/ivory" android:background="@color/white"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:paddingTop="5dp" android:paddingTop="5dp"
android:paddingRight="10dp" android:paddingRight="10dp"
@ -32,7 +32,7 @@
<TextView <TextView
android:id="@+id/offline_map_download_btn" android:id="@+id/offline_map_download_btn"
style="@style/map_download_style_btn" style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp" android:layout_width="60dp"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"

View File

@ -13,7 +13,7 @@
android:id="@+id/qs_record_index" android:id="@+id/qs_record_index"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableLeft="@mipmap/marker" android:drawableLeft="@mipmap/marker2"
android:maxLength="3" android:maxLength="3"
android:text="" android:text=""
android:layout_marginRight="@dimen/default_widget_padding" android:layout_marginRight="@dimen/default_widget_padding"

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/ivory" android:background="@color/white"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:paddingTop="5dp" android:paddingTop="5dp"
android:paddingRight="10dp" android:paddingRight="10dp"
@ -58,7 +58,7 @@
<TextView <TextView
android:id="@+id/task_download_btn" android:id="@+id/task_download_btn"
style="@style/map_download_style_btn" style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp" android:layout_width="60dp"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
@ -69,7 +69,7 @@
<TextView <TextView
android:id="@+id/task_upload_btn" android:id="@+id/task_upload_btn"
style="@style/map_download_style_btn" style="@style/btn_default_stroke_horizontal_round"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:minWidth="60dp" android:minWidth="60dp"
android:layout_centerVertical="true" android:layout_centerVertical="true"

View File

@ -16,7 +16,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:background="@drawable/drawable_bg_blue_frame_black_bg_4_radius" android:background="@drawable/drawable_bg_blue_frame_white_bg_4_radius"
android:orientation="horizontal" android:orientation="horizontal"
> >
<ImageView <ImageView

View File

@ -107,6 +107,19 @@
<item name="android:textSize">15sp</item> <item name="android:textSize">15sp</item>
</style> </style>
<style name="btn_default_stroke_horizontal_round" comment="左右为圆角的按钮" parent="ThemeOverlay.Material3.AutoCompleteTextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:paddingHorizontal">@dimen/default_widget_padding</item>
<item name="android:paddingVertical">5dp</item>
<item name="android:background">@drawable/selector_horizontal_round_corner_bg</item>
<item name="android:foreground">@drawable/ripple_btn_press</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:textColor">@color/selector_default_primary_press_secondary</item>
<item name="android:textSize">15sp</item>
</style>
<!-- 默认按钮样式 --> <!-- 默认按钮样式 -->
<style name="btn_default_style" parent="content_font_default"> <style name="btn_default_style" parent="content_font_default">
<item name="android:textColor">@color/btn_select_color</item> <item name="android:textColor">@color/btn_select_color</item>

View File

@ -132,4 +132,10 @@ dependencies {
// implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' // implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
// // Java8支持库 // // Java8支持库
// implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.4' // implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.4'
// Retrofit
api("com.squareup.retrofit2:retrofit:2.9.0")
api("com.squareup.retrofit2:converter-gson:2.9.0")
api('com.squareup.okhttp3:okhttp:5.0.0-alpha.11')
api('com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11')
} }

View File

@ -55,7 +55,6 @@
<style-text fill="#000000" id="max-speed-limit" k="name" size="15" stroke="#ffffff" <style-text fill="#000000" id="max-speed-limit" k="name" size="15" stroke="#ffffff"
stroke-width="0.1" /> stroke-width="0.1" />
<!--###### AREA styles ######--> <!--###### AREA styles ######-->
<!--residential--> <!--residential-->
@ -1554,21 +1553,51 @@
</m> </m>
<m k="qi_table"> <m k="qi_table">
<!--车道数-->
<m v="OMDB_LANE_NUM">
<m k="laneNum">
<m v="1">
<line stroke="#545D6C" width="3"/>
</m>
<m v="2">
<line stroke="#545D6C" width="6"/>
</m>
<m v="3">
<line stroke="#545D6C" width="9"/>
</m>
<m v="4">
<line stroke="#545D6C" width="12"/>
</m>
<m v="5">
<line stroke="#545D6C" width="15"/>
</m>
<m v="6">
<line stroke="#545D6C" width="18"/>
</m>
<m v="7">
<line stroke="#545D6C" width="21"/>
</m>
<m v="8">
<line stroke="#545D6C" width="24"/>
</m>
<m v="9">
<line stroke="#545D6C" width="27"/>
</m>
<m v="10">
<line stroke="#545D6C" width="30"/>
</m>
<m v="11">
<line stroke="#545D6C" width="33"/>
</m>
<m v="12">
<line stroke="#545D6C" width="36"/>
</m>
</m>
</m>
<!-- 道路线 --> <!-- 道路线 -->
<m v="OMDB_RD_LINK"> <m v="OMDB_RD_LINK">
<line stroke="#9c9c9c" width="1"/> <line stroke="#9c9c9c" width="1"/>
</m> </m>
<!--道路方向-->
<m v="OMDB_RD_LINK_DIRECT">
<m k="direct">
<m v="2">
<lineSymbol src="assets:omdb/oneway_left.svg"></lineSymbol>
</m>
<m v="3">
<lineSymbol src="assets:omdb/oneway_right.svg"></lineSymbol>
</m>
</m>
</m>
<!--道路种别--> <!--道路种别-->
<m v="OMDB_RD_LINK_KIND"> <m v="OMDB_RD_LINK_KIND">
<m k="kind"> <m k="kind">
@ -1618,20 +1647,164 @@
<m v="OMDB_SPEEDLIMIT"> <m v="OMDB_SPEEDLIMIT">
<m k="speedFlag"> <m k="speedFlag">
<m v="0"> <m v="0">
<circle fill="#ffffff" radius="28" scale-radius="true" stroke="#ff0000" stroke-width="4"/> <!-- <circle fill="#ffffff" radius="30" scale-radius="true" stroke="#ff0000" stroke-width="4"/>-->
<m select="any"> <!-- <text k="maxSpeed" use="max-speed-limit" priority="0"></text>-->
<text k="maxSpeed" use="max-speed-limit"></text> <m k="maxSpeed">
<caption k="minSpeed" dy="-28" fill="#000000" priority="5" size="14" stroke="#ffffff" <m v="5">
stroke-width="1.0"></caption> <symbol src="assets:omdb/1101/1101_5_0.png"></symbol>
</m> </m>
<m v="10">
<symbol src="assets:omdb/1101/1101_10_0.png"></symbol>
</m>
<m v="15">
<symbol src="assets:omdb/1101/1101_15_0.png"></symbol>
</m>
<m v="20">
<symbol src="assets:omdb/1101/1101_20_0.png"></symbol>
</m>
<m v="25">
<symbol src="assets:omdb/1101/1101_25_0.png"></symbol>
</m>
<m v="30">
<symbol src="assets:omdb/1101/1101_30_0.png"></symbol>
</m>
<m v="35">
<symbol src="assets:omdb/1101/1101_35_0.png"></symbol>
</m>
<m v="40">
<symbol src="assets:omdb/1101/1101_40_0.png"></symbol>
</m>
<m v="45">
<symbol src="assets:omdb/1101/1101_45_0.png"></symbol>
</m>
<m v="50">
<symbol src="assets:omdb/1101/1101_50_0.png"></symbol>
</m>
<m v="55">
<symbol src="assets:omdb/1101/1101_55_0.png"></symbol>
</m>
<m v="60">
<symbol src="assets:omdb/1101/1101_60_0.png"></symbol>
</m>
<m v="65">
<symbol src="assets:omdb/1101/1101_65_0.png"></symbol>
</m>
<m v="70">
<symbol src="assets:omdb/1101/1101_70_0.png"></symbol>
</m>
<m v="75">
<symbol src="assets:omdb/1101/1101_75_0.png"></symbol>
</m>
<m v="80">
<symbol src="assets:omdb/1101/1101_80_0.png"></symbol>
</m>
<m v="85">
<symbol src="assets:omdb/1101/1101_85_0.png"></symbol>
</m>
<m v="90">
<symbol src="assets:omdb/1101/1101_90_0.png"></symbol>
</m>
<m v="95">
<symbol src="assets:omdb/1101/1101_95_0.png"></symbol>
</m>
<m v="100">
<symbol src="assets:omdb/1101/1101_100_0.png"></symbol>
</m>
<m v="105">
<symbol src="assets:omdb/1101/1101_105_0.png"></symbol>
</m>
<m v="110">
<symbol src="assets:omdb/1101/1101_110_0.png"></symbol>
</m>
<m v="115">
<symbol src="assets:omdb/1101/1101_115_0.png"></symbol>
</m>
<m v="120">
<symbol src="assets:omdb/1101/1101_120_0.png"></symbol>
</m>
</m>
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
</m> </m>
<m v="1"> <m v="1">
<circle fill="#ffffff" radius="28" scale-radius="true" stroke="#00ff00" stroke-width="4"/> <!-- <circle fill="#ffffff" radius="30" scale-radius="true" stroke="#00ff00" stroke-width="4"/>-->
<m select="any"> <!-- <text k="maxSpeed" use="max-speed-limit"></text>-->
<text k="maxSpeed" use="max-speed-limit"></text> <m k="maxSpeed">
<caption k="minSpeed" dy="-28" fill="#000000" priority="5" size="14" stroke="#ffffff" <m v="5">
stroke-width="1.0"></caption> <symbol src="assets:omdb/1101/1101_5_1.png"></symbol>
</m> </m>
<m v="10">
<symbol src="assets:omdb/1101/1101_10_1.png"></symbol>
</m>
<m v="15">
<symbol src="assets:omdb/1101/1101_15_1.png"></symbol>
</m>
<m v="20">
<symbol src="assets:omdb/1101/1101_20_1.png"></symbol>
</m>
<m v="25">
<symbol src="assets:omdb/1101/1101_25_1.png"></symbol>
</m>
<m v="30">
<symbol src="assets:omdb/1101/1101_30_1.png"></symbol>
</m>
<m v="35">
<symbol src="assets:omdb/1101/1101_35_1.png"></symbol>
</m>
<m v="40">
<symbol src="assets:omdb/1101/1101_40_1.png"></symbol>
</m>
<m v="45">
<symbol src="assets:omdb/1101/1101_45_1.png"></symbol>
</m>
<m v="50">
<symbol src="assets:omdb/1101/1101_50_1.png"></symbol>
</m>
<m v="55">
<symbol src="assets:omdb/1101/1101_55_1.png"></symbol>
</m>
<m v="60">
<symbol src="assets:omdb/1101/1101_60_1.png"></symbol>
</m>
<m v="65">
<symbol src="assets:omdb/1101/1101_65_1.png"></symbol>
</m>
<m v="70">
<symbol src="assets:omdb/1101/1101_70_1.png"></symbol>
</m>
<m v="75">
<symbol src="assets:omdb/1101/1101_75_1.png"></symbol>
</m>
<m v="80">
<symbol src="assets:omdb/1101/1101_80_1.png"></symbol>
</m>
<m v="85">
<symbol src="assets:omdb/1101/1101_85_1.png"></symbol>
</m>
<m v="90">
<symbol src="assets:omdb/1101/1101_90_1.png"></symbol>
</m>
<m v="95">
<symbol src="assets:omdb/1101/1101_95_1.png"></symbol>
</m>
<m v="100">
<symbol src="assets:omdb/1101/1101_100_1.png"></symbol>
</m>
<m v="105">
<symbol src="assets:omdb/1101/1101_105_1.png"></symbol>
</m>
<m v="110">
<symbol src="assets:omdb/1101/1101_110_1.png"></symbol>
</m>
<m v="115">
<symbol src="assets:omdb/1101/1101_115_1.png"></symbol>
</m>
<m v="120">
<symbol src="assets:omdb/1101/1101_120_1.png"></symbol>
</m>
</m>
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
</m> </m>
</m> </m>
</m> </m>
@ -1641,50 +1814,20 @@
<!--可变点限速--> <!--可变点限速-->
<m v="OMDB_SPEEDLIMIT_VAR"> <m v="OMDB_SPEEDLIMIT_VAR">
</m> </m>
<!--车道数--> <!--车道中心线-->
<m v="OMDB_LANE_NUM"> <m v="OMDB_LANE_LINK_LG">
<m k="laneNum"> <line stroke="#ecf0f1" width="0.1" dasharray="35,35"/>
<m v="1">
<line stroke="#545D6C" width="3"/>
</m> </m>
<!--道路方向-->
<m v="OMDB_LINK_DIRECT">
<m k="direct">
<m v="2"> <m v="2">
<line stroke="#545D6C" width="6"/> <lineSymbol src="assets:omdb/oneway_right.svg"></lineSymbol>
</m> </m>
<m v="3"> <m v="3">
<line stroke="#545D6C" width="9"/> <lineSymbol src="assets:omdb/oneway_left.svg"></lineSymbol>
</m>
<m v="4">
<line stroke="#545D6C" width="12"/>
</m>
<m v="5">
<line stroke="#545D6C" width="15"/>
</m>
<m v="6">
<line stroke="#545D6C" width="18"/>
</m>
<m v="7">
<line stroke="#545D6C" width="21"/>
</m>
<m v="8">
<line stroke="#545D6C" width="24"/>
</m>
<m v="9">
<line stroke="#545D6C" width="27"/>
</m>
<m v="10">
<line stroke="#545D6C" width="30"/>
</m>
<m v="11">
<line stroke="#545D6C" width="33"/>
</m>
<m v="12">
<line stroke="#545D6C" width="36"/>
</m> </m>
</m> </m>
</m> </m>
<!--车道中心线-->
<m v="OMDB_LANE_LG_LINK">
<line stroke="#ecf0f1" width="0.1" dasharray="35,35"/>
</m>
</m> </m>
</rendertheme> </rendertheme>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show More