Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White
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
PDF Viewer Scanner White
Commits
33f475df
Commit
33f475df
authored
Oct 08, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
eacf3173
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
123 additions
and
34 deletions
+123
-34
build.gradle.kts
app/build.gradle.kts
+2
-3
AdmobHelper.kt
...in/java/com/base/pdfviewerscannerwhite/ads/AdmobHelper.kt
+21
-0
RemoteConfigHelper.kt
.../com/base/pdfviewerscannerwhite/ads/RemoteConfigHelper.kt
+49
-0
AdmobHelper.kt
...a/com/base/pdfviewerscannerwhite/ads/admob/AdmobHelper.kt
+0
-7
AdmobInterstitialUtils.kt
...pdfviewerscannerwhite/ads/admob/AdmobInterstitialUtils.kt
+3
-3
AdmobOpenUtils.kt
...om/base/pdfviewerscannerwhite/ads/admob/AdmobOpenUtils.kt
+6
-2
NativeView.kt
...va/com/base/pdfviewerscannerwhite/ads/admob/NativeView.kt
+8
-8
MainActivity.kt
...va/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
+2
-0
SplashActivity.kt
...om/base/pdfviewerscannerwhite/ui/splash/SplashActivity.kt
+13
-1
SplashPresenter.kt
...m/base/pdfviewerscannerwhite/ui/splash/SplashPresenter.kt
+12
-10
remote_config_defaults.xml
app/src/main/res/xml/remote_config_defaults.xml
+7
-0
No files found.
app/build.gradle.kts
View file @
33f475df
...
...
@@ -40,9 +40,6 @@ android {
}
buildTypes
{
debug
{
signingConfig
=
signingConfigs
.
getByName
(
"release"
)
}
release
{
isMinifyEnabled
=
false
proguardFiles
(
getDefaultProguardFile
(
"proguard-android-optimize.txt"
),
"proguard-rules.pro"
)
...
...
@@ -113,6 +110,8 @@ dependencies {
implementation
(
"com.google.firebase:firebase-analytics-ktx"
)
implementation
(
"com.google.firebase:firebase-crashlytics"
)
implementation
(
"com.google.firebase:firebase-database-ktx"
)
implementation
(
"com.google.firebase:firebase-config-ktx"
)
//facebook
implementation
(
"com.facebook.android:facebook-android-sdk:[8,9)"
)
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ads/AdmobHelper.kt
0 → 100644
View file @
33f475df
package
com.base.pdfviewerscannerwhite.ads
import
com.base.pdfviewerscannerwhite.helper.EventUtils
import
com.base.pdfviewerscannerwhite.helper.MyApplication
import
com.google.android.gms.ads.MobileAds
import
java.util.concurrent.atomic.AtomicBoolean
object
AdmobHelper
{
//展示广告关闭时赋值
var
lastShowedOnHiddenTime
=
0L
var
isAdInit
=
AtomicBoolean
(
false
)
fun
initAdmobAd
()
{
MobileAds
.
initialize
(
MyApplication
.
context
)
{
initializationStatus
->
isAdInit
.
set
(
true
)
EventUtils
.
event
(
"AdmobInit"
,
"AdmobInit"
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ads/RemoteConfigHelper.kt
0 → 100644
View file @
33f475df
package
com.base.pdfviewerscannerwhite.ads
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.google.firebase.ktx.Firebase
import
com.google.firebase.remoteconfig.ConfigUpdate
import
com.google.firebase.remoteconfig.ConfigUpdateListener
import
com.google.firebase.remoteconfig.FirebaseRemoteConfig
import
com.google.firebase.remoteconfig.FirebaseRemoteConfigException
import
com.google.firebase.remoteconfig.ktx.get
import
com.google.firebase.remoteconfig.ktx.remoteConfig
import
com.google.firebase.remoteconfig.ktx.remoteConfigSettings
object
RemoteConfigHelper
{
private
val
TAG
=
"RemoteConfigHelper"
fun
test
()
{
val
remoteConfig
:
FirebaseRemoteConfig
=
Firebase
.
remoteConfig
val
configSettings
=
remoteConfigSettings
{
minimumFetchIntervalInSeconds
=
3600
}
remoteConfig
.
setConfigSettingsAsync
(
configSettings
)
remoteConfig
.
setDefaultsAsync
(
R
.
xml
.
remote_config_defaults
)
//提取并激活值
remoteConfig
.
fetchAndActivate
().
addOnCompleteListener
{
task
->
if
(
task
.
isSuccessful
)
{
val
aa
=
remoteConfig
[
"a"
].
asString
()
LogEx
.
logDebug
(
TAG
,
"fetchAndActivate aa=$aa"
)
}
}
//监听跟新值
remoteConfig
.
addOnConfigUpdateListener
(
object
:
ConfigUpdateListener
{
override
fun
onUpdate
(
configUpdate
:
ConfigUpdate
)
{
remoteConfig
.
activate
().
addOnCompleteListener
{
val
aa2
=
remoteConfig
[
"a"
].
asString
()
LogEx
.
logDebug
(
TAG
,
"onUpdate aa=$aa2"
)
}
}
override
fun
onError
(
error
:
FirebaseRemoteConfigException
)
{
}
})
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ads/admob/AdmobHelper.kt
deleted
100644 → 0
View file @
eacf3173
package
com.base.pdfviewerscannerwhite.ads.admob
object
AdmobHelper
{
//展示广告关闭时赋值
var
lastShowedOnHiddenTime
=
0L
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ads/admob/AdmobInterstitialUtils.kt
View file @
33f475df
...
...
@@ -8,7 +8,7 @@ import com.base.pdfviewerscannerwhite.ads.AdDisplayUtils
import
com.base.pdfviewerscannerwhite.ads.admob.AdmobEvent.clickAd
import
com.base.pdfviewerscannerwhite.ads.admob.AdmobEvent.pullAd
import
com.base.pdfviewerscannerwhite.ads.admob.AdmobEvent.showAd
import
com.base.pdfviewerscannerwhite.ads.
admob.
AdmobHelper.lastShowedOnHiddenTime
import
com.base.pdfviewerscannerwhite.ads.AdmobHelper.lastShowedOnHiddenTime
import
com.base.pdfviewerscannerwhite.helper.ConfigHelper
import
com.base.pdfviewerscannerwhite.helper.EventUtils
import
com.base.pdfviewerscannerwhite.helper.MyApplication
...
...
@@ -152,7 +152,7 @@ object AdmobInterstitialUtils {
thisInterAd
?.
fullScreenContentCallback
=
object
:
FullScreenContentCallback
()
{
override
fun
onAdClicked
()
{
clickAd
(
thisInterAd
?.
responseInfo
,
"interAd"
)
AdDisplayUtils
.
incrementInter
Ad
ClickCount
()
AdDisplayUtils
.
incrementInterClickCount
()
}
override
fun
onAdDismissedFullScreenContent
()
{
...
...
@@ -172,7 +172,7 @@ object AdmobInterstitialUtils {
override
fun
onAdShowedFullScreenContent
()
{
dialog
?.
dismiss
()
showAd
(
thisInterAd
?.
responseInfo
,
"interAd"
,
activity
)
AdDisplayUtils
.
incrementInter
AdDisplay
Count
()
AdDisplayUtils
.
incrementInter
Show
Count
()
adLastDisplayTime
=
System
.
currentTimeMillis
()
/
1000
}
}
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ads/admob/AdmobOpenUtils.kt
View file @
33f475df
...
...
@@ -24,7 +24,11 @@ object AdmobOpenUtils {
private
val
mRequest
=
AdRequest
.
Builder
().
build
()
private
var
openLoadTime
=
Long
.
MAX_VALUE
private
var
mOpenAd
:
AppOpenAd
?
=
null
fun
isOpenAdLoaded
()
=
mOpenAd
!=
null
private
fun
isAdExpired
():
Boolean
{
return
System
.
currentTimeMillis
()
-
openLoadTime
>
1000
*
60
*
60
}
fun
loadAppOpenAd
(
skip
:
Boolean
=
false
,
onLoad
:
((
where
:
Int
)
->
Unit
)?
=
null
)
{
...
...
@@ -79,7 +83,7 @@ object AdmobOpenUtils {
onHidden
?.
invoke
(
false
)
return
}
if
(
System
.
currentTimeMillis
()
-
openLoadTime
>
1000
*
60
*
60
)
{
if
(
isAdExpired
()
)
{
LogEx
.
logDebug
(
TAG
,
"openLoadTime out time"
)
mOpenAd
=
null
loadAppOpenAd
()
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ads/admob/NativeView.kt
View file @
33f475df
...
...
@@ -33,26 +33,26 @@ class NativeView(context: Context, val layout: Int, attrs: AttributeSet? = null)
adView
.
callToActionView
=
adView
.
findViewById
(
R
.
id
.
ad_call_to_action
)
adView
.
iconView
=
adView
.
findViewById
(
R
.
id
.
ad_app_icon
)
(
adView
.
headlineView
as
TextView
?)
?.
text
=
nativeAd
.
headline
adView
.
mediaView
!!
.
mediaContent
=
nativeAd
.
mediaContent
adView
.
mediaView
?
.
mediaContent
=
nativeAd
.
mediaContent
if
(
nativeAd
.
body
==
null
)
{
adView
.
bodyView
!!
.
visibility
=
View
.
INVISIBLE
adView
.
bodyView
?
.
visibility
=
View
.
INVISIBLE
}
else
{
adView
.
bodyView
!!
.
visibility
=
View
.
VISIBLE
adView
.
bodyView
?
.
visibility
=
View
.
VISIBLE
(
adView
.
bodyView
as
TextView
?)
?.
text
=
nativeAd
.
body
}
if
(
nativeAd
.
callToAction
==
null
)
{
adView
.
callToActionView
!!
.
visibility
=
View
.
INVISIBLE
adView
.
callToActionView
?
.
visibility
=
View
.
INVISIBLE
}
else
{
adView
.
callToActionView
!!
.
visibility
=
View
.
VISIBLE
adView
.
callToActionView
?
.
visibility
=
View
.
VISIBLE
(
adView
.
callToActionView
as
Button
?)
?.
text
=
nativeAd
.
callToAction
}
if
(
nativeAd
.
icon
==
null
)
{
adView
.
iconView
!!
.
visibility
=
View
.
GONE
adView
.
iconView
?
.
visibility
=
View
.
GONE
}
else
{
(
adView
.
iconView
as
ImageView
?)
?.
setImageDrawable
(
nativeAd
.
icon
!!
.
drawable
nativeAd
.
icon
?
.
drawable
)
adView
.
iconView
!!
.
visibility
=
View
.
VISIBLE
adView
.
iconView
?
.
visibility
=
View
.
VISIBLE
}
adView
.
setNativeAd
(
nativeAd
)
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
View file @
33f475df
...
...
@@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.ads.FirebaseDatabase
import
com.base.pdfviewerscannerwhite.ads.RemoteConfigHelper
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
...
...
@@ -61,6 +62,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
FirebaseDatabase
.
saveDatabase2Sp
()
RemoteConfigHelper
.
test
()
}
override
fun
onResume
()
{
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/splash/SplashActivity.kt
View file @
33f475df
...
...
@@ -7,6 +7,8 @@ import android.graphics.Color
import
android.os.Build
import
androidx.activity.result.contract.ActivityResultContracts
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfviewerscannerwhite.ads.AdmobHelper.initAdmobAd
import
com.base.pdfviewerscannerwhite.ads.admob.AdmobOpenUtils
import
com.base.pdfviewerscannerwhite.bean.ConstObject.ifAgreePrivacy
import
com.base.pdfviewerscannerwhite.databinding.ActivitySplashBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
...
...
@@ -54,10 +56,20 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView {
}
override
fun
showAd
()
{
// jumpNext()
AdmobOpenUtils
.
loadAppOpenAd
{
AdmobOpenUtils
.
showAppOpenAd
(
this
,
showBefore
=
{
if
(
it
)
{
splashPresenter
.
pauseJumpJob
()
}
},
onHidden
=
{
jumpNext
()
})
}
}
override
fun
agreePrivacy
()
{
initAdmobAd
()
showAd
()
startProgressJob
()
splashPresenter
.
startJumpJob
(
lifecycleScope
)
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/splash/SplashPresenter.kt
View file @
33f475df
package
com.base.pdfviewerscannerwhite.ui.splash
import
androidx.lifecycle.LifecycleCoroutineScope
import
com.base.pdfviewerscannerwhite.ads.FirebaseDatabase.open_ad_loading
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.utils.AppPreferences
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.delay
...
...
@@ -14,21 +16,21 @@ class SplashPresenter(
private
var
jumpJob
:
Job
?
=
null
var
loadingTime
=
2L
var
loadingTime
=
AppPreferences
.
getInstance
().
getString
(
open_ad_loading
,
"15"
).
toInt
()
/**
* 超时跳转
*/
fun
startJumpJob
(
lifecycleCoroutineScope
:
LifecycleCoroutineScope
)
{
if
(
ConstObject
.
ifAgreePrivacy
)
{
if
(
jumpJob
==
null
)
{
val
startTime
=
System
.
currentTimeMillis
()
jumpJob
=
lifecycleCoroutineScope
.
launch
{
delay
(
loadingTime
*
1000
)
val
endTime
=
System
.
currentTimeMillis
(
)
LogEx
.
logDebug
(
TAG
,
"超时跳转 time=${endTime - startTime}"
)
splashView
.
jumpNext
(
)
}
AppPreferences
.
getInstance
().
put
(
open_ad_loading
,
"8"
)
if
(
jumpJob
==
null
)
{
val
startTime
=
System
.
currentTimeMillis
()
jumpJob
=
lifecycleCoroutineScope
.
launch
{
LogEx
.
logDebug
(
TAG
,
"loadingTime=$loadingTime"
)
delay
(
loadingTime
*
1000L
)
val
endTime
=
System
.
currentTimeMillis
(
)
LogEx
.
logDebug
(
TAG
,
"超时跳转 time=${endTime - startTime}"
)
splashView
.
jumpNext
()
}
}
}
...
...
app/src/main/res/xml/remote_config_defaults.xml
0 → 100644
View file @
33f475df
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<entry>
<key>
welcome_message
</key>
<defaultValue>
"Welcome, user!"
</defaultValue>
</entry>
</defaultsMap>
\ 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