Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Scan QR Code Barcode Reader
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Scan QR Code Barcode Reader
Commits
ef8253c3
Commit
ef8253c3
authored
Dec 30, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
51af905f
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
236 additions
and
60 deletions
+236
-60
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+29
-0
MyApplication.kt
app/src/main/java/com/base/scanqr/MyApplication.kt
+15
-6
AlarmReceiver.kt
app/src/main/java/com/base/scanqr/fcm/alarm/AlarmReceiver.kt
+38
-0
AlarmUtils.kt
app/src/main/java/com/base/scanqr/fcm/alarm/AlarmUtils.kt
+38
-0
MyNotificationManager.kt
...com/base/scanqr/fcm/notification/MyNotificationManager.kt
+14
-4
BatteryStatusReceiver.kt
...ava/com/base/scanqr/fcm/receiver/BatteryStatusReceiver.kt
+28
-37
PackageStatusReceiver.kt
...ava/com/base/scanqr/fcm/receiver/PackageStatusReceiver.kt
+12
-7
ScreenStatusReceiver.kt
...java/com/base/scanqr/fcm/receiver/ScreenStatusReceiver.kt
+2
-2
TimerManager.kt
app/src/main/java/com/base/scanqr/fcm/timer/TimerManager.kt
+10
-4
RepeatingWorker.kt
...src/main/java/com/base/scanqr/fcm/work/RepeatingWorker.kt
+50
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
ef8253c3
...
@@ -117,6 +117,35 @@
...
@@ -117,6 +117,35 @@
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/file_paths"
/>
android:resource=
"@xml/file_paths"
/>
</provider>
</provider>
<receiver
android:name=
".fcm.alarm.AlarmReceiver"
android:enabled=
"true"
android:exported=
"true"
android:permission=
"android.permission.RECEIVE_BOOT_COMPLETED"
>
<intent-filter>
<action
android:name=
"android.intent.action.USER_PRESENT"
/>
<action
android:name=
"android.intent.action.BOOT_COMPLETED"
/>
<action
android:name=
"android.intent.action.ACTION_POWER_CONNECTED"
/>
<action
android:name=
"android.intent.action.ACTION_POWER_DISCONNECTED"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.PACKAGE_ADDED"
/>
<action
android:name=
"android.intent.action.PACKAGE_REMOVED"
/>
<action
android:name=
"android.intent.action.PACKAGE_REPLACED"
/>
<data
android:scheme=
"package"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.net.wifi.WIFI_STATE_CHANGED"
/>
<action
android:name=
"android.net.wifi.STATE_CHANGE"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MEDIA_EJECT"
/>
<action
android:name=
"android.intent.action.MEDIA_MOUNTED"
/>
<data
android:scheme=
"file"
/>
</intent-filter>
</receiver>
<service
<service
android:name=
".service.StayJobService"
android:name=
".service.StayJobService"
...
...
app/src/main/java/com/base/scanqr/MyApplication.kt
View file @
ef8253c3
...
@@ -14,11 +14,13 @@ import com.base.scanqr.bean.config.AdConfigBean
...
@@ -14,11 +14,13 @@ import com.base.scanqr.bean.config.AdConfigBean
import
com.base.scanqr.bean.config.ConfigBean
import
com.base.scanqr.bean.config.ConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean
import
com.base.scanqr.fcm.FCMManager
import
com.base.scanqr.fcm.FCMManager
import
com.base.scanqr.fcm.TimerManager.Companion.changeTimer
import
com.base.scanqr.fcm.alarm.AlarmUtils.startAlarm
import
com.base.scanqr.fcm.notification.NotificationManager
import
com.base.scanqr.fcm.timer.TimerManager.Companion.changeTimer
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.fcm.receiver.BatteryStatusReceiver
import
com.base.scanqr.fcm.receiver.BatteryStatusReceiver
import
com.base.scanqr.fcm.receiver.PackageStatusReceiver
import
com.base.scanqr.fcm.receiver.PackageStatusReceiver
import
com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import
com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import
com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.InstallHelps
import
com.base.scanqr.helper.InstallHelps
import
com.base.scanqr.helper.NewComUtils
import
com.base.scanqr.helper.NewComUtils
...
@@ -140,12 +142,19 @@ class MyApplication : Application() {
...
@@ -140,12 +142,19 @@ class MyApplication : Application() {
kotlin
.
runCatching
{
kotlin
.
runCatching
{
// startJob()
// startJob()
}
}
// startAlarm(appContext, 24)
// startAlarm(appContext, 48)
// startAlarm(appContext, 72)
//workManager
schedulePeriodicWork
(
appContext
)
//闹钟
startAlarm
(
appContext
,
24
)
startAlarm
(
appContext
,
48
)
startAlarm
(
appContext
,
72
)
//开启上报队列
//开启上报队列
NotificationManager
.
startNotificationQueue
()
MyNotificationManager
.
startNotificationQueue
()
}
}
...
...
app/src/main/java/com/base/scanqr/fcm/alarm/AlarmReceiver.kt
0 → 100644
View file @
ef8253c3
package
com.base.scanqr.fcm.alarm
import
android.annotation.SuppressLint
import
android.content.BroadcastReceiver
import
android.content.Context
import
android.content.Intent
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.LogEx
/**
*
*/
class
AlarmReceiver
:
BroadcastReceiver
()
{
private
val
TAG
=
"AlarmJobReceiver"
@SuppressLint
(
"UnsafeProtectedBroadcastReceiver"
)
override
fun
onReceive
(
context
:
Context
,
intent
:
Intent
?)
{
LogEx
.
logDebug
(
TAG
,
"AlarmJobReceiver onReceive"
)
val
lastAlarmTime
=
AppPreferences
.
getInstance
().
getLong
(
"lastAlarmTime"
,
0L
)
val
currentTime
=
System
.
currentTimeMillis
()
if
(
lastAlarmTime
==
0L
||
currentTime
-
lastAlarmTime
>=
1000
*
30
*
60
)
{
EventUtils
.
event
(
"alarm_push"
)
val
sendBean
=
NotificationSendBean
(
context
,
POPUP_WHERE_ALARM
,
canSend
=
{
true
},
sendSuccess
=
{})
MyNotificationManager
.
submitSendBean
(
sendBean
)
AppPreferences
.
getInstance
().
put
(
"lastAlarmTime"
,
System
.
currentTimeMillis
())
}
schedulePeriodicWork
(
context
)
return
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/fcm/alarm/AlarmUtils.kt
0 → 100644
View file @
ef8253c3
package
com.base.scanqr.fcm.alarm
import
android.app.AlarmManager
import
android.app.PendingIntent
import
android.app.job.JobService
import
android.content.Context
import
android.content.Intent
import
com.base.scanqr.BuildConfig
import
com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import
java.util.Calendar
object
AlarmUtils
{
fun
startAlarm
(
context
:
Context
,
hour
:
Int
)
{
// context.startJob()
//闹钟定时任务
val
alarmManager
=
context
.
getSystemService
(
JobService
.
ALARM_SERVICE
)
as
AlarmManager
val
pendingIntent
=
PendingIntent
.
getBroadcast
(
context
,
hour
,
Intent
(
context
,
AlarmReceiver
::
class
.
java
),
PendingIntent
.
FLAG_IMMUTABLE
or
PendingIntent
.
FLAG_UPDATE_CURRENT
)
val
calendar
=
Calendar
.
getInstance
()
val
hourOfDay
=
if
(
BuildConfig
.
DEBUG
)
0
else
6
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
hourOfDay
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
val
oneHour
=
60
*
60
*
1000L
var
delay
=
oneHour
*
hour
if
(
BuildConfig
.
DEBUG
)
{
delay
=
1
*
60
*
1000L
}
alarmManager
.
setRepeating
(
AlarmManager
.
RTC_WAKEUP
,
calendar
.
timeInMillis
,
delay
,
pendingIntent
)
schedulePeriodicWork
(
context
)
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/fcm/notification/NotificationManager.kt
→
app/src/main/java/com/base/scanqr/fcm/notification/
My
NotificationManager.kt
View file @
ef8253c3
...
@@ -8,7 +8,12 @@ import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_SCAN
...
@@ -8,7 +8,12 @@ import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_SCAN
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_TEXT
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_TEXT
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WEBSITE
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WEBSITE
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WIFI
import
com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WIFI
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_TIMBER
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.AppPreferences
...
@@ -27,9 +32,9 @@ import java.util.concurrent.atomic.AtomicBoolean
...
@@ -27,9 +32,9 @@ import java.util.concurrent.atomic.AtomicBoolean
/**
/**
* 发送通知的管理类,方便测试限制条件
* 发送通知的管理类,方便测试限制条件
*/
*/
object
NotificationManager
{
object
My
NotificationManager
{
private
val
TAG
=
"NotificationManager"
private
val
TAG
=
"
My
NotificationManager"
private
var
sendBeanBlockingQueue
=
ArrayBlockingQueue
<
NotificationSendBean
>(
10
)
private
var
sendBeanBlockingQueue
=
ArrayBlockingQueue
<
NotificationSendBean
>(
10
)
...
@@ -144,7 +149,7 @@ object NotificationManager {
...
@@ -144,7 +149,7 @@ object NotificationManager {
//是否开启推送
//是否开启推送
if
(!
popupConfigBean
.
popupStatus
)
{
if
(!
popupConfigBean
.
popupStatus
)
{
EventUtils
.
event
(
"Notification_Error"
,
"status=${popupConfigBean.popupStatus}"
)
EventUtils
.
event
(
"Notification_Error"
,
"status=${popupConfigBean.popupStatus}"
)
LogEx
.
logDebug
(
"canSendNotification"
,
"status
"
)
LogEx
.
logDebug
(
TAG
,
"status=${popupConfigBean.popupStatus}
"
)
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
MainScope
().
launch
(
Dispatchers
.
Main
)
{
MainScope
().
launch
(
Dispatchers
.
Main
)
{
context
.
toast
(
"配置关闭推送"
)
context
.
toast
(
"配置关闭推送"
)
...
@@ -187,6 +192,11 @@ object NotificationManager {
...
@@ -187,6 +192,11 @@ object NotificationManager {
* 只测某些类型
* 只测某些类型
*/
*/
private
var
testWhere
=
listOf
(
private
var
testWhere
=
listOf
(
POPUP_WHERE_LOCK
// POPUP_WHERE_LOCK,
// POPUP_WHERE_BATTERY,
// POPUP_WHERE_PACKAGE,
// POPUP_WHERE_WORK_MANAGER,
// POPUP_WHERE_ALARM
POPUP_WHERE_TIMBER
)
)
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/fcm/receiver/BatteryStatusReceiver.kt
View file @
ef8253c3
...
@@ -6,11 +6,12 @@ import android.content.Intent
...
@@ -6,11 +6,12 @@ import android.content.Intent
import
android.content.IntentFilter
import
android.content.IntentFilter
import
android.os.BatteryManager
import
android.os.BatteryManager
import
android.os.Build
import
android.os.Build
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.KotlinExt.currentDate
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.LogEx
import
kotlin.math.absoluteValue
import
kotlin.math.absoluteValue
...
@@ -43,18 +44,6 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
...
@@ -43,18 +44,6 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
}
}
/**
* 当前天推送数量
*/
private
var
todayBatteryPush
=
0
get
()
{
return
AppPreferences
.
getInstance
().
getInt
(
"todayBatteryPush_${currentDate()}"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"todayBatteryPush_${currentDate()}"
,
value
,
true
)
}
/**
/**
* 上次成功推送
* 上次成功推送
*/
*/
...
@@ -75,27 +64,13 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
...
@@ -75,27 +64,13 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
if
(!
popupConfigBean
.
batteryS
)
return
false
if
(!
popupConfigBean
.
batteryS
)
return
false
val
popupBatteryCount
=
popupConfigBean
.
popupBatteryValue
val
flag1
=
todayBatteryPush
<=
popupBatteryCount
val
minute
=
60
*
1000L
val
minute
=
60
*
1000L
val
interval
=
popupConfigBean
.
popupBatteryInterval
val
interval
=
popupConfigBean
.
popupBatteryInterval
val
passTime
=
System
.
currentTimeMillis
()
-
batteryLastPushTime
val
passTime
=
System
.
currentTimeMillis
()
-
batteryLastPushTime
val
flag2
=
batteryLastPushTime
==
0L
||
passTime
>
interval
*
minute
val
flag
=
batteryLastPushTime
==
0L
||
passTime
>
interval
*
minute
val
flag
=
flag1
&&
flag2
if
(!
flag
)
{
if
(!
flag
)
{
EventUtils
.
event
(
EventUtils
.
event
(
"Notification_Error"
,
"interval=$interval passTime=$passTime where=$POPUP_WHERE_BATTERY"
)
"Notification_Error"
,
"todayBatteryPush=$todayBatteryPush "
+
"popupBatteryCount=$popupBatteryCount where=$POPUP_WHERE_BATTERY"
)
LogEx
.
logDebug
(
"canSendNotification"
,
"Notification_Error todayBatteryPush=$todayBatteryPush "
+
"popupBatteryCount=$popupBatteryCount where=$POPUP_WHERE_BATTERY"
)
}
}
return
flag
return
flag
}
}
...
@@ -104,12 +79,9 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
...
@@ -104,12 +79,9 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
/**
/**
* 推送成功后保存值
* 推送成功后保存值
*/
*/
fun
saveBatteryPushedData
(
where
:
String
,
actionId
:
String
)
{
fun
saveBatteryPushedData
()
{
if
(
where
==
POPUP_WHERE_BATTERY
)
{
todayBatteryPush
+=
1
batteryLastPushTime
=
System
.
currentTimeMillis
()
batteryLastPushTime
=
System
.
currentTimeMillis
()
}
}
}
}
}
...
@@ -117,6 +89,7 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
...
@@ -117,6 +89,7 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
private
var
currentBatteryPercentage
=
0f
private
var
currentBatteryPercentage
=
0f
override
fun
onReceive
(
context
:
Context
,
intent
:
Intent
?)
{
override
fun
onReceive
(
context
:
Context
,
intent
:
Intent
?)
{
// LogEx.logDebug(TAG, "onReceive")
val
action
=
intent
?.
action
val
action
=
intent
?.
action
when
(
action
)
{
when
(
action
)
{
...
@@ -128,16 +101,34 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
...
@@ -128,16 +101,34 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
//避免频繁触发
//避免频繁触发
val
changeValue
=
currentBatteryPercentage
-
batteryPercentage
val
changeValue
=
currentBatteryPercentage
-
batteryPercentage
if
(
batteryPercentage
<
21
&&
changeValue
.
absoluteValue
>=
1f
)
{
if
(
batteryPercentage
<
popupConfigBean
.
popupBatteryValue
&&
changeValue
.
absoluteValue
>=
1f
)
{
//推送次数没有达到限制并且展示的最小时间间隔大于配置时间(分钟)
//推送次数没有达到限制并且展示的最小时间间隔大于配置时间(分钟)
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_BATTERY, null)
LogEx
.
logDebug
(
TAG
,
"onReceive changed"
)
val
sendBean
=
NotificationSendBean
(
context
,
POPUP_WHERE_BATTERY
,
canSend
=
{
canBatteryStatusReceiverPush
()
},
sendSuccess
=
{
saveBatteryPushedData
()
})
MyNotificationManager
.
submitSendBean
(
sendBean
)
}
}
currentBatteryPercentage
=
batteryPercentage
currentBatteryPercentage
=
batteryPercentage
}
}
Intent
.
ACTION_POWER_CONNECTED
->
{
Intent
.
ACTION_POWER_CONNECTED
->
{
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_BATTERY, null)
LogEx
.
logDebug
(
TAG
,
"onReceive connected"
)
val
sendBean
=
NotificationSendBean
(
context
,
POPUP_WHERE_BATTERY
,
canSend
=
{
canBatteryStatusReceiverPush
()
},
sendSuccess
=
{
saveBatteryPushedData
()
})
MyNotificationManager
.
submitSendBean
(
sendBean
)
}
}
}
}
...
...
app/src/main/java/com/base/scanqr/fcm/receiver/PackageStatusReceiver.kt
View file @
ef8253c3
...
@@ -5,8 +5,10 @@ import android.content.Context
...
@@ -5,8 +5,10 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.content.IntentFilter
import
android.content.IntentFilter
import
android.os.Build
import
android.os.Build
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.KotlinExt.currentDate
import
com.base.scanqr.utils.KotlinExt.currentDate
...
@@ -95,12 +97,10 @@ class PackageStatusReceiver() : BroadcastReceiver() {
...
@@ -95,12 +97,10 @@ class PackageStatusReceiver() : BroadcastReceiver() {
/**
/**
* 推送成功后保存值
* 推送成功后保存值
*/
*/
fun
savePackagePushedData
(
where
:
String
,
actionId
:
String
)
{
fun
savePackagePushedData
()
{
if
(
where
==
POPUP_WHERE_PACKAGE
)
{
todayPackagePush
+=
1
todayPackagePush
+=
1
packageLastPushTime
=
System
.
currentTimeMillis
()
packageLastPushTime
=
System
.
currentTimeMillis
()
}
}
}
}
}
...
@@ -110,8 +110,13 @@ class PackageStatusReceiver() : BroadcastReceiver() {
...
@@ -110,8 +110,13 @@ class PackageStatusReceiver() : BroadcastReceiver() {
LogEx
.
logDebug
(
TAG
,
"onReceive action=$action"
)
LogEx
.
logDebug
(
TAG
,
"onReceive action=$action"
)
if
(
action
==
Intent
.
ACTION_PACKAGE_ADDED
||
action
==
Intent
.
ACTION_PACKAGE_REMOVED
)
{
if
(
action
==
Intent
.
ACTION_PACKAGE_ADDED
||
action
==
Intent
.
ACTION_PACKAGE_REMOVED
)
{
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_PACKAGE)
}
val
sendBean
=
NotificationSendBean
(
context
,
POPUP_WHERE_PACKAGE
,
canSend
=
{
canPackageStatusReceiverPush
()
},
sendSuccess
=
{
savePackagePushedData
()
})
MyNotificationManager
.
submitSendBean
(
sendBean
)
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/fcm/receiver/ScreenStatusReceiver.kt
View file @
ef8253c3
...
@@ -8,7 +8,7 @@ import android.os.Build
...
@@ -8,7 +8,7 @@ import android.os.Build
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.fcm.notification.NotificationManager
import
com.base.scanqr.fcm.notification.
My
NotificationManager
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.helper.EventUtils
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.KotlinExt.currentDate
import
com.base.scanqr.utils.KotlinExt.currentDate
...
@@ -39,7 +39,7 @@ class ScreenStatusReceiver : BroadcastReceiver() {
...
@@ -39,7 +39,7 @@ class ScreenStatusReceiver : BroadcastReceiver() {
POPUP_WHERE_LOCK
,
POPUP_WHERE_LOCK
,
canSend
=
{
canScreenStatusReceiverPush
()
},
canSend
=
{
canScreenStatusReceiverPush
()
},
sendSuccess
=
{
saveScreenPushedData
()
})
sendSuccess
=
{
saveScreenPushedData
()
})
NotificationManager
.
submitSendBean
(
sendBean
)
My
NotificationManager
.
submitSendBean
(
sendBean
)
}
}
}
}
}
}
...
...
app/src/main/java/com/base/scanqr/fcm/TimerManager.kt
→
app/src/main/java/com/base/scanqr/fcm/
timer/
TimerManager.kt
View file @
ef8253c3
package
com.base.scanqr.fcm
package
com.base.scanqr.fcm
.timer
import
com.base.scanqr.MyApplication
import
com.base.scanqr.MyApplication
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_TIMBER
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import
com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.LogEx.logDebug
import
com.base.scanqr.utils.LogEx.logDebug
import
java.util.Timer
import
java.util.Timer
import
java.util.TimerTask
import
java.util.TimerTask
...
@@ -10,7 +14,6 @@ import java.util.TimerTask
...
@@ -10,7 +14,6 @@ import java.util.TimerTask
class
TimerManager
private
constructor
()
{
class
TimerManager
private
constructor
()
{
private
val
TAG
=
"TimerManager"
private
var
taskTimer
:
Timer
?
=
null
private
var
taskTimer
:
Timer
?
=
null
private
var
isTaskTimerActive
:
Boolean
=
false
private
var
isTaskTimerActive
:
Boolean
=
false
...
@@ -27,7 +30,9 @@ class TimerManager private constructor() {
...
@@ -27,7 +30,9 @@ class TimerManager private constructor() {
&&
!
ScreenStatusReceiver
.
isSecureLockActive
&&
!
ScreenStatusReceiver
.
isSecureLockActive
&&
MyApplication
.
PAUSED_VALUE
!=
1
&&
MyApplication
.
PAUSED_VALUE
!=
1
)
{
)
{
// sendNotificationIfCan(MyApplication.appContext, PopupConstObject.POPUP_WHERE_TIMBER, null)
val
sendBean
=
NotificationSendBean
(
MyApplication
.
appContext
,
POPUP_WHERE_TIMBER
,
canSend
=
{
true
},
sendSuccess
=
{})
MyNotificationManager
.
submitSendBean
(
sendBean
)
}
}
}
}
}
}
...
@@ -54,9 +59,9 @@ class TimerManager private constructor() {
...
@@ -54,9 +59,9 @@ class TimerManager private constructor() {
companion
object
{
companion
object
{
private
val
TAG
=
"TimerManager"
private
val
instance
:
TimerManager
by
lazy
((
LazyThreadSafetyMode
.
SYNCHRONIZED
))
{
TimerManager
()
}
private
val
instance
:
TimerManager
by
lazy
((
LazyThreadSafetyMode
.
SYNCHRONIZED
))
{
TimerManager
()
}
fun
changeTimer
()
{
fun
changeTimer
()
{
if
(!
popupConfigBean
.
timerS
)
{
if
(!
popupConfigBean
.
timerS
)
{
...
@@ -64,6 +69,7 @@ class TimerManager private constructor() {
...
@@ -64,6 +69,7 @@ class TimerManager private constructor() {
}
else
{
}
else
{
val
timerDelay
:
Int
=
popupConfigBean
.
timerDelay
val
timerDelay
:
Int
=
popupConfigBean
.
timerDelay
val
timerInterval
:
Int
=
popupConfigBean
.
timerInterval
val
timerInterval
:
Int
=
popupConfigBean
.
timerInterval
LogEx
.
logDebug
(
TAG
,
"timerDelay=$timerDelay timerInterval=$timerInterval"
)
val
isTaskTimerActive
=
instance
.
isTaskTimerActive
val
isTaskTimerActive
=
instance
.
isTaskTimerActive
if
(!
isTaskTimerActive
)
{
if
(!
isTaskTimerActive
)
{
...
...
app/src/main/java/com/base/scanqr/fcm/work/RepeatingWorker.kt
0 → 100644
View file @
ef8253c3
package
com.base.scanqr.fcm.work
import
android.content.Context
import
androidx.work.Constraints
import
androidx.work.ExistingPeriodicWorkPolicy
import
androidx.work.NetworkType
import
androidx.work.PeriodicWorkRequestBuilder
import
androidx.work.WorkManager
import
androidx.work.Worker
import
androidx.work.WorkerParameters
import
com.base.scanqr.bean.NotificationSendBean
import
com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.scanqr.fcm.notification.MyNotificationManager
import
com.base.scanqr.helper.EventUtils
import
java.util.concurrent.TimeUnit
class
RepeatingWorker
(
val
appContext
:
Context
,
workerParams
:
WorkerParameters
)
:
Worker
(
appContext
,
workerParams
)
{
override
fun
doWork
():
Result
{
// 这里执行你的任务
// 例如,更新UI,发送网络请求等
EventUtils
.
event
(
"workManager_live"
)
try
{
val
sendBean
=
NotificationSendBean
(
appContext
,
POPUP_WHERE_WORK_MANAGER
,
canSend
=
{
true
},
sendSuccess
=
{})
MyNotificationManager
.
submitSendBean
(
sendBean
)
}
catch
(
e
:
Exception
)
{
EventUtils
.
event
(
"WorkManager Error"
)
}
return
Result
.
success
()
}
companion
object
{
const
val
TAG
=
"uniqueWorkName"
fun
schedulePeriodicWork
(
context
:
Context
)
{
WorkManager
.
getInstance
(
context
).
cancelAllWorkByTag
(
TAG
)
val
request
=
PeriodicWorkRequestBuilder
<
RepeatingWorker
>(
15
,
TimeUnit
.
MINUTES
)
.
setConstraints
(
Constraints
.
Builder
().
setRequiredNetworkType
(
NetworkType
.
CONNECTED
).
build
()
)
.
build
()
WorkManager
.
getInstance
(
context
).
enqueueUniquePeriodicWork
(
TAG
,
ExistingPeriodicWorkPolicy
.
KEEP
,
request
)
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment