diff --git a/app/build.gradle b/app/build.gradle index 30ac887..d18e5b5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,6 +49,9 @@ dependencies { implementation project(path: ':library-serialPort') //添加excel implementation rootProject.ext.dependencies.jxl + // 时间日期选择控件 + implementation 'com.github.loper7:DateTimePicker:0.6.3' + implementation 'com.google.android.material:material:1.5.0' annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.0.0' } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt index 39ae7ad..86881b2 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt @@ -8,6 +8,6 @@ class App : Application() { override fun onCreate() { super.onCreate() -// LztekUtil.setObject(Lztek.create(this)) + LztekUtil.setObject(Lztek.create(this)) } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt index eeedfff..87d0c83 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt @@ -5,6 +5,9 @@ import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySensorBinding import com.yinuo.safetywatcher.databinding.ActivityTimeSettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity +import com.yinuo.safetywatcher.watcher.utils.LztekUtil +import java.text.SimpleDateFormat +import java.util.Locale class TimeSettingActivity : NoOptionsActivity() { @@ -12,6 +15,12 @@ class TimeSettingActivity : NoOptionsActivity() { ActivityTimeSettingBinding.inflate(layoutInflater) } + private val timeFormater by lazy { + SimpleDateFormat("yyyy.MM.dd HH:mm", Locale.ROOT) + } + + private var changeTime = -1L; + override fun getTopBarTitle(): String? { return getString(R.string.time_setting) } @@ -21,5 +30,27 @@ class TimeSettingActivity : NoOptionsActivity() { } override fun initView() { + // 初始化默认时间 + val time = System.currentTimeMillis() + setShowTime(time) + + mBingding.picker.setOnDateTimeChangedListener { + changeTime = it + } + + mBingding.tvCancel.setOnClickListener { + onBackPressed() + } + mBingding.tvConfirm.setOnClickListener { + if (changeTime > 0) { + LztekUtil.getLztek().setSystemTime(changeTime) + } + onBackPressed() + } + } + + fun setShowTime(time: Long) { + mBingding.picker.setDefaultMillisecond(System.currentTimeMillis()) + mBingding.tvTime.text = timeFormater.format(time) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/datepicker_bg.xml b/app/src/main/res/drawable/datepicker_bg.xml new file mode 100644 index 0000000..16a04da --- /dev/null +++ b/app/src/main/res/drawable/datepicker_bg.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="@color/_202A45" /> + <corners android:radius="@dimen/_20dp" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/white_rectangle.xml b/app/src/main/res/drawable/white_rectangle.xml new file mode 100644 index 0000000..e5adbe7 --- /dev/null +++ b/app/src/main/res/drawable/white_rectangle.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + + <solid android:color="#ffffffff" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_time_setting.xml b/app/src/main/res/layout/activity_time_setting.xml index d829e29..08fa082 100644 --- a/app/src/main/res/layout/activity_time_setting.xml +++ b/app/src/main/res/layout/activity_time_setting.xml @@ -1,7 +1,97 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:gravity="center_horizontal" + android:orientation="vertical"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="@dimen/_960dp" + android:layout_height="@dimen/_580dp" + android:layout_marginTop="@dimen/_201dp" + android:background="@drawable/warn_setting_btn_bg"> + + <View + android:id="@+id/divider" + android:layout_width="@dimen/_6dp" + android:layout_height="@dimen/_28dp" + android:layout_marginStart="@dimen/_40dp" + android:background="@drawable/white_rectangle" + app:layout_constraintBottom_toTopOf="@id/tv_cancel" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/tv_currentTime" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/_6dp" + android:text="@string/current_time" + android:textColor="@color/white" + android:textSize="@dimen/_30dp" + app:layout_constraintBottom_toTopOf="@id/tv_cancel" + app:layout_constraintStart_toEndOf="@id/divider" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/tv_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/_6dp" + android:text="2023.5.31" + android:textColor="@color/white" + android:textSize="@dimen/_30dp" + app:layout_constraintStart_toStartOf="@id/tv_currentTime" + app:layout_constraintTop_toBottomOf="@id/tv_currentTime" /> + + + <com.loper7.date_time_picker.DateTimePicker + android:id="@+id/picker" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:paddingHorizontal="@dimen/_40dp" + android:paddingVertical="@dimen/_66dp" + android:background="@drawable/datepicker_bg" + android:layout_marginEnd="@dimen/_40dp" + app:dt_dividerColor="#00000000" + app:dt_layout="@layout/layout_date_picker_globalization1" + app:dt_normalTextSize="@dimen/_28dp" + app:dt_selectTextSize="@dimen/_30dp" + app:dt_selectedTextBold="true" + app:dt_showLabel="true" + app:dt_textBold="true" + app:dt_textColor="@color/color_offline" + app:dt_themeColor="@color/white" + app:layout_constraintBottom_toTopOf="@id/tv_confirm" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/tv_cancel" + android:layout_width="@dimen/_480dp" + android:layout_height="@dimen/_81dp" + android:background="@drawable/cancel_btn_bg" + android:gravity="center" + android:text="@string/cancel" + android:textColor="@color/white_30" + android:textSize="@dimen/_36dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <TextView + android:id="@+id/tv_confirm" + android:layout_width="@dimen/_480dp" + android:layout_height="@dimen/_81dp" + android:layout_alignParentEnd="true" + android:layout_alignParentBottom="true" + android:background="@drawable/confirm_btn_bg" + android:gravity="center" + android:text="@string/confirm" + android:textColor="@color/white" + android:textSize="@dimen/_36dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> + </androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_date_picker_globalization1.xml b/app/src/main/res/layout/layout_date_picker_globalization1.xml new file mode 100644 index 0000000..788e830 --- /dev/null +++ b/app/src/main/res/layout/layout_date_picker_globalization1.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:orientation="horizontal"> + + <com.loper7.date_time_picker.number_picker.NumberPicker + android:id="@+id/np_datetime_year" + android:layout_width="@dimen/_121dp" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:np_dividerColor="#00000000" + app:np_dividerThickness="0.6dp" + app:np_wheelItemCount="5" /> + + <com.loper7.date_time_picker.number_picker.NumberPicker + android:id="@+id/np_datetime_month" + android:layout_width="@dimen/_90dp" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/np_datetime_year" + app:layout_constraintTop_toTopOf="parent" + app:np_dividerColor="#00000000" + app:np_dividerThickness="0.6dp" + app:np_wheelItemCount="5" /> + + <com.loper7.date_time_picker.number_picker.NumberPicker + android:id="@+id/np_datetime_day" + android:layout_width="@dimen/_90dp" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/np_datetime_month" + app:layout_constraintTop_toTopOf="parent" + app:np_dividerColor="#00000000" + app:np_dividerThickness="0.6dp" + app:np_wheelItemCount="5" /> + + <com.loper7.date_time_picker.number_picker.NumberPicker + android:id="@+id/np_datetime_hour" + android:layout_width="@dimen/_90dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/np_datetime_day" + app:layout_constraintTop_toTopOf="parent" + app:np_dividerColor="#00000000" + app:np_dividerThickness="0.6dp" + app:np_wheelItemCount="5" /> + + <TextView + android:layout_width="4dp" + android:layout_height="wrap_content" + android:text=":" + android:textColor="#999999" + android:textSize="16sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/np_datetime_minute" + app:layout_constraintStart_toEndOf="@+id/np_datetime_hour" + app:layout_constraintTop_toTopOf="parent" /> + + <com.loper7.date_time_picker.number_picker.NumberPicker + android:id="@+id/np_datetime_minute" + android:layout_width="@dimen/_90dp" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/np_datetime_hour" + app:layout_constraintTop_toTopOf="parent" + app:np_dividerColor="#00000000" + app:np_dividerThickness="0.6dp" + app:np_wheelItemCount="5" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ae94474..78eee84 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -18,6 +18,7 @@ <color name="_2A4284_30">#4C2A4284</color> <color name="_842A2A">#842A2A</color> <color name="_505971">#505971</color> + <color name="_202A45">#202A45</color> <color name="color_ok">#01E41C</color> <color name="color_offline">#999999</color> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 6e17cda..2133bf9 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -53,4 +53,8 @@ <dimen name="_630dp">630px</dimen> <dimen name="_81dp">81px</dimen> <dimen name="_480dp">480px</dimen> + <dimen name="_800dp">800px</dimen> + <dimen name="_6dp">6px</dimen> + <dimen name="_28dp">28px</dimen> + <dimen name="_580dp">580px</dimen> </resources> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 63e3689..58ce3a5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ <string name="sensor_type_txt">传感器种类</string> <string name="cancel">取消</string> <string name="confirm">确认</string> + <string name="current_time">当前时间</string> <string-array name="excel_column"> <item>时间</item>