Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
E
Easy Cleaner Junk
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
Easy Cleaner Junk
Commits
f807e383
Commit
f807e383
authored
Jul 01, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'free-master' of gitlab.huolea.com:koko/easy-junk-cleaner-6-18 into free-master
parents
89ec2e83
72d49069
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
196 additions
and
97 deletions
+196
-97
CustomDialog.kt
...ycleanerjunk/activity/photocompress/photo/CustomDialog.kt
+9
-0
AdDisplayUtils.java
...m/test/easy/easycleanerjunk/helps/ads/AdDisplayUtils.java
+45
-12
AdmobUtils.kt
...ava/com/test/easy/easycleanerjunk/helps/ads/AdmobUtils.kt
+122
-80
dialog_ad_loading.xml
app/src/main/res/layout/dialog_ad_loading.xml
+1
-0
fragment_layout_home.xml
app/src/main/res/layout/fragment_layout_home.xml
+19
-5
No files found.
app/src/main/java/com/test/easy/easycleanerjunk/activity/photocompress/photo/CustomDialog.kt
View file @
f807e383
...
...
@@ -7,6 +7,7 @@ import android.view.View
import
android.widget.TextView
class
CustomDialog
(
context
:
Context
,
layoutId
:
Int
)
:
Dialog
(
context
)
{
private
var
countdownText
:
TextView
?
=
null
init
{
setContentView
(
layoutId
)
...
...
@@ -25,4 +26,12 @@ class CustomDialog(context: Context, layoutId: Int) : Dialog(context) {
}
}
fun
setCountdownText
(
viewId
:
Int
)
{
countdownText
=
findViewById
(
viewId
)
}
fun
updateCountdownText
(
seconds
:
String
)
{
countdownText
?.
text
=
seconds
}
}
app/src/main/java/com/test/easy/easycleanerjunk/helps/ads/AdDisplayUtils.java
View file @
f807e383
package
com
.
test
.
easy
.
easycleanerjunk
.
helps
.
ads
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
com.test.easy.easycleanerjunk.MyApplication
;
...
...
@@ -10,27 +9,27 @@ import java.util.Calendar;
import
java.util.Date
;
import
java.util.Locale
;
import
android.content.SharedPreferences
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Locale
;
public
class
AdDisplayUtils
{
private
static
final
int
MAX_AD_DISPLAY_COUNT
=
5
;
// 总广告展示次数限制
private
static
final
int
MAX_AD_CLICK_COUNT
=
2
;
// 单个广告点击次数限制
private
static
final
int
DEFAULT_MAX_AD_DISPLAY_COUNT
=
45
;
// 总广告展示次数限制默认值
private
static
final
int
DEFAULT_MAX_AD_CLICK_COUNT
=
10
;
// 单个广告点击次数限制默认值
private
static
final
String
AD_PREFS_NAME
=
"ad_prefs"
;
// SharedPreferences 名称
private
static
final
String
AD_DISPLAY_COUNT_KEY
=
"ad_display_count"
;
// 广告展示次数的键
private
static
final
String
AD_CLICK_COUNT_KEY
=
"ad_click_count"
;
// 广告点击次数的键
private
static
final
String
MAX_AD_DISPLAY_COUNT_KEY
=
"max_ad_display_count"
;
// 总广告展示次数限制的键
private
static
final
String
MAX_AD_CLICK_COUNT_KEY
=
"max_ad_click_count"
;
// 单个广告点击次数限制的键
private
static
AdDisplayUtils
instance
;
// 单例对象
private
int
adDisplayCount
=
0
;
// 当前广告展示次数
private
int
adClickCount
=
0
;
// 当前广告点击次数
private
int
maxAdDisplayCount
;
// 总广告展示次数限制
private
int
maxAdClickCount
;
// 单个广告点击次数限制
private
String
currentDate
;
// 当前日期
private
AdDisplayUtils
()
{
currentDate
=
getCurrentDate
();
SharedPreferences
prefs
=
MyApplication
.
context
.
getSharedPreferences
(
AD_PREFS_NAME
,
0
);
maxAdDisplayCount
=
prefs
.
getInt
(
MAX_AD_DISPLAY_COUNT_KEY
,
DEFAULT_MAX_AD_DISPLAY_COUNT
);
maxAdClickCount
=
prefs
.
getInt
(
MAX_AD_CLICK_COUNT_KEY
,
DEFAULT_MAX_AD_CLICK_COUNT
);
adDisplayCount
=
prefs
.
getInt
(
getAdDisplayCountKey
(),
0
);
adClickCount
=
prefs
.
getInt
(
getAdClickCountKey
(),
0
);
}
...
...
@@ -43,11 +42,14 @@ public class AdDisplayUtils {
}
public
boolean
shouldDisplayAd
()
{
return
adDisplayCount
<
MAX_AD_DISPLAY_COUNT
;
return
adDisplayCount
<
getMaxAdDisplayCount
()
;
}
public
boolean
shouldIncrementClickCount
()
{
return
adClickCount
<
MAX_AD_CLICK_COUNT
;
return
adClickCount
<
getMaxAdClickCount
();
}
public
boolean
shouldShowAd
()
{
return
shouldDisplayAd
()
||
shouldIncrementClickCount
();
}
public
void
incrementAdDisplayCount
()
{
...
...
@@ -95,5 +97,36 @@ public class AdDisplayUtils {
editor
.
putInt
(
getAdClickCountKey
(),
adClickCount
);
editor
.
apply
();
}
}
private
int
getMaxAdDisplayCount
()
{
return
maxAdDisplayCount
;
}
public
void
setMaxAdDisplayCount
(
int
maxAdDisplayCount
)
{
this
.
maxAdDisplayCount
=
maxAdDisplayCount
;
saveMaxAdDisplayCount
();
}
private
int
getMaxAdClickCount
()
{
return
maxAdClickCount
;
}
public
void
setMaxAdClickCount
(
int
maxAdClickCount
)
{
this
.
maxAdClickCount
=
maxAdClickCount
;
saveMaxAdClickCount
();
}
private
void
saveMaxAdDisplayCount
()
{
SharedPreferences
prefs
=
MyApplication
.
context
.
getSharedPreferences
(
AD_PREFS_NAME
,
0
);
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
editor
.
putInt
(
MAX_AD_DISPLAY_COUNT_KEY
,
maxAdDisplayCount
);
editor
.
apply
();
}
private
void
saveMaxAdClickCount
()
{
SharedPreferences
prefs
=
MyApplication
.
context
.
getSharedPreferences
(
AD_PREFS_NAME
,
0
);
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
editor
.
putInt
(
MAX_AD_CLICK_COUNT_KEY
,
maxAdClickCount
);
editor
.
apply
();
}
}
app/src/main/java/com/test/easy/easycleanerjunk/helps/ads/AdmobUtils.kt
View file @
f807e383
...
...
@@ -3,6 +3,7 @@ package com.test.easy.easycleanerjunk.helps.ads
import
android.app.Activity
import
android.app.Dialog
import
android.os.Bundle
import
android.os.CountDownTimer
import
android.util.Log
import
android.view.ViewGroup
import
android.widget.Toast
...
...
@@ -31,9 +32,7 @@ import com.test.easy.easycleanerjunk.helps.BaseApplication
import
com.test.easy.easycleanerjunk.helps.ConfigHelper
import
com.test.easy.easycleanerjunk.utils.SPUtils
import
org.json.JSONObject
import
java.util.Calendar
import
java.util.UUID
import
kotlin.system.exitProcess
object
AdmobUtils
{
...
...
@@ -63,6 +62,10 @@ object AdmobUtils {
onLoad
?.
invoke
()
return
}
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
onLoad
?.
invoke
()
return
}
val
reqId
=
UUID
.
randomUUID
().
toString
()
val
obj
=
JSONObject
()
obj
.
put
(
"req_id"
,
reqId
)
...
...
@@ -96,6 +99,10 @@ object AdmobUtils {
if
(
activity
.
isFinishing
||
activity
.
isDestroyed
)
{
return
}
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
onHidden
?.
invoke
()
return
}
val
obj
=
JSONObject
()
obj
.
put
(
"ad_unit"
,
"openAd"
)
// if (mOpenAd == null || skip) {
...
...
@@ -154,7 +161,9 @@ object AdmobUtils {
fun
showNativeAd
(
activity
:
Activity
?,
parent
:
ViewGroup
)
{
val
obj
=
JSONObject
()
obj
.
put
(
"ad_unit"
,
"NativeAd"
)
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
return
}
loadingListener
=
{
if
(
System
.
currentTimeMillis
()
-
nativeLoadTime
<=
1000
*
60
*
60
)
{
nativeAd
?.
let
{
...
...
@@ -192,6 +201,9 @@ object AdmobUtils {
return
}
isLoading
=
true
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
return
}
val
reqId
=
UUID
.
randomUUID
().
toString
()
val
obj
=
JSONObject
()
...
...
@@ -224,25 +236,22 @@ object AdmobUtils {
}
private
var
interAd
:
InterstitialAd
?
=
null
fun
isInterLoaded
()
=
interAd
!=
null
fun
loadInterstitialAd
(
activity
:
Activity
,
onLoad
:
(()
->
Unit
)?
=
null
)
{
if
(
interAd
!=
null
)
{
onLoad
?.
invoke
()
return
}
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
onLoad
?.
invoke
()
return
}
val
reqId
=
UUID
.
randomUUID
().
toString
()
val
obj
=
JSONObject
()
obj
.
put
(
"req_id"
,
reqId
)
obj
.
put
(
"ad_type"
,
"interAd"
)
obj
.
put
(
"from"
,
activity
.
javaClass
.
simpleName
)
InterstitialAd
.
load
(
activity
,
ConfigHelper
.
interAdmobId
,
mRequest
,
object
:
InterstitialAdLoadCallback
()
{
override
fun
onAdFailedToLoad
(
p0
:
LoadAdError
)
{
Log
.
d
(
"glc"
,
"广告拉取失败:"
+
p0
.
message
)
interAd
=
null
onLoad
?.
invoke
()
pull
(
p0
.
responseInfo
,
"interAd"
,
p0
.
message
,
reqId
=
reqId
)
...
...
@@ -254,7 +263,6 @@ object AdmobUtils {
)
}
// Log.e("MXL", "InterAdFailedToLoad: " + p0.message)
}
override
fun
onAdLoaded
(
ad
:
InterstitialAd
)
{
...
...
@@ -263,14 +271,17 @@ object AdmobUtils {
interLoadTime
=
System
.
currentTimeMillis
()
pull
(
ad
.
responseInfo
,
"interAd"
,
reqId
=
reqId
)
ad
.
onPaidEventListener
=
EventOnPaidEventListener
(
ad
)
// Log.e("MXL", "InteronAdLoaded: ")
}
})
}
private
fun
isAdExpired
():
Boolean
{
private
fun
isAdExpired
():
Boolean
{
return
System
.
currentTimeMillis
()
-
interLoadTime
>
1000
*
60
*
60
}
var
adDisplayInterval
:
Int
=
10
var
adLastDisplayTime
:
Long
=
0
fun
showInterstitialAd
(
activity
:
Activity
,
isLoadAdNow
:
Boolean
=
false
,
onHidden
:
(()
->
Unit
)?
=
null
)
{
if
(
activity
.
isFinishing
||
activity
.
isDestroyed
)
{
return
...
...
@@ -283,24 +294,54 @@ object AdmobUtils {
return
}
if
(!
AdDisplayUtils
.
getInstance
().
shouldDisplayAd
())
{
if
(!
AdDisplayUtils
.
getInstance
().
shouldShowAd
())
{
onHidden
?.
invoke
()
return
}
val
interval
=
isTimeElapsed
()
if
(!
AdDisplayUtils
.
getInstance
().
shouldIncrementClickCount
()){
onHidden
?.
invoke
()
return
if
(
interval
<=
0
)
{
showCachedInterstitialAd
(
activity
,
isLoadAdNow
,
onHidden
)
}
else
{
showIntervalDialogAndShowAd
(
activity
,
isLoadAdNow
,
onHidden
,
interval
)
}
}
private
fun
showIntervalDialogAndShowAd
(
activity
:
Activity
,
isLoadAdNow
:
Boolean
,
onHidden
:
(()
->
Unit
)?,
interval
:
Int
)
{
val
customDialog
=
CustomDialog
(
activity
,
R
.
layout
.
dialog_ad_loading
)
customDialog
.
setCountdownText
(
R
.
id
.
dialog_ad_loading_text
)
val
countdownTimer
=
object
:
CountDownTimer
((
interval
*
1000
).
toLong
(),
1000
)
{
override
fun
onTick
(
millisUntilFinished
:
Long
)
{
val
seconds
=
(
millisUntilFinished
/
1000
).
toInt
()
customDialog
.
updateCountdownText
(
"Advertising in preparation ($seconds"
+
"s)..."
)
}
override
fun
onFinish
()
{
showCachedInterstitialAd
(
activity
,
isLoadAdNow
,
onHidden
)
customDialog
?.
dismiss
()
customDialog
.
dismiss
()
}
}
countdownTimer
.
start
()
customDialog
.
show
()
}
private
fun
showCachedInterstitialAd
(
activity
:
Activity
,
isLoadAdNow
:
Boolean
,
onHidden
:
(()
->
Unit
)?)
{
if
(
interAd
!=
null
)
{
displayInterstitialAd
(
activity
,
onHidden
)
displayInterstitialAd
(
activity
,
onHidden
)
}
else
{
showAdDialogAndLoadInterstitial
(
activity
,
isLoadAdNow
,
onHidden
)
showAdDialogAndLoadInterstitial
(
activity
,
isLoadAdNow
,
onHidden
)
}
}
private
fun
showAdDialogAndLoadInterstitial
(
activity
:
Activity
,
isLoadAdNow
:
Boolean
,
onHidden
:
(()
->
Unit
)?){
private
fun
isTimeElapsed
():
Int
{
val
nowTime
=
System
.
currentTimeMillis
()
/
1000
return
(
adDisplayInterval
-
(
nowTime
-
adLastDisplayTime
).
toInt
())
}
private
fun
showAdDialogAndLoadInterstitial
(
activity
:
Activity
,
isLoadAdNow
:
Boolean
,
onHidden
:
(()
->
Unit
)?)
{
var
mDialog
:
Dialog
?
=
null
mDialog
=
CustomDialog
(
activity
,
R
.
layout
.
dialog_ad_loading
)
mDialog
.
show
()
...
...
@@ -319,7 +360,7 @@ object AdmobUtils {
}
}
private
fun
displayInterstitialAd
(
activity
:
Activity
,
onHidden
:
(()
->
Unit
)?
=
null
)
{
private
fun
displayInterstitialAd
(
activity
:
Activity
,
onHidden
:
(()
->
Unit
)?
=
null
)
{
val
thisInterAd
=
interAd
interAd
=
null
thisInterAd
?.
fullScreenContentCallback
=
object
:
FullScreenContentCallback
()
{
...
...
@@ -343,6 +384,7 @@ object AdmobUtils {
override
fun
onAdShowedFullScreenContent
()
{
show
(
thisInterAd
?.
responseInfo
,
"interAd"
,
activity
)
AdDisplayUtils
.
getInstance
().
incrementAdDisplayCount
()
adLastDisplayTime
=
System
.
currentTimeMillis
()
/
1000
}
}
thisInterAd
?.
show
(
activity
)
...
...
app/src/main/res/layout/dialog_ad_loading.xml
View file @
f807e383
...
...
@@ -22,6 +22,7 @@
<TextView
android:id=
"@+id/dialog_ad_loading_text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"11dp"
...
...
app/src/main/res/layout/fragment_layout_home.xml
View file @
f807e383
...
...
@@ -118,7 +118,8 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
android:layout_height=
"wrap_content"
android:layout_marginTop=
"14dp"
>
<com.noober.background.view.BLLinearLayout
android:id=
"@+id/id_clean_junk"
...
...
@@ -264,7 +265,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"
6
dp"
>
android:layout_marginTop=
"
10
dp"
>
<com.noober.background.view.BLLinearLayout
android:id=
"@+id/id_large_file"
...
...
@@ -436,7 +437,7 @@
android:id=
"@+id/id_similar_photos"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"1
6
dp"
android:layout_marginBottom=
"1
3
dp"
android:gravity=
"center_vertical"
>
<androidx.appcompat.widget.AppCompatImageView
...
...
@@ -450,7 +451,10 @@
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"6dp"
android:layout_weight=
"1"
android:text=
"Similar Photos"
/>
android:text=
"Similar Photos"
android:textColor=
"#000000"
android:textSize=
"13sp"
android:textStyle=
"bold"
/>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width=
"wrap_content"
...
...
@@ -461,11 +465,18 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_marginHorizontal=
"14dp"
android:background=
"#F8F8F8"
/>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/id_screenshot_clean"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"16dp"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:gravity=
"center_vertical"
>
<androidx.appcompat.widget.AppCompatImageView
...
...
@@ -479,6 +490,9 @@
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"6dp"
android:layout_weight=
"1"
android:textColor=
"#000000"
android:textSize=
"13sp"
android:textStyle=
"bold"
android:text=
"Screenshot Clean"
/>
<androidx.appcompat.widget.AppCompatImageView
...
...
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