diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index afe4904a..d84e4a52 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + + + (context: Context, actionName: String, task: T) { + + private var mContext: Context? + private val mActionName: String + private var mReceiver: TimeTaskReceiver? = null + private val mTask: T? + + companion object { + private var mPendingIntent: PendingIntent? = null + } + + init { + mContext = context + mActionName = actionName + mTask = task + initReceiver(context, actionName) + } + + fun startLooperTask() { + if (null != mTask) { + mTask.exeTask() + configureAlarmManager(mTask.period()) + } + } + + fun stopLooperTask() { + cancelAlarmManager() + } + + fun onClose() { + mContext!!.unregisterReceiver(mReceiver) + mContext = null + } + + @SuppressLint("ObsoleteSdkInt") + private fun configureAlarmManager(time: Long) { + val manager = mContext!!.getSystemService(Context.ALARM_SERVICE) as AlarmManager + val pendIntent = pendingIntent + when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> { + manager.setExactAndAllowWhileIdle( + AlarmManager.ELAPSED_REALTIME_WAKEUP, + SystemClock.elapsedRealtime() + time, + pendIntent + ) + } + Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> { + manager.setExact( + AlarmManager.ELAPSED_REALTIME_WAKEUP, + SystemClock.elapsedRealtime() + time, + pendIntent + ) + } + else -> { + manager[AlarmManager.ELAPSED_REALTIME_WAKEUP, + SystemClock.elapsedRealtime() + time] = pendIntent + } + } + } + + @get:SuppressLint("UnspecifiedImmutableFlag") + private val pendingIntent: PendingIntent? + get() { + if (mPendingIntent == null) { + val requestCode = 0 + val intent = Intent() + intent.action = mActionName + when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + mPendingIntent = PendingIntent.getBroadcast( + mContext, requestCode, intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE + ) + } + else -> { + mPendingIntent = PendingIntent.getBroadcast( + mContext, + requestCode, + intent, + PendingIntent.FLAG_UPDATE_CURRENT + ) + } + } + } + return mPendingIntent + } + + private fun cancelAlarmManager() { + val manager = mContext!!.getSystemService(Context.ALARM_SERVICE) as AlarmManager + manager.cancel(pendingIntent) + } + + private fun initReceiver(context: Context, actionName: String) { + mReceiver = TimeTaskReceiver() + val intentFilter = IntentFilter() + intentFilter.addAction(actionName) + context.registerReceiver(mReceiver, intentFilter) + } + + internal inner class TimeTaskReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + startLooperTask() + } + } + + interface Task { + fun period(): Long { + // 默认时间5S + return 5000L + } + + fun exeTask() + } +} diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_disable.png b/app/src/main/res/drawable-xhdpi/icon_finish_disable.png new file mode 100644 index 00000000..626e4b3d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_nor.png b/app/src/main/res/drawable-xhdpi/icon_finish_nor.png new file mode 100644 index 00000000..c09a06a8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_press.png b/app/src/main/res/drawable-xhdpi/icon_finish_press.png new file mode 100644 index 00000000..f572d57d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_press.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_disable.png b/app/src/main/res/drawable-xhdpi/icon_forward_disable.png new file mode 100644 index 00000000..63978baf Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_nor.png b/app/src/main/res/drawable-xhdpi/icon_forward_nor.png new file mode 100644 index 00000000..c8a5a518 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_press.png b/app/src/main/res/drawable-xhdpi/icon_forward_press.png new file mode 100644 index 00000000..5beaed1d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_press.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_mediaflag.png b/app/src/main/res/drawable-xhdpi/icon_mediaflag.png new file mode 100644 index 00000000..2ba4e658 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_mediaflag.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png b/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png new file mode 100644 index 00000000..09f8a835 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_next_disable.png b/app/src/main/res/drawable-xhdpi/icon_next_disable.png new file mode 100644 index 00000000..41a0abe7 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_next_nor.png b/app/src/main/res/drawable-xhdpi/icon_next_nor.png new file mode 100644 index 00000000..fe4a563d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_next_press.png b/app/src/main/res/drawable-xhdpi/icon_next_press.png new file mode 100644 index 00000000..9863d55c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_press.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png b/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png new file mode 100644 index 00000000..feaf39a7 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_pause_nor.png b/app/src/main/res/drawable-xhdpi/icon_pause_nor.png new file mode 100644 index 00000000..e2aa3f68 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_pause_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_play_disable.png b/app/src/main/res/drawable-xhdpi/icon_play_disable.png new file mode 100644 index 00000000..c421e09b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_play_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_play_nor.png b/app/src/main/res/drawable-xhdpi/icon_play_nor.png new file mode 100644 index 00000000..643fb4d2 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_play_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png b/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png new file mode 100644 index 00000000..f0573f27 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png b/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png new file mode 100644 index 00000000..e1e8b2f9 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png differ diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_press.png b/app/src/main/res/drawable-xhdpi/icon_select_point_press.png new file mode 100644 index 00000000..f0b0cbc3 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_press.png differ diff --git a/app/src/main/res/drawable/map_trace_finish.xml b/app/src/main/res/drawable/map_trace_finish.xml new file mode 100644 index 00000000..013c9395 --- /dev/null +++ b/app/src/main/res/drawable/map_trace_finish.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/map_trace_forward.xml b/app/src/main/res/drawable/map_trace_forward.xml new file mode 100644 index 00000000..4f0afa14 --- /dev/null +++ b/app/src/main/res/drawable/map_trace_forward.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/map_trace_mediaflag.xml b/app/src/main/res/drawable/map_trace_mediaflag.xml new file mode 100644 index 00000000..6c196508 --- /dev/null +++ b/app/src/main/res/drawable/map_trace_mediaflag.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/map_trace_next.xml b/app/src/main/res/drawable/map_trace_next.xml new file mode 100644 index 00000000..59e80266 --- /dev/null +++ b/app/src/main/res/drawable/map_trace_next.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/map_trace_pause.xml b/app/src/main/res/drawable/map_trace_pause.xml new file mode 100644 index 00000000..006cc188 --- /dev/null +++ b/app/src/main/res/drawable/map_trace_pause.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/map_trace_select_point.xml b/app/src/main/res/drawable/map_trace_select_point.xml new file mode 100644 index 00000000..0c0ed8bb --- /dev/null +++ b/app/src/main/res/drawable/map_trace_select_point.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 690d0642..a5e3631e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -119,6 +119,73 @@ android:elevation="2dp" android:onClick="@{()->mainActivity.onClickMenu()}" /> + + + + + + + + + + + + + + + + +