From a970ca199281b3b3aa5b8c203ef45f8f7da30599 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Sun, 25 Jun 2023 16:44:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A4=E5=86=85=E6=95=B4?= =?UTF-8?q?=E7=90=86=E5=B7=A5=E5=85=B7=E6=89=AB=E6=8F=8F=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 +- .../main/java/com/navinfo/omqs/Constant.kt | 2 +- .../com/navinfo/omqs/http/NetworkService.kt | 2 +- .../navinfo/omqs/http/NetworkServiceImpl.kt | 4 +- .../omqs/http/RetrofitNetworkServiceAPI.kt | 7 +- .../omqs/ui/activity/scan/QRCodeViewModel.kt | 73 ++++++++++--------- .../{QRCodeActivity.kt => QrCodeActivity.kt} | 47 ++++++++---- ...ultActivity.kt => QrCodeResultActivity.kt} | 0 .../personalcenter/PersonalCenterFragment.kt | 4 +- app/src/main/res/layout/activity_qr_code.xml | 6 +- 10 files changed, 88 insertions(+), 63 deletions(-) rename app/src/main/java/com/navinfo/omqs/ui/activity/scan/{QRCodeActivity.kt => QrCodeActivity.kt} (84%) rename app/src/main/java/com/navinfo/omqs/ui/activity/scan/{QRCodeResultActivity.kt => QrCodeResultActivity.kt} (100%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ca45c1db..afe4904a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + + > + suspend fun connectIndoorTools(url: String): NetResult } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt index cf6bdcdd..db12984f 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt @@ -77,11 +77,11 @@ class NetworkServiceImpl @Inject constructor( } } - override suspend fun connectIndoorTools(url: String): NetResult> = + override suspend fun connectIndoorTools(url: String): NetResult = //在IO线程中运行 withContext(Dispatchers.IO) { return@withContext try { - val result = netApi.retrofitConnectIndoorTools(url) + val result = netApi.retrofitConnectIndoorTools(url = url) if (result.isSuccessful) { if (result.code() == 200) { NetResult.Success(result.body()) diff --git a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt index d948588a..89e7db1d 100644 --- a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt +++ b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt @@ -68,10 +68,11 @@ interface RetrofitNetworkServiceAPI { /** - * 获取离线地图城市列表 + * 连接室内整理工具 */ - @GET("/drdc/MapDownload/maplist") - suspend fun retrofitConnectIndoorTools(@Url url: String): Response> + @Streaming + @GET + suspend fun retrofitConnectIndoorTools(@Url url: String): Response @Headers("Content-Type: application/json") @POST("/devcp/uploadSceneProblem") diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt index 12b767c5..8038cf22 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt @@ -6,11 +6,13 @@ 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.QRCodeBean import com.navinfo.omqs.bean.SysUserBean import com.navinfo.omqs.http.DefaultResponse import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetworkService +import com.navinfo.omqs.ui.activity.login.LoginStatus import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -19,54 +21,28 @@ import kotlinx.coroutines.withContext import java.io.IOException import javax.inject.Inject -enum class QRCodeStatus { - /** - * 访问服务器登陆中 - */ - LOGIN_STATUS_NET_LOADING, - - /** - * 访问离线地图列表 - */ - LOGIN_STATUS_NET_OFFLINE_MAP, - - /** - * 初始化文件夹 - */ - LOGIN_STATUS_FOLDER_INIT, - - /** - * 创建文件夹失败 - */ - LOGIN_STATUS_FOLDER_FAILURE, - +enum class QrCodeStatus { /** * 网络访问失败 */ - LOGIN_STATUS_NET_FAILURE, - + QR_CODE_STATUS_NET_FAILURE, /** * 成功 */ - LOGIN_STATUS_SUCCESS, - - /** - * 取消 - */ - LOGIN_STATUS_CANCEL, + QR_CODE_STATUS_SUCCESS } + @HiltViewModel -class QRCodeViewModel @Inject constructor( +class QrCodeViewModel @Inject constructor( private val networkService: NetworkService ) : ViewModel() { //用户信息 val qrCodeBean: MutableLiveData = MutableLiveData() //是不是连接成功 - val qrCodeStatus: MutableLiveData = MutableLiveData() + val qrCodeStatus: MutableLiveData = MutableLiveData() - var jobQRCodeStatus: Job? = null; init { qrCodeBean.value = QRCodeBean() @@ -98,12 +74,25 @@ class QRCodeViewModel @Inject constructor( val url = "http://$ipTemp:8080/sensor/service/keepalive" when (val result = networkService.connectIndoorTools(url)) { is NetResult.Success<*> -> { + if (result.data != null) { try { - val defaultUserResponse = - result.data as DefaultResponse - if (defaultUserResponse.success) { + val defaultUserResponse = result.data as QRCodeBean + + if (defaultUserResponse.errcode==0) { + + Constant.INDOOR_IP = ipTemp + + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_SUCCESS) + + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "连接室内整理工具成功。", + Toast.LENGTH_LONG + ).show() + } } else { withContext(Dispatchers.Main) { Toast.makeText( @@ -116,6 +105,13 @@ class QRCodeViewModel @Inject constructor( } } catch (e: IOException) { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${e.message}", + Toast.LENGTH_SHORT + ).show() + } } } } @@ -129,6 +125,7 @@ class QRCodeViewModel @Inject constructor( ) .show() } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) } is NetResult.Failure<*> -> { @@ -140,6 +137,7 @@ class QRCodeViewModel @Inject constructor( ) .show() } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) } else -> {} @@ -148,4 +146,9 @@ class QRCodeViewModel @Inject constructor( } } } + + override fun onCleared() { + super.onCleared() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt similarity index 84% rename from app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeActivity.kt rename to app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt index 3160edbf..0547f1d7 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt @@ -1,39 +1,35 @@ package com.navinfo.omqs.ui.activity.scan import android.annotation.SuppressLint -import android.content.Intent import android.graphics.Rect import android.graphics.RectF import android.os.Bundle import android.util.Log import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity import androidx.camera.core.ImageCapture import androidx.camera.view.LifecycleCameraController import androidx.databinding.DataBindingUtil -import androidx.lifecycle.viewModelScope import com.navinfo.omqs.R import com.navinfo.omqs.databinding.ActivityQrCodeBinding -import com.navinfo.omqs.ui.activity.login.LoginViewModel +import com.navinfo.omqs.ui.activity.BaseActivity import com.navinfo.omqs.ui.listener.QRCodeAnalyser -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext +import dagger.hilt.android.AndroidEntryPoint import java.util.concurrent.ExecutorService import java.util.concurrent.Executors +import androidx.lifecycle.Observer +import com.navinfo.omqs.ui.activity.login.LoginStatus /** - * date:2021/6/18 - * author:zhangteng + * date:2023/6/18 + * author:qj * description:二维码扫描 */ -class QRCodeActivity : AppCompatActivity() { +@AndroidEntryPoint +class QrCodeActivity : BaseActivity() { private lateinit var binding: ActivityQrCodeBinding private lateinit var lifecycleCameraController: LifecycleCameraController private lateinit var cameraExecutor: ExecutorService - private val viewModel by viewModels() - + private val viewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -43,9 +39,29 @@ class QRCodeActivity : AppCompatActivity() { binding.lifecycleOwner = this binding.activity = this + initView() initController() } + private fun initView() { + //登录校验,初始化成功 + viewModel.qrCodeStatus.observe(this, qrCodeObserve) + } + + /* + * 监听扫描结果 + * */ + private val qrCodeObserve = Observer { + when (it) { + QrCodeStatus.QR_CODE_STATUS_SUCCESS -> { + finish() + } + QrCodeStatus.QR_CODE_STATUS_NET_FAILURE -> { + + } + } + } + @SuppressLint("ClickableViewAccessibility", "UnsafeOptInUsageError") private fun initController() { cameraExecutor = Executors.newSingleThreadExecutor() @@ -92,15 +108,18 @@ class QRCodeActivity : AppCompatActivity() { } private fun intentToResult(result: String) { - viewModel.connect(this, result) Log.e("qj", "QRCodeActivity === $result") + + viewModel.connect(this, result) + /* val intent = Intent(this, QRCodeResultActivity::class.java) intent.putExtra(QRCodeResultActivity.RESULT_KEY, result) startActivity(intent) finish()*/ } + private var scaleX = 0f private var scaleY = 0f diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeResultActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeResultActivity.kt similarity index 100% rename from app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeResultActivity.kt rename to app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeResultActivity.kt diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 5667aa16..18083f8a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -22,7 +22,7 @@ import com.navinfo.omqs.db.ImportOMDBHelper import com.navinfo.omqs.hilt.ImportOMDBHiltFactory import com.navinfo.omqs.tools.CoroutineUtils import com.navinfo.omqs.ui.fragment.BaseFragment -import com.navinfo.omqs.ui.activity.scan.QRCodeActivity +import com.navinfo.omqs.ui.activity.scan.QrCodeActivity import com.permissionx.guolindev.PermissionX import dagger.hilt.android.AndroidEntryPoint import org.oscim.core.GeoPoint @@ -142,7 +142,7 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) : } private fun intentTOQRCode() { - var intent = Intent(context, QRCodeActivity::class.java); + var intent = Intent(context, QrCodeActivity::class.java); startActivity(intent) } diff --git a/app/src/main/res/layout/activity_qr_code.xml b/app/src/main/res/layout/activity_qr_code.xml index a802f372..c3ae875e 100644 --- a/app/src/main/res/layout/activity_qr_code.xml +++ b/app/src/main/res/layout/activity_qr_code.xml @@ -7,15 +7,13 @@ - - + type="com.navinfo.omqs.ui.activity.scan.QrCodeActivity" /> + type="com.navinfo.omqs.ui.activity.scan.QrCodeViewModel" />