1. 增加OMDB数据图层 2. 修改Realm数据库文件位置

This commit is contained in:
2023-04-24 10:52:14 +08:00
parent 51bd47842a
commit 60622a3197
11 changed files with 370 additions and 41 deletions

View File

@@ -20,20 +20,6 @@ class OMQSApplication : Application() {
Util.getInstance().init(applicationContext)
NetUtils.getInstance().init(this)
TakePhotoManager.getInstance().init(this, 1)
FileManager.initRootDir(this)
Realm.init(this)
val password = "encryp".encodeToByteArray().copyInto(ByteArray(64))
// 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Log.d("OMQSApplication", "密码是: ${byteArrayToHexString(password)}")
// 1110000011000010111001101110011011101110110111101110010011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
val config = RealmConfiguration.Builder()
.directory(File(Constant.DATA_PATH))
.name("OMQS.realm")
.encryptionKey(password)
// .modules(Realm.getDefaultModule(), MyRealmModule())
.schemaVersion(1)
.build()
Realm.setDefaultConfiguration(config)
}
private fun getKey(inputString: String): String {
@@ -42,7 +28,4 @@ class OMQSApplication : Application() {
return hashBytes.joinToString("") { "%02x".format(it) };
}
fun byteArrayToHexString(byteArray: ByteArray): String {
return byteArray.joinToString("") { "%02x".format(it) }
}
}

View File

@@ -10,7 +10,7 @@ import com.hjq.permissions.XXPermissions
/**
* 权限申请Activity
*/
open class PermissionsActivity : BaseActivity() {
open abstract class PermissionsActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val permissionList = mutableListOf<String>()
@@ -29,11 +29,11 @@ open class PermissionsActivity : BaseActivity() {
//定位权限
permissionList.add(Permission.ACCESS_FINE_LOCATION)
permissionList.add(Permission.ACCESS_COARSE_LOCATION)
//android10
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
permissionList.add(Permission.ACCESS_BACKGROUND_LOCATION)
}
/* XXPermissions.with(this)
// //android10
// if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
// permissionList.add(Permission.ACCESS_BACKGROUND_LOCATION)
// }
XXPermissions.with(this)
// 申请单个权限
.permission(permissionList)
// 设置权限请求拦截器(局部设置)
@@ -50,10 +50,10 @@ open class PermissionsActivity : BaseActivity() {
Toast.LENGTH_SHORT
)
.show()
onPermissionsGranted()
onPermissionsDenied()
return
} else {
onPermissionsDenied()
onPermissionsGranted()
}
// 在SD卡创建项目目录
}
@@ -73,20 +73,16 @@ open class PermissionsActivity : BaseActivity() {
onPermissionsDenied()
}
}
})*/
})
}
/**
* 权限全部同意
*/
open fun onPermissionsGranted() {
}
open abstract fun onPermissionsGranted()
/**
* 权限
*/
open fun onPermissionsDenied() {
}
open abstract fun onPermissionsDenied()
}

View File

@@ -7,14 +7,18 @@ import android.widget.Toast
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.LoginUserBean
import com.navinfo.omqs.db.RoomAppDatabase
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager
import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.Realm
import io.realm.RealmConfiguration
import kotlinx.coroutines.*
import okio.IOException
import java.io.File
import javax.inject.Inject
enum class LoginStatus {
@@ -110,8 +114,7 @@ class LoginViewModel @Inject constructor(
//文件夹初始化
try {
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT)
createUserFolder(context)
// 初始化Realm
createUserFolder(context, "1")
} catch (e: IOException) {
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE)
}
@@ -151,8 +154,21 @@ class LoginViewModel @Inject constructor(
* 创建用户目录
*/
@Throws(IOException::class)
private fun createUserFolder(context: Context) {
private fun createUserFolder(context: Context, userId: String) {
// 在SD卡创建用户目录解压资源等
// 初始化Realm
Realm.init(context.applicationContext)
val password = "encryp".encodeToByteArray().copyInto(ByteArray(64))
// 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Log.d("OMQSApplication", "密码是: ${byteArrayToHexString(password)}")
val config = RealmConfiguration.Builder()
.directory(File("${Constant.DATA_PATH}/${userId}"))
.name("OMQS.realm")
.encryptionKey(password)
// .modules(Realm.getDefaultModule(), MyRealmModule())
.schemaVersion(1)
.build()
Realm.setDefaultConfiguration(config)
}
/**
@@ -169,4 +185,8 @@ class LoginViewModel @Inject constructor(
super.onCleared()
cancelLogin()
}
private fun byteArrayToHexString(byteArray: ByteArray): String {
return byteArray.joinToString("") { "%02x".format(it) }
}
}

View File

@@ -17,6 +17,7 @@ import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
import com.navinfo.collect.library.data.RealmUtils
import com.navinfo.collect.library.data.entity.OMDBEntity
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.FragmentPersonalCenterBinding
import com.navinfo.omqs.db.ImportOMDBHelper
@@ -30,6 +31,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.FlowCollector
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.oscim.core.GeoPoint
import java.io.File
import java.util.UUID
import javax.inject.Inject
@@ -46,6 +48,8 @@ class PersonalCenterFragment : Fragment(), FSAFActivityCallbacks {
private val viewModel by lazy { viewModels<PersonalCenterViewModel>().value }
@Inject
lateinit var importOMDBHiltFactory: ImportOMDBHiltFactory
@Inject
lateinit var niMapController: NIMapController
override fun onCreateView(
@@ -107,6 +111,8 @@ class PersonalCenterFragment : Fragment(), FSAFActivityCallbacks {
}
R.id.personal_center_menu_test -> {
viewModel.readRealmData()
// 定位到指定位置
niMapController.mMapView.vtmMap.animator().animateTo(GeoPoint(28.608398, 115.67901))
}
}
true

View File

@@ -10,6 +10,7 @@ import com.blankj.utilcode.util.UriUtils
import com.blankj.utilcode.util.ZipUtils
import com.google.gson.Gson
import com.navinfo.collect.library.data.entity.*
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.omqs.bean.ScProblemTypeBean
import com.navinfo.omqs.bean.ScRootCauseAnalysisBean