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
2b801cfe
Commit
2b801cfe
authored
Jan 10, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
f7d06600
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
162 additions
and
2 deletions
+162
-2
AdsMgr.kt
app/src/main/java/com/base/scanqr/ads/AdsMgr.kt
+2
-1
AdConfigBean.kt
...src/main/java/com/base/scanqr/bean/config/AdConfigBean.kt
+2
-0
CreateFragment.kt
app/src/main/java/com/base/scanqr/ui/main/CreateFragment.kt
+22
-0
MainActivity.kt
app/src/main/java/com/base/scanqr/ui/main/MainActivity.kt
+18
-1
LogDialog.kt
app/src/main/java/com/base/scanqr/ui/widget/LogDialog.kt
+40
-0
ClickTimesUtils.kt
app/src/main/java/com/base/scanqr/utils/ClickTimesUtils.kt
+51
-0
dialog_log_content.xml
app/src/main/res/layout/dialog_log_content.xml
+27
-0
No files found.
app/src/main/java/com/base/scanqr/ads/AdsMgr.kt
View file @
2b801cfe
...
...
@@ -102,7 +102,7 @@ object AdsMgr {
if
(
AdConfigBean
.
adsConfigBean
.
adSwitch
)
{
admobInitCallBack
?.
invoke
()
admobInitCallBack
=
null
adOpenMgr
.
loadAd
(
context
,
fals
e
,
AdmobEvent
(
"openAd"
,
context
::
class
.
java
.
simpleName
))
adOpenMgr
.
loadAd
(
context
,
tru
e
,
AdmobEvent
(
"openAd"
,
context
::
class
.
java
.
simpleName
))
adInsertMgr
.
loadAd
(
context
,
false
,
AdmobEvent
(
"interAd"
,
context
::
class
.
java
.
simpleName
))
}
}
...
...
@@ -160,6 +160,7 @@ object AdsMgr {
)
{
if
(
configBean
.
isInBlackList
)
{
EventUtils
.
event
(
"isInBlackList"
,
"isInBlackList=${configBean.isInBlackList}"
)
showCallBack
?.
failed
()
return
}
...
...
app/src/main/java/com/base/scanqr/bean/config/AdConfigBean.kt
View file @
2b801cfe
...
...
@@ -10,6 +10,8 @@ class AdConfigBean(
var
functionBackShowAd
:
Boolean
=
true
,
var
functionInShowAd
:
Boolean
=
true
,
var
tabFgInterval
:
Int
=
30
,
var
scanTabShowAd
:
Boolean
=
true
,
val
setTabShowAd
:
Boolean
=
true
,
var
taichiAdValue
:
Int
=
1
,
//价值上报阀值
var
adRatio
:
Int
=
100
//价值上报随机控制
)
{
...
...
app/src/main/java/com/base/scanqr/ui/main/CreateFragment.kt
View file @
2b801cfe
...
...
@@ -17,6 +17,7 @@ import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
import
com.base.scanqr.bean.config.AdConfigBean.Companion.adsConfigBean
import
com.base.scanqr.bean.config.ConfigBean
import
com.base.scanqr.databinding.FragmentCreateBinding
import
com.base.scanqr.ui.contact.ContractActivity
import
com.base.scanqr.ui.email.EmailActivity
...
...
@@ -25,8 +26,12 @@ import com.base.scanqr.ui.message.MessageActivity
import
com.base.scanqr.ui.telephone.TelephoneActivity
import
com.base.scanqr.ui.text.TextActivity
import
com.base.scanqr.ui.website.WebsiteActivity
import
com.base.scanqr.ui.widget.LogDialog.showLogDialog
import
com.base.scanqr.ui.wifi.WifiActivity
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.BarUtils
import
com.base.scanqr.utils.ClickTimesUtils.isContinuousTimesClick
import
com.google.gson.Gson
import
com.gyf.immersionbar.ktx.immersionBar
class
CreateFragment
:
BaseFragment
<
FragmentCreateBinding
>(
FragmentCreateBinding
::
inflate
)
{
...
...
@@ -122,4 +127,21 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
}
}
override
fun
initListener
()
{
super
.
initListener
()
binding
.
tvTitle
.
setOnClickListener
{
if
(
isContinuousTimesClick
())
{
val
sb
=
StringBuilder
()
val
gson
=
Gson
()
sb
.
append
(
"ut:${ConfigBean.configBean.ut}"
).
append
(
"\n"
)
val
adLog
=
gson
.
toJson
(
ConfigBean
.
configBean
.
adConfigBean
).
replace
(
","
,
",\n"
)
sb
.
append
(
adLog
).
append
(
"\n"
)
val
popupLog
=
gson
.
toJson
(
ConfigBean
.
configBean
.
popupConfigBean
).
replace
(
","
,
",\n"
)
sb
.
append
(
popupLog
).
append
(
"\n"
)
sb
.
append
(
"uuid:"
).
append
(
AppPreferences
.
getInstance
().
getString
(
"uuid"
,
"null"
))
requireContext
().
showLogDialog
(
sb
.
toString
())
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/main/MainActivity.kt
View file @
2b801cfe
...
...
@@ -170,7 +170,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
1
->
{
tabAt
=
1
navController
?.
navigate
(
R
.
id
.
scanFragment
)
if
(!
isScanTabFirst
&&
tabCanShowAd
())
{
if
(!
isScanTabFirst
&&
tabCanShowAd
()
&&
AdConfigBean
.
adsConfigBean
.
scanTabShowAd
)
{
isScanTabFirst
=
false
AdsMgr
.
showInsert
(
this
,
false
,
object
:
AdsShowCallBack
()
{
override
fun
show
()
{
mainFgTabLastShow
=
System
.
currentTimeMillis
()
...
...
@@ -212,6 +213,22 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
3
->
{
tabAt
=
3
navController
?.
navigate
(
R
.
id
.
settingsFragment
)
if
(
tabCanShowAd
()
&&
AdConfigBean
.
adsConfigBean
.
setTabShowAd
)
{
AdsMgr
.
showInsert
(
this
,
false
,
object
:
AdsShowCallBack
()
{
override
fun
show
()
{
mainFgTabLastShow
=
System
.
currentTimeMillis
()
}
override
fun
close
(
where
:
Int
)
{
}
override
fun
failed
(
where
:
Int
)
{
}
override
fun
googleFailed
(
where
:
Int
)
{
}
})
}
}
}
}
...
...
app/src/main/java/com/base/scanqr/ui/widget/LogDialog.kt
0 → 100644
View file @
2b801cfe
package
com.base.scanqr.ui.widget
import
android.app.AlertDialog
import
android.content.Context
import
android.text.method.ScrollingMovementMethod
import
android.view.LayoutInflater
import
com.base.scanqr.databinding.DialogLogContentBinding
import
com.base.scanqr.utils.AppPreferences
import
com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.ToastUtils.toast
object
LogDialog
{
fun
Context
.
showLogDialog
(
log
:
String
)
{
val
dialog
=
AlertDialog
.
Builder
(
this
).
create
()
val
binding
=
DialogLogContentBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
true
)
dialog
.
show
()
val
params
=
dialog
.
window
?.
attributes
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_320)
// params?.height = LinearLayout.LayoutParams.WRAP_CONTENT
// params?.gravity = Gravity.BOTTOM
// params?.y = 50
dialog
.
window
?.
attributes
=
params
dialog
.
window
?.
setBackgroundDrawableResource
(
android
.
R
.
color
.
transparent
)
binding
.
tvLog
.
movementMethod
=
ScrollingMovementMethod
()
binding
.
tvLog
.
text
=
log
binding
.
btnCopy
.
setOnClickListener
{
val
uuid
=
AppPreferences
.
getInstance
().
getString
(
"uuid"
,
"NUll"
)
this
.
copyText
(
"uuid"
,
uuid
)
toast
(
"copyed"
,
true
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/utils/ClickTimesUtils.kt
0 → 100644
View file @
2b801cfe
package
com.base.scanqr.utils
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
object
ClickTimesUtils
{
private
val
TAG
=
"ClickTimesUtils"
private
var
lastClickTime
=
0L
private
var
continuousTimes
=
0
private
var
resetJob
:
Job
?
=
null
private
fun
startResetJob
()
{
if
(
resetJob
==
null
)
{
resetJob
=
MainScope
().
launch
(
Dispatchers
.
IO
)
{
delay
(
3000
)
lastClickTime
=
0L
continuousTimes
=
0
resetJob
=
null
LogEx
.
logDebug
(
TAG
,
"reset job"
)
}
}
}
fun
isContinuousTimesClick
(
times
:
Int
=
8
):
Boolean
{
startResetJob
()
val
lastClickInterval
=
System
.
currentTimeMillis
()
-
lastClickTime
val
thisContinue
=
lastClickInterval
<
500L
||
lastClickTime
==
0L
LogEx
.
logDebug
(
TAG
,
"lastClickInterval=$lastClickInterval lastClickTime=$lastClickTime continuousTimes=$continuousTimes"
)
if
(
thisContinue
)
{
continuousTimes
++
lastClickTime
=
System
.
currentTimeMillis
()
if
(
continuousTimes
>=
times
)
{
lastClickTime
=
0
continuousTimes
=
0
resetJob
?.
cancel
()
resetJob
=
null
LogEx
.
logDebug
(
TAG
,
"reset times click"
)
return
true
}
}
return
false
}
}
\ No newline at end of file
app/src/main/res/layout/dialog_log_content.xml
0 → 100644
View file @
2b801cfe
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tvLog"
android:layout_width=
"match_parent"
android:layout_height=
"360dp"
android:layout_margin=
"30dp"
android:gravity=
"center_horizontal"
android:scrollbars=
"vertical"
android:textSize=
"16sp"
tools:text=
"Test log"
/>
<Button
android:id=
"@+id/btnCopy"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginBottom=
"5dp"
android:text=
"Copy UUID"
/>
</LinearLayout>
\ 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