Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
Out
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xjl
Out
Commits
ce157df4
Commit
ce157df4
authored
Dec 28, 2023
by
xujialang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改:
熄屏需要拉起外展弹窗时自动亮屏 2-5点播放的广告会自动关闭 场景判断删除是否亮屏条件 播放失败时,会判断是否是已经有广告在播放,如果是,清除所有页面,再去播放一次广告
parent
1f6d79ad
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
166 additions
and
48 deletions
+166
-48
OutHelp.java
app/src/main/java/com/zl/sdk/OutHelp.java
+42
-31
TopOnAdLoadManager.java
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
+21
-9
IcOptManager.java
app/src/main/java/com/zl/sdk/icon/IcOptManager.java
+3
-2
AppOutSP.java
app/src/main/java/com/zl/sdk/out/AppOutSP.java
+16
-0
CheckHelper.java
app/src/main/java/com/zl/sdk/out/CheckHelper.java
+10
-6
OutAdManager.java
app/src/main/java/com/zl/sdk/out/OutAdManager.java
+10
-0
DeepNight.java
...rc/main/java/com/zl/sdk/out/deepNightModle/DeepNight.java
+64
-0
No files found.
app/src/main/java/com/zl/sdk/OutHelp.java
View file @
ce157df4
package
com
.
zl
.
sdk
;
package
com
.
zl
.
sdk
;
import
static
android
.
content
.
Context
.
POWER_SERVICE
;
import
android.annotation.SuppressLint
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.Application
;
import
android.app.Application
;
...
@@ -9,6 +11,7 @@ import android.content.Context;
...
@@ -9,6 +11,7 @@ import android.content.Context;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.IntentFilter
;
import
android.content.IntentFilter
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.PowerManager
;
import
android.util.ArrayMap
;
import
android.util.ArrayMap
;
import
android.util.Log
;
import
android.util.Log
;
import
android.widget.RemoteViews
;
import
android.widget.RemoteViews
;
...
@@ -247,7 +250,7 @@ public final class OutHelp implements KPListener {
...
@@ -247,7 +250,7 @@ public final class OutHelp implements KPListener {
return;
return;
}*/
}*/
Map
<
String
,
String
>
map
=
new
HashMap
<>();
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"action"
,
actionName
);
map
.
put
(
"action"
,
actionName
);
map
.
put
(
"screen_state"
,
String
.
valueOf
(
AppOutUtils
.
isScreenOn
()));
map
.
put
(
"screen_state"
,
String
.
valueOf
(
AppOutUtils
.
isScreenOn
()));
Statistics
.
getInstance
().
dotEvent
(
"out_open"
,
map
);
Statistics
.
getInstance
().
dotEvent
(
"out_open"
,
map
);
...
@@ -494,6 +497,16 @@ public final class OutHelp implements KPListener {
...
@@ -494,6 +497,16 @@ public final class OutHelp implements KPListener {
}
}
}
}
public
void
wakeOn
()
{
try
{
PowerManager
pm
=
(
PowerManager
)
mContext
.
getSystemService
(
POWER_SERVICE
);
@SuppressLint
(
"InvalidWakeLockTag"
)
PowerManager
.
WakeLock
mWakelock
=
pm
.
newWakeLock
(
PowerManager
.
ACQUIRE_CAUSES_WAKEUP
|
PowerManager
.
SCREEN_DIM_WAKE_LOCK
,
"target"
);
mWakelock
.
acquire
();
mWakelock
.
release
();
}
catch
(
Exception
ignored
){}
}
public
void
setShowLock
(
boolean
showLock
)
{
public
void
setShowLock
(
boolean
showLock
)
{
try
{
try
{
Class
<?>
kpClass
=
Class
.
forName
(
NameInterfaceHelp
.
getClassPath
());
Class
<?>
kpClass
=
Class
.
forName
(
NameInterfaceHelp
.
getClassPath
());
...
@@ -718,36 +731,34 @@ public final class OutHelp implements KPListener {
...
@@ -718,36 +731,34 @@ public final class OutHelp implements KPListener {
}
}
// public void cleanAllActivity() {
public
void
cleanAllActivity
()
{
// try {
try
{
// Class<?> activityThreadClass = mContext.getClass().getClassLoader().loadClass("android.app.ActivityThread");
Class
<?>
activityThreadClass
=
mContext
.
getClass
().
getClassLoader
().
loadClass
(
"android.app.ActivityThread"
);
//
// Field sCurrentActivityThreadField = activityThreadClass.getDeclaredField("sCurrentActivityThread");
Field
sCurrentActivityThreadField
=
activityThreadClass
.
getDeclaredField
(
"sCurrentActivityThread"
);
// sCurrentActivityThreadField.setAccessible(true);
sCurrentActivityThreadField
.
setAccessible
(
true
);
// Object sCurrentActivityThread = sCurrentActivityThreadField.get(activityThreadClass);
Object
sCurrentActivityThread
=
sCurrentActivityThreadField
.
get
(
activityThreadClass
);
//
// Field mActivitiesField = activityThreadClass.getDeclaredField("mActivities");
Field
mActivitiesField
=
activityThreadClass
.
getDeclaredField
(
"mActivities"
);
// mActivitiesField.setAccessible(true);
mActivitiesField
.
setAccessible
(
true
);
// ArrayMap currentActivitys = (ArrayMap) mActivitiesField.get(sCurrentActivityThread);
ArrayMap
currentActivitys
=
(
ArrayMap
)
mActivitiesField
.
get
(
sCurrentActivityThread
);
//
// for (Object value : currentActivitys.values()) {
for
(
Object
value
:
currentActivitys
.
values
())
{
// Field activityField = value.getClass().getDeclaredField("activity");
Field
activityField
=
value
.
getClass
().
getDeclaredField
(
"activity"
);
// activityField.setAccessible(true);
activityField
.
setAccessible
(
true
);
// Activity activity = (Activity) activityField.get(value);
Activity
activity
=
(
Activity
)
activityField
.
get
(
value
);
//
// if (activity == null) {
if
(
activity
==
null
)
{
// continue;
continue
;
// }
}
//
// LogUtil.d(TAG + "clean all activity name=" + activity.getClass().getName());
LogUtil
.
d
(
TAG
+
"clean all activity name="
+
activity
.
getClass
().
getName
());
// activity.finishAndRemoveTask();
activity
.
finishAndRemoveTask
();
//
}
//
}
catch
(
Throwable
throwable
)
{
// }
LogUtil
.
d
(
TAG
,
" clean all e :"
+
Log
.
getStackTraceString
(
throwable
));
// } catch (Throwable throwable) {
}
// LogUtil.d(TAG, " clean all e :" + Log.getStackTraceString(throwable));
}
// }
// }
private
Application
.
ActivityLifecycleCallbacks
mLifecycleCallbacks
=
new
Application
.
ActivityLifecycleCallbacks
()
{
private
Application
.
ActivityLifecycleCallbacks
mLifecycleCallbacks
=
new
Application
.
ActivityLifecycleCallbacks
()
{
...
...
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
View file @
ce157df4
...
@@ -14,6 +14,7 @@ import com.zl.sdk.event.EventUtils;
...
@@ -14,6 +14,7 @@ import com.zl.sdk.event.EventUtils;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.out.ActionFrom
;
import
com.zl.sdk.out.ActionFrom
;
import
com.zl.sdk.out.OutAdManager
;
import
com.zl.sdk.out.OutAdManager
;
import
com.zl.sdk.out.deepNightModle.DeepNight
;
import
com.zl.sdk.util.LogUtil
;
import
com.zl.sdk.util.LogUtil
;
import
java.lang.ref.WeakReference
;
import
java.lang.ref.WeakReference
;
...
@@ -43,7 +44,7 @@ public final class TopOnAdLoadManager {
...
@@ -43,7 +44,7 @@ public final class TopOnAdLoadManager {
private
final
HashMap
<
String
,
WeakReference
<
OnInAdListener
>>
interstitialListenerHashMap
=
new
HashMap
<>();
private
final
HashMap
<
String
,
WeakReference
<
OnInAdListener
>>
interstitialListenerHashMap
=
new
HashMap
<>();
private
final
HashMap
<
String
,
Boolean
>
flagLoadMap
=
new
HashMap
<>();
private
final
HashMap
<
String
,
Boolean
>
flagLoadMap
=
new
HashMap
<>();
//
private Handler cleanActivityHandler = new Handler();
private
Handler
cleanActivityHandler
=
new
Handler
();
private
TopOnAdInterstitialCallBack
adInterstitialCallBack
=
new
TopOnAdInterstitialCallBack
()
{
private
TopOnAdInterstitialCallBack
adInterstitialCallBack
=
new
TopOnAdInterstitialCallBack
()
{
...
@@ -71,11 +72,14 @@ public final class TopOnAdLoadManager {
...
@@ -71,11 +72,14 @@ public final class TopOnAdLoadManager {
callInterstitialAdShow
();
callInterstitialAdShow
();
countAdShowTimes
(
adData
);
countAdShowTimes
(
adData
);
// cleanActivityHandler.removeCallbacksAndMessages(null);
// cleanActivityHandler.postDelayed(() -> {
//深夜模式,会自动关闭广告
// LogUtil.d(TAG, "clean all activity 111");
if
(
DeepNight
.
checkDeepNightRunning
())
{
// OutHelp.get().cleanAllActivity();
cleanActivityHandler
.
removeCallbacksAndMessages
(
null
);
// }, 20 * 1000);
cleanActivityHandler
.
postDelayed
(()
->
{
OutHelp
.
get
().
cleanAllActivity
();
},
(
long
)
((
Math
.
random
()*
10
+
5
)
*
1000L
));
}
}
}
@Override
@Override
...
@@ -111,9 +115,17 @@ public final class TopOnAdLoadManager {
...
@@ -111,9 +115,17 @@ public final class TopOnAdLoadManager {
flagLoadMap
.
put
(
adUnitId
,
true
);
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
remove
(
adUnitId
);
adCacheDataMap
.
remove
(
adUnitId
);
topOnInterstitialAdLoad
.
destroy
(
showAdBean
);
if
(!
TextUtils
.
isEmpty
(
errorMsg
)
callInterstitialCloseAd
();
&&
(
errorMsg
.
contains
(
"ALREADY_SHOWING"
)
||
errorMsg
.
contains
(
"Vungle is already playing different ad"
))
)
{
OutHelp
.
get
().
cleanAllActivity
();
LogUtil
.
d
(
TAG
+
"去播放 doWork 333"
);
OutAdManager
.
get
().
doWork
(
ActionFrom
.
ACTION_UNKNOWN
,
false
);
}
else
{
topOnInterstitialAdLoad
.
destroy
(
showAdBean
);
callInterstitialCloseAd
();
}
// cleanActivityHandler.removeCallbacksAndMessages(null);
// cleanActivityHandler.removeCallbacksAndMessages(null);
}
}
...
...
app/src/main/java/com/zl/sdk/icon/IcOptManager.java
View file @
ce157df4
...
@@ -18,6 +18,7 @@ import com.zl.sdk.bean.IconOpt;
...
@@ -18,6 +18,7 @@ import com.zl.sdk.bean.IconOpt;
import
com.zl.sdk.data.DataManager
;
import
com.zl.sdk.data.DataManager
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.out.AppOutSP
;
import
com.zl.sdk.util.LogUtil
;
import
com.zl.sdk.util.LogUtil
;
import
com.zl.sdk.util.SPUtils
;
import
com.zl.sdk.util.SPUtils
;
...
@@ -139,7 +140,7 @@ public class IcOptManager {
...
@@ -139,7 +140,7 @@ public class IcOptManager {
message
.
what
=
MSG_ICON_OPERATOR
;
message
.
what
=
MSG_ICON_OPERATOR
;
message
.
obj
=
iconOpt
;
message
.
obj
=
iconOpt
;
workHandler
.
sendMessage
(
message
);
workHandler
.
sendMessage
(
message
);
}
else
{
}
else
{
stat
(
"check"
,
"isInterval is false"
);
stat
(
"check"
,
"isInterval is false"
);
}
}
}
}
...
@@ -304,8 +305,8 @@ public class IcOptManager {
...
@@ -304,8 +305,8 @@ public class IcOptManager {
String
action
=
intent
.
getAction
();
String
action
=
intent
.
getAction
();
LogUtil
.
d
(
TAG
+
"===>>> 灭屏"
);
LogUtil
.
d
(
TAG
+
"===>>> 灭屏"
);
if
(
Intent
.
ACTION_SCREEN_OFF
.
equals
(
action
))
{
if
(
Intent
.
ACTION_SCREEN_OFF
.
equals
(
action
))
{
AppOutSP
.
saveLastScreenOffTime
(
System
.
currentTimeMillis
());
screenOff
();
screenOff
();
}
}
}
}
...
...
app/src/main/java/com/zl/sdk/out/AppOutSP.java
View file @
ce157df4
...
@@ -13,6 +13,22 @@ public final class AppOutSP {
...
@@ -13,6 +13,22 @@ public final class AppOutSP {
private
static
final
String
KEY_IS_APP_FIRST_START
=
"is_app_first_start_in_devices"
;
private
static
final
String
KEY_IS_APP_FIRST_START
=
"is_app_first_start_in_devices"
;
private
static
final
String
KEY_LAST_SCREEN_OFF
=
"key_last_screen_off"
;
private
static
long
OutLastScreenOff
=
-
1L
;
public
static
void
saveLastScreenOffTime
(
long
value
)
{
getAppOutPref
().
put
(
KEY_LAST_SCREEN_OFF
,
value
);
OutLastScreenOff
=
value
;
}
public
static
long
getLastScreenOffTime
()
{
if
(
OutLastScreenOff
==
-
1
)
{
OutLastScreenOff
=
getAppOutPref
().
getLong
(
KEY_LAST_SCREEN_OFF
,
0
);
}
return
OutLastScreenOff
;
}
private
static
int
OutInterstitialAdDayShowCount
=
-
1
;
private
static
int
OutInterstitialAdDayShowCount
=
-
1
;
...
...
app/src/main/java/com/zl/sdk/out/CheckHelper.java
View file @
ce157df4
...
@@ -11,7 +11,6 @@ import com.zl.sdk.ad.TopOnAdLoadManager;
...
@@ -11,7 +11,6 @@ import com.zl.sdk.ad.TopOnAdLoadManager;
import
com.zl.sdk.bean.OutAdData
;
import
com.zl.sdk.bean.OutAdData
;
import
com.zl.sdk.event.DialogFailReason
;
import
com.zl.sdk.event.DialogFailReason
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.util.AppOutUtils
;
import
com.zl.sdk.util.LogUtil
;
import
com.zl.sdk.util.LogUtil
;
import
java.util.Calendar
;
import
java.util.Calendar
;
...
@@ -43,11 +42,11 @@ public class CheckHelper {
...
@@ -43,11 +42,11 @@ public class CheckHelper {
// return false;
// return false;
// }
// }
//
//
if
(
needCheckScreenOff
(
actionState
)
&&
!
AppOutUtils
.
isScreenOn
())
{
//
if (needCheckScreenOff(actionState) && !AppOutUtils.isScreenOn()) {
LogUtil
.
d
(
TAG
+
"(场景检查)手机未亮屏,不能展示"
);
//
LogUtil.d(TAG + "(场景检查)手机未亮屏,不能展示");
EventUtils
.
staDialogFail
(
DialogFailReason
.
SCREEN_OFF
,
actionState
,
scenes
,
EventUtils
.
DIALOG_TYPE_AD
);
//
EventUtils.staDialogFail(DialogFailReason.SCREEN_OFF, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return
false
;
//
return false;
}
//
}
if
(
actionState
!=
ActionFrom
.
ACTION_INIT_START
.
getAction
()
&&
isTelephonyCalling
())
{
if
(
actionState
!=
ActionFrom
.
ACTION_INIT_START
.
getAction
()
&&
isTelephonyCalling
())
{
LogUtil
.
d
(
TAG
+
"(场景检查)通话中,不能展示"
);
LogUtil
.
d
(
TAG
+
"(场景检查)通话中,不能展示"
);
...
@@ -158,6 +157,11 @@ public class CheckHelper {
...
@@ -158,6 +157,11 @@ public class CheckHelper {
LogUtil
.
d
(
TAG
+
"(次数检查)间隔时间(icon未隐藏)="
+
spaceTime
);
LogUtil
.
d
(
TAG
+
"(次数检查)间隔时间(icon未隐藏)="
+
spaceTime
);
}
}
// //TODO
// if (DeepNight.checkDeepNightRunning()) {
// spaceTime = 60 * 1000L;
// }
if
(
showIntervalTime
<
spaceTime
)
{
if
(
showIntervalTime
<
spaceTime
)
{
LogUtil
.
d
(
TAG
+
"(次数检查)未到间隔时间 不能播放"
);
LogUtil
.
d
(
TAG
+
"(次数检查)未到间隔时间 不能播放"
);
...
...
app/src/main/java/com/zl/sdk/out/OutAdManager.java
View file @
ce157df4
...
@@ -227,6 +227,11 @@ public class OutAdManager extends BaseOutShowManager {
...
@@ -227,6 +227,11 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil
.
d
(
TAG
+
">>>播放广告<<< =============>>> start"
);
LogUtil
.
d
(
TAG
+
">>>播放广告<<< =============>>> start"
);
LogUtil
.
d
(
TAG
);
LogUtil
.
d
(
TAG
);
// TODO
// if (DeepNight.checkDeepNightRunning()) {
// OutHelp.get().wakeOn();
// }
// 场景检查
// 场景检查
boolean
canShowByScene
=
CheckHelper
.
checkAdCanShowByScene
(
actionFrom
.
getAction
(),
EventUtils
.
SCENES_SHOW
);
boolean
canShowByScene
=
CheckHelper
.
checkAdCanShowByScene
(
actionFrom
.
getAction
(),
EventUtils
.
SCENES_SHOW
);
//次数检查和时间间隔检查
//次数检查和时间间隔检查
...
@@ -243,6 +248,11 @@ public class OutAdManager extends BaseOutShowManager {
...
@@ -243,6 +248,11 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil
.
d
(
TAG
);
LogUtil
.
d
(
TAG
);
hadStartAdDialogFail
=
false
;
hadStartAdDialogFail
=
false
;
if
(!
AppOutUtils
.
isScreenOn
())
{
OutHelp
.
get
().
wakeOn
();
}
startAdDialog
(
OutHelp
.
get
().
getContext
(),
actionFrom
,
getReminderInfo
(),
adData
);
startAdDialog
(
OutHelp
.
get
().
getContext
(),
actionFrom
,
getReminderInfo
(),
adData
);
return
;
return
;
}
}
...
...
app/src/main/java/com/zl/sdk/out/deepNightModle/DeepNight.java
0 → 100644
View file @
ce157df4
package
com
.
zl
.
sdk
.
out
.
deepNightModle
;
import
com.zl.sdk.ad.AdDataManager
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.out.AppOutSP
;
import
com.zl.sdk.out.CheckHelper
;
import
java.util.Calendar
;
public
class
DeepNight
{
private
static
boolean
isOpen
=
true
;
private
static
int
start_time
=
2
;
private
static
int
end_time
=
5
;
private
static
boolean
deepNightRunning
=
false
;
/**
* 深夜模式是否开启
*
* @return
*/
public
static
boolean
deepNightIsOpen
()
{
return
isOpen
;
}
/**
* 深夜模式能否开始
*
* @return
*/
public
static
boolean
checkDeepNightRunning
()
{
if
(
deepNightRunning
)
{
deepNightRunning
=
checkTime
()
&&
checkAdTimes
();
}
else
{
deepNightRunning
=
deepNightIsOpen
()
&&
checkTime
()
&&
checkAdTimes
();
}
return
deepNightRunning
;
}
/**
* 深夜模式 检查当前时间
*
* @return
*/
private
static
boolean
checkTime
()
{
int
curr_hour
=
Calendar
.
getInstance
().
get
(
Calendar
.
HOUR_OF_DAY
);
return
start_time
<
curr_hour
&&
curr_hour
<
end_time
;
}
/**
* 深夜模式 检查上次熄屏时间
*
* @return
*/
private
static
boolean
checkLastScreenOffTime
()
{
return
System
.
currentTimeMillis
()
-
AppOutSP
.
getLastScreenOffTime
()
>=
10
*
60
*
1000L
;
}
private
static
boolean
checkAdTimes
()
{
return
CheckHelper
.
checkCanShowAdByTimesFromAdData
(
AdDataManager
.
get
().
getShowAdData
(),
-
1
,
EventUtils
.
SCENES_SHOW
);
}
}
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