diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt
index 7efdfef901..da94e704c1 100644
--- a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt
+++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt
@@ -22,6 +22,8 @@ class TimeProvider : TimeService {
private var diffTime = 0L
+ private var diffTimeGetTime = 0L
+
override fun loadNewTime() {
OchChainLogManager.writeChainLogTime("时间同步", "开始时间同步")
d(TAG, "时间同步_开始时间同步")
@@ -36,6 +38,7 @@ class TimeProvider : TimeService {
val netTime = (endTime - startTime) / 2
val currentServerTime = serverTime + netTime
diffTime = currentServerTime - endTime
+ diffTimeGetTime = endTime
}
OchChainLogManager.writeChainLogTime(
@@ -78,6 +81,14 @@ class TimeProvider : TimeService {
return System.currentTimeMillis() + diffTime
}
+ override fun getSynServerTime(): Long {
+ return diffTimeGetTime
+ }
+
+ override fun getTimeStampDiff(): Long {
+ return diffTime
+ }
+
override fun init(context: Context?) {
this.context = context
diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt
index 109127aa32..b30d09babd 100644
--- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt
+++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt
@@ -13,7 +13,7 @@ object TimeManager {
private const val TAG = M_OCHCOMMON+"TimeManager"
- private var skinService: TimeService? =
+ private var timeService: TimeService? =
ARouter.getInstance().build(OchCommonConst.BIZ_TIME).navigation() as TimeService
@@ -24,11 +24,21 @@ object TimeManager {
}
fun loadNewTime(){
- skinService?.loadNewTime()
+ timeService?.loadNewTime()
}
fun getCurrentTimeStamp():Long{
- return skinService?.getCurrentTimeStamp()?:System.currentTimeMillis()
+ return timeService?.getCurrentTimeStamp()?:System.currentTimeMillis()
}
+ fun getSynServerTime():Long{
+ return timeService?.getSynServerTime()?:0L
+ }
+
+ fun getTimeStampDiff():Long{
+ return timeService?.getTimeStampDiff()?:0L
+ }
+
+
+
}
\ No newline at end of file
diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt
index a1e3bb2726..eeb35487f1 100644
--- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt
+++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt
@@ -11,4 +11,8 @@ interface TimeService : IProvider {
fun getCurrentTimeStamp():Long
+ fun getSynServerTime():Long
+
+ fun getTimeStampDiff():Long
+
}
\ No newline at end of file
diff --git a/OCH/offline/driver/schemas/com.mogo.och.offline.repository.db.MyDataBase/6.json b/OCH/offline/driver/schemas/com.mogo.och.offline.repository.db.MyDataBase/6.json
new file mode 100644
index 0000000000..7324120203
--- /dev/null
+++ b/OCH/offline/driver/schemas/com.mogo.och.offline.repository.db.MyDataBase/6.json
@@ -0,0 +1,475 @@
+{
+ "formatVersion": 1,
+ "database": {
+ "version": 6,
+ "identityHash": "01269591615dbf16e01fcf0281ea117b",
+ "entities": [
+ {
+ "tableName": "contrail_data_table",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `csv_file_url` TEXT, `csv_file_md5` TEXT, `txt_file_url` TEXT, `txt_file_md5` TEXT, `contrail_save_time` INTEGER, `md5` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "lineId",
+ "columnName": "line_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "csvFileUrl",
+ "columnName": "csv_file_url",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "csvFileMd5",
+ "columnName": "csv_file_md5",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "txtFileUrl",
+ "columnName": "txt_file_url",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "txtFileMd5",
+ "columnName": "txt_file_md5",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "contrailSaveTime",
+ "columnName": "contrail_save_time",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "md5",
+ "columnName": "md5",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_contrail_data_table_line_id",
+ "unique": false,
+ "columnNames": [
+ "line_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)"
+ },
+ {
+ "name": "index_contrail_data_table_md5",
+ "unique": false,
+ "columnNames": [
+ "md5"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_md5` ON `${TABLE_NAME}` (`md5`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "line_data_table",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `line_name` TEXT, `end_station_name` TEXT, `line_get_time` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "lineId",
+ "columnName": "line_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lineName",
+ "columnName": "line_name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "endStationName",
+ "columnName": "end_station_name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "linegetTime",
+ "columnName": "line_get_time",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_line_data_table_line_id",
+ "unique": false,
+ "columnNames": [
+ "line_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_line_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "site_data_table",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `site_id` INTEGER, `line_id` INTEGER, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `introduction` TEXT, `is_play_tts` INTEGER, `md5` TEXT, `videoList` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "siteId",
+ "columnName": "site_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lineId",
+ "columnName": "line_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "nameKr",
+ "columnName": "name_kr",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "seq",
+ "columnName": "seq",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gcjLon",
+ "columnName": "gcj_lon",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gcjLat",
+ "columnName": "gcj_lat",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lon",
+ "columnName": "lon",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lat",
+ "columnName": "lat",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "introduction",
+ "columnName": "introduction",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "isPlayTts",
+ "columnName": "is_play_tts",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "md5",
+ "columnName": "md5",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "videoListDB",
+ "columnName": "videoList",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_site_data_table_site_id",
+ "unique": false,
+ "columnNames": [
+ "site_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_site_id` ON `${TABLE_NAME}` (`site_id`)"
+ },
+ {
+ "name": "index_site_data_table_line_id",
+ "unique": false,
+ "columnNames": [
+ "line_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "used_line_data_table",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "taskId",
+ "columnName": "task_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lineId",
+ "columnName": "line_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "siteId",
+ "columnName": "site_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lineName",
+ "columnName": "line_name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "nameKr",
+ "columnName": "name_kr",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "seq",
+ "columnName": "seq",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gcjLon",
+ "columnName": "gcj_lon",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gcjLat",
+ "columnName": "gcj_lat",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lon",
+ "columnName": "lon",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lat",
+ "columnName": "lat",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "drivingStatus",
+ "columnName": "driving_status",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "leaving",
+ "columnName": "leaving",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "arrivedTime",
+ "columnName": "arrived_time",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "leaveTime",
+ "columnName": "leave_time",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "introduction",
+ "columnName": "introduction",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "isPlayTts",
+ "columnName": "is_play_tts",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "eventSaveTime",
+ "columnName": "event_save_time",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "videoList",
+ "columnName": "videoList",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "temp_task_data_table",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `start_time` INTEGER NOT NULL, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "taskId",
+ "columnName": "task_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "lineId",
+ "columnName": "line_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "startTime",
+ "columnName": "start_time",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "endtime",
+ "columnName": "end_time",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "taskgetTime",
+ "columnName": "task_get_time",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "status",
+ "columnName": "status",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_temp_task_data_table_task_id",
+ "unique": false,
+ "columnNames": [
+ "task_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_temp_task_data_table_task_id` ON `${TABLE_NAME}` (`task_id`)"
+ },
+ {
+ "name": "index_temp_task_data_table_line_id",
+ "unique": false,
+ "columnNames": [
+ "line_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_temp_task_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)"
+ }
+ ],
+ "foreignKeys": []
+ }
+ ],
+ "views": [],
+ "setupQueries": [
+ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
+ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '01269591615dbf16e01fcf0281ea117b')"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginModel.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginModel.kt
new file mode 100644
index 0000000000..05f405a660
--- /dev/null
+++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginModel.kt
@@ -0,0 +1,83 @@
+package com.mogo.och.offline.ui.go2login
+
+import androidx.lifecycle.ViewModel
+import com.mogo.eagle.core.data.config.FunctionBuildConfig
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
+import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
+import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OFFLINE
+import com.mogo.och.common.module.biz.time.TimeManager
+import com.mogo.och.common.module.manager.loop.BizLoopManager
+import com.mogo.och.common.module.utils.RxUtils
+import com.mogo.och.offline.callback.IBusLinesCallback
+import com.mogo.och.offline.model.LineModel
+import io.reactivex.Observable
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+/**
+ * @author XuXinChao
+ * @description BadCase录包管理页面
+ * @since: 2022/12/15
+ */
+class GoLoginModel : ViewModel(), IBusLinesCallback {
+
+ private val TAG = M_OFFLINE+ GoLoginModel::class.java.simpleName
+
+ private var viewCallback: GoLoginViewCallback?=null
+
+ private var countDownDisposable: Disposable? = null
+
+ override fun onCleared() {
+ d(TAG,"onCleared")
+ LineModel.setBusLinesCallback(TAG,null)
+ }
+
+ fun setDistanceCallback(viewCallback: GoLoginViewCallback){
+ this.viewCallback = viewCallback
+ LineModel.setBusLinesCallback(TAG, this)
+ }
+
+ fun startCountDown(){
+ val countDownSeconds = 5L;
+ countDownDisposable = Observable.intervalRange(0, countDownSeconds, 0, 1, TimeUnit.SECONDS)
+ .map { aLong -> countDownSeconds - aLong }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ this.viewCallback?.setCountDownText("${it}s",false)
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时:$it")
+ }, {
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onError:${it}")
+ it.printStackTrace()
+ this.viewCallback ?.setCountDownText("0",true)
+ }, {
+ RxUtils.createSubscribe(1_000) {
+ this.viewCallback ?.setCountDownText("0s",true)
+ }
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onComplete")
+ })
+ }
+
+ override fun onCompleteTask() {
+ super.onCompleteTask()
+ if(FunctionBuildConfig.isOffLine){
+ if(System.currentTimeMillis()-TimeManager.getSynServerTime()<60*2*1000
+ && TimeManager.getTimeStampDiff()!=0L
+ ){
+ BizLoopManager.runInMainThread{
+ this.viewCallback?.showView()
+ }
+ }
+ }
+ }
+
+ interface GoLoginViewCallback{
+ fun setCountDownText(s: String, b: Boolean)
+ fun showView()
+ }
+
+}
+
diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginView.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginView.kt
new file mode 100644
index 0000000000..6725597f33
--- /dev/null
+++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/go2login/GoLoginView.kt
@@ -0,0 +1,92 @@
+package com.mogo.och.offline.ui.go2login
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import com.mogo.eagle.core.utilcode.kotlin.onClick
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
+import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OFFLINE
+import com.mogo.och.common.module.utils.ResourcesUtils
+import com.mogo.och.common.module.utils.RxUtils
+import com.mogo.och.offline.R
+import com.mogo.och.offline.model.OrderModel
+import com.mogo.och.offline.ui.bizswitch.SwtichBizModel
+import kotlinx.android.synthetic.main.offline_go_login.view.actv_code_download
+import kotlinx.android.synthetic.main.offline_go_login.view.actv_go2login
+
+
+class GoLoginView: ConstraintLayout, GoLoginModel.GoLoginViewCallback {
+
+
+ constructor(context: Context) : super(context)
+
+ constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
+
+ constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
+
+ constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
+
+
+ companion object {
+ const val TAG = "${M_OFFLINE}SwitchLineView"
+ }
+
+ private var viewModel: GoLoginModel?=null
+ private var viewbizModel: SwtichBizModel?=null
+
+ init {
+ LayoutInflater.from(context).inflate(R.layout.offline_go_login, this, true)
+ initView()
+ }
+
+ private fun initView(){
+ actv_go2login.onClick {
+ OrderModel.logoutInner()
+ }
+ }
+
+ override fun onVisibilityAggregated(isVisible: Boolean) {
+ super.onVisibilityAggregated(isVisible)
+ if(isVisible){
+ viewModel?.startCountDown()
+ }
+ }
+
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ viewModel = findViewTreeViewModelStoreOwner()?.let {
+ ViewModelProvider(it).get(GoLoginModel::class.java)
+ }
+
+ viewModel?.setDistanceCallback(this)
+ CallerLogger.d(TAG,"onAttachedToWindow")
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ CallerLogger.d(TAG,"onDetachedFromWindow")
+ }
+
+ override fun setCountDownText(s: String, show: Boolean) {
+ if(show){
+ actv_code_download.text = ResourcesUtils.getString(R.string.go_login_count_down,s)
+ visibility = View.VISIBLE
+ RxUtils.createSubscribe(1_000) {
+ visibility = View.GONE
+ }
+ }else{
+ visibility = View.VISIBLE
+ actv_code_download.text = ResourcesUtils.getString(R.string.go_login_count_down,s)
+ }
+ }
+
+ override fun showView() {
+ visibility = View.VISIBLE
+ }
+
+
+}
diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/offline_go_login_bg.png b/OCH/offline/driver/src/main/res/drawable-nodpi/offline_go_login_bg.png
new file mode 100644
index 0000000000..80ef329028
Binary files /dev/null and b/OCH/offline/driver/src/main/res/drawable-nodpi/offline_go_login_bg.png differ
diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/offline_login_bg.png b/OCH/offline/driver/src/main/res/drawable-nodpi/offline_login_bg.png
new file mode 100644
index 0000000000..04728aa06d
Binary files /dev/null and b/OCH/offline/driver/src/main/res/drawable-nodpi/offline_login_bg.png differ
diff --git a/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml b/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml
index ca6121f7c8..dee9bf69af 100644
--- a/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml
+++ b/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml
@@ -34,6 +34,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/offline/driver/src/main/res/values/strings.xml b/OCH/offline/driver/src/main/res/values/strings.xml
index d3a45f4fef..1a777f3682 100644
--- a/OCH/offline/driver/src/main/res/values/strings.xml
+++ b/OCH/offline/driver/src/main/res/values/strings.xml
@@ -22,6 +22,10 @@
蘑菇小巴正在进站
蘑菇小巴出发咯
+ 当前网络良好(%1$s)
+
+
+
已到达%1$s,带好随身物品,下车请注意安全。