Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
scanqrwhite2copy1
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
scanqrwhite2copy1
Commits
de79c5a2
Commit
de79c5a2
authored
Feb 19, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
0cb86fee
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
908 additions
and
39 deletions
+908
-39
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
GlobalConfig.kt
app/src/main/java/com/base/scanqrclear/GlobalConfig.kt
+1
-0
SolarEngineEvent.kt
...rc/main/java/com/base/scanqrclear/ads/SolarEngineEvent.kt
+91
-0
AdmobEvent.kt
...rc/main/java/com/base/scanqrclear/ads/admob/AdmobEvent.kt
+2
-1
FacebookUIBean.kt
...src/main/java/com/base/scanqrclear/bean/FacebookUIBean.kt
+11
-7
InstagramUIBean.kt
...rc/main/java/com/base/scanqrclear/bean/InstagramUIBean.kt
+11
-7
WhatsappUIBean.kt
...src/main/java/com/base/scanqrclear/bean/WhatsappUIBean.kt
+9
-0
XUIBean.kt
app/src/main/java/com/base/scanqrclear/bean/XUIBean.kt
+12
-8
QrResultsActivity.kt
...rc/main/java/com/base/scanqrclear/qr/QrResultsActivity.kt
+146
-0
FacebookDialog.kt
...java/com/base/scanqrclear/ui/facebookqr/FacebookDialog.kt
+4
-4
InstagramDialog.kt
...ain/java/com/base/scanqrclear/ui/insqr/InstagramDialog.kt
+3
-4
ScanFragment.kt
...rc/main/java/com/base/scanqrclear/ui/main/ScanFragment.kt
+109
-0
XDialog.kt
app/src/main/java/com/base/scanqrclear/ui/xqr/XDialog.kt
+3
-4
KotlinExt.kt
app/src/main/java/com/base/scanqrclear/utils/KotlinExt.kt
+4
-0
bg_f0f1f7_5.xml
app/src/main/res/drawable/bg_f0f1f7_5.xml
+5
-0
activity_qr_results.xml
app/src/main/res/layout/activity_qr_results.xml
+484
-0
item_ad.xml
app/src/main/res/layout/item_ad.xml
+3
-3
layout_admob_item.xml
app/src/main/res/layout/layout_admob_item.xml
+1
-1
copy2.png
app/src/main/res/mipmap-xxhdpi/copy2.png
+0
-0
delete2.png
app/src/main/res/mipmap-xxhdpi/delete2.png
+0
-0
save2.png
app/src/main/res/mipmap-xxhdpi/save2.png
+0
-0
share2.png
app/src/main/res/mipmap-xxhdpi/share2.png
+0
-0
web2.png
app/src/main/res/mipmap-xxhdpi/web2.png
+0
-0
strings.xml
app/src/main/res/values/strings.xml
+6
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
de79c5a2
...
@@ -40,6 +40,9 @@
...
@@ -40,6 +40,9 @@
android:supportsRtl=
"true"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.ScanQR"
android:theme=
"@style/Theme.ScanQR"
tools:targetApi=
"31"
>
tools:targetApi=
"31"
>
<activity
android:name=
".qr.QrResultsActivity"
android:exported=
"false"
/>
<activity
<activity
android:name=
".ui.insqr.InsActivity"
android:name=
".ui.insqr.InsActivity"
android:exported=
"false"
/>
android:exported=
"false"
/>
...
...
app/src/main/java/com/base/scanqrclear/GlobalConfig.kt
View file @
de79c5a2
...
@@ -39,6 +39,7 @@ object GlobalConfig {
...
@@ -39,6 +39,7 @@ object GlobalConfig {
const
val
KEY_SOLAR
=
""
const
val
KEY_SOLAR
=
""
// admob广告位id
// admob广告位id
inline
val
ID_ADMOB_APPLICATION
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544~3347511713"
else
"ca-app-pub-3940256099942544~3347511713"
inline
val
ID_ADMOB_INTER
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/1033173712"
else
"ca-app-pub-3940256099942544/1033173712"
inline
val
ID_ADMOB_INTER
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/1033173712"
else
"ca-app-pub-3940256099942544/1033173712"
inline
val
ID_ADMOB_NATIVE
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/2247696110"
else
"ca-app-pub-3940256099942544/2247696110"
inline
val
ID_ADMOB_NATIVE
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/2247696110"
else
"ca-app-pub-3940256099942544/2247696110"
inline
val
ID_ADMOB_OPEN
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/9257395921"
else
"ca-app-pub-3940256099942544/9257395921"
inline
val
ID_ADMOB_OPEN
get
()
=
if
(
BuildConfig
.
DEBUG
)
"ca-app-pub-3940256099942544/9257395921"
else
"ca-app-pub-3940256099942544/9257395921"
...
...
app/src/main/java/com/base/scanqrclear/ads/SolarEngineEvent.kt
0 → 100644
View file @
de79c5a2
package
com.base.scanqrclear.ads
import
com.base.scanqrclear.GlobalConfig
import
com.google.android.gms.ads.appopen.AppOpenAd
import
com.google.android.gms.ads.interstitial.InterstitialAd
import
com.google.android.gms.ads.nativead.NativeAd
import
com.google.android.gms.ads.rewarded.RewardedAd
import
com.reyun.solar.engine.SolarEngineManager
import
com.reyun.solar.engine.infos.SEAdImpEventModel
import
org.json.JSONObject
/**
* https://help.solar-engine.com/cn/docs/yu-ding-yi-shi-jian
*/
object
SolarEngineEvent
{
fun
eventSolar
(
ad
:
Any
?,
valueMicros
:
Long
)
=
Thread
{
val
json
=
JSONObject
()
//变现平台
val
adNetworkPlatform
=
"AdMob"
//聚合平台标识
val
mediationPlatform
=
"admob"
//广告的类型
// adType 为激励视频时,只需要传入 1
// 1:激励视频
// 2:开屏
// 3:插屏
// 4:全屏视频
// 5:Banner
// 6:信息流
// 7:短视频信息流
// 8:大横幅
// 9:视频贴片
// 10:中等尺寸横幅
// 0:其它
var
adType
=
-
1
//变现平台的应用 ID
val
adNetworkAppID
=
GlobalConfig
.
ID_ADMOB_APPLICATION
//变现平台的变现广告位 ID
var
adNetworkADID
=
""
//广告 ecpm,单位:元(广告千次展现的变现收入,0或负值表示没传,单位为元)
val
ecpm
=
valueMicros
/
1000.0
//货币种类
val
currencyType
=
"USD"
when
(
ad
)
{
is
AppOpenAd
->
{
adType
=
2
adNetworkADID
=
ad
.
adUnitId
}
is
InterstitialAd
->
{
adType
=
3
adNetworkADID
=
ad
.
adUnitId
}
is
NativeAd
->
{
adType
=
6
adNetworkADID
=
GlobalConfig
.
ID_ADMOB_NATIVE
}
is
RewardedAd
->
{
adType
=
1
adNetworkADID
=
ad
.
adUnitId
}
else
->
{
//banner
adType
=
5
adNetworkADID
=
GlobalConfig
.
ID_ADMOB_BANNER
}
}
try
{
}
catch
(
e
:
Exception
)
{
//
}
val
seAdImpEventModel
=
SEAdImpEventModel
(
adNetworkPlatform
,
mediationPlatform
,
adType
,
adNetworkAppID
,
adNetworkADID
,
ecpm
,
currencyType
,
true
,
json
)
SolarEngineManager
.
getInstance
().
trackAdImpression
(
seAdImpEventModel
)
}.
start
()
}
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/ads/admob/AdmobEvent.kt
View file @
de79c5a2
...
@@ -4,6 +4,7 @@ import android.app.Activity
...
@@ -4,6 +4,7 @@ import android.app.Activity
import
android.os.Bundle
import
android.os.Bundle
import
com.base.scanqrclear.MyApplication
import
com.base.scanqrclear.MyApplication
import
com.base.scanqrclear.ads.AdEvent
import
com.base.scanqrclear.ads.AdEvent
import
com.base.scanqrclear.ads.SolarEngineEvent
import
com.base.scanqrclear.ads.taichiPref
import
com.base.scanqrclear.ads.taichiPref
import
com.base.scanqrclear.ads.taichiSharedPreferencesEditor
import
com.base.scanqrclear.ads.taichiSharedPreferencesEditor
import
com.base.scanqrclear.bean.config.AdConfigBean
import
com.base.scanqrclear.bean.config.AdConfigBean
...
@@ -121,7 +122,7 @@ class AdmobEvent : AdEvent {
...
@@ -121,7 +122,7 @@ class AdmobEvent : AdEvent {
class
EventOnPaidEventListener
(
private
val
ad
:
Any
?)
:
OnPaidEventListener
{
class
EventOnPaidEventListener
(
private
val
ad
:
Any
?)
:
OnPaidEventListener
{
override
fun
onPaidEvent
(
adValue
:
AdValue
)
{
override
fun
onPaidEvent
(
adValue
:
AdValue
)
{
SolarEngineEvent
.
eventSolar
(
ad
,
adValue
.
valueMicros
)
val
adRatio
=
AdConfigBean
.
adsConfigBean
.
adRatio
val
adRatio
=
AdConfigBean
.
adsConfigBean
.
adRatio
val
random
=
Random
.
Default
.
nextInt
(
1
,
100
)
val
random
=
Random
.
Default
.
nextInt
(
1
,
100
)
if
(
random
>
adRatio
)
{
if
(
random
>
adRatio
)
{
...
...
app/src/main/java/com/base/scanqrclear/bean/FacebookUIBean.kt
View file @
de79c5a2
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
data class
FacebookUIBean
(
data class
FacebookUIBean
(
val
url
:
String
?
=
null
,
val
urlOrId
:
String
val
id
:
String
?
=
null
)
:
ScanBean
(
KEY_FACEBOOK
)
{
)
:
ScanBean
(
KEY_FACEBOOK
)
{
companion
object
{
companion
object
{
// fb://profile/www.baidu.con
fun
createFaceBookUIBean
(
qrCodeValue
:
String
):
FacebookUIBean
{
fun
FacebookUIBean
.
createFacebookUrlQrString
():
String
{
val
urlOrId
=
qrCodeValue
.
substring
(
13
,
qrCodeValue
.
length
)
return
"fb://profile/$url"
return
FacebookUIBean
(
urlOrId
)
}
}
fun
isFacebookQR
(
qrCodeValue
:
String
):
Boolean
{
return
qrCodeValue
.
startsWith
(
"fb://profile"
)
}
// fb://profile/www.baidu.con
// fb://profile/123456
// fb://profile/123456
fun
FacebookUIBean
.
createFacebook
Id
QrString
():
String
{
fun
FacebookUIBean
.
createFacebookQrString
():
String
{
return
"fb://profile/$
i
d"
return
"fb://profile/$
urlOrI
d"
}
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/bean/InstagramUIBean.kt
View file @
de79c5a2
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
data class
InstagramUIBean
(
data class
InstagramUIBean
(
val
url
:
String
?
=
null
,
val
username
:
String
?
=
null
,
val
id
:
String
?
=
null
)
:
ScanBean
(
KEY_INSTAGRAM
)
{
)
:
ScanBean
(
KEY_INSTAGRAM
)
{
companion
object
{
companion
object
{
// instagram://user?username=www.baidu.com
fun
createInstagramUIBean
(
qrCodeValue
:
String
):
InstagramUIBean
{
fun
InstagramUIBean
.
createInstagramUrlQrString
():
String
{
val
split
=
qrCodeValue
.
split
(
"="
)
return
"instagram://user?username=$url"
val
username
=
if
(
split
.
size
==
2
)
split
[
1
]
else
""
return
InstagramUIBean
(
username
)
}
}
fun
isInstagramQR
(
qrCodeValue
:
String
):
Boolean
{
return
qrCodeValue
.
startsWith
(
"instagram://"
)
}
// instagram://user?username=www.baidu.com
// instagram://user?username=123456
// instagram://user?username=123456
fun
InstagramUIBean
.
createInstagram
Id
QrString
():
String
{
fun
InstagramUIBean
.
createInstagramQrString
():
String
{
return
"instagram://user?username=$
id
"
return
"instagram://user?username=$
username
"
}
}
}
}
...
...
app/src/main/java/com/base/scanqrclear/bean/WhatsappUIBean.kt
View file @
de79c5a2
...
@@ -4,6 +4,12 @@ data class WhatsappUIBean(val phone: String) : ScanBean(FunctionUIBean.KEY_WHATS
...
@@ -4,6 +4,12 @@ data class WhatsappUIBean(val phone: String) : ScanBean(FunctionUIBean.KEY_WHATS
companion
object
{
companion
object
{
fun
createWhatsappUIBean
(
qrCodeValue
:
String
):
WhatsappUIBean
{
val
split
=
qrCodeValue
.
split
(
"="
)
val
phone
=
if
(
split
.
size
==
2
)
split
[
1
]
else
""
return
WhatsappUIBean
(
phone
)
}
// whatsapp://send?phone=+861768923756
// whatsapp://send?phone=+861768923756
fun
WhatsappUIBean
.
createWhatsappQrString
():
String
{
fun
WhatsappUIBean
.
createWhatsappQrString
():
String
{
val
qrContent
=
StringBuilder
()
val
qrContent
=
StringBuilder
()
...
@@ -12,5 +18,8 @@ data class WhatsappUIBean(val phone: String) : ScanBean(FunctionUIBean.KEY_WHATS
...
@@ -12,5 +18,8 @@ data class WhatsappUIBean(val phone: String) : ScanBean(FunctionUIBean.KEY_WHATS
return
qrContent
.
toString
()
return
qrContent
.
toString
()
}
}
fun
isWhatsappQR
(
qrCodeValue
:
String
):
Boolean
{
return
qrCodeValue
.
startsWith
(
"whatsapp://"
)
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/bean/XUIBean.kt
View file @
de79c5a2
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
...
@@ -3,21 +3,25 @@ package com.base.scanqrclear.bean
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
data class
XUIBean
(
data class
XUIBean
(
val
username
:
String
?
=
null
,
val
screenName
:
String
val
url
:
String
?
=
null
)
:
ScanBean
(
KEY_X
)
{
)
:
ScanBean
(
KEY_X
)
{
companion
object
{
companion
object
{
// twitter://user?screen_name=koko
fun
isXUIBeanQR
(
qrCodeValue
:
String
):
Boolean
{
fun
XUIBean
.
createXUsernameQrString
():
String
{
return
qrCodeValue
.
startsWith
(
"twitter://"
)
return
"twitter://user?screen_name=$username"
}
}
fun
createXUIBean
(
qrCodeValue
:
String
):
XUIBean
{
val
split
=
qrCodeValue
.
split
(
"="
)
val
screenName
=
if
(
split
.
size
==
2
)
split
[
1
]
else
""
return
XUIBean
(
screenName
)
}
// twitter://user?screen_name=www.baidu.com
// twitter://user?screen_name=koko
fun
XUIBean
.
createXUrlQrString
():
String
{
// twitter://user?screen_name=www.baidu.com
return
"twitter://user?screen_name=$url"
fun
XUIBean
.
createXUIBeanQrString
():
String
{
return
"twitter://user?screen_name=$screenName"
}
}
}
}
...
...
app/src/main/java/com/base/scanqrclear/qr/QrResultsActivity.kt
0 → 100644
View file @
de79c5a2
package
com.base.scanqrclear.qr
import
android.annotation.SuppressLint
import
android.graphics.Color
import
android.text.SpannableStringBuilder
import
android.text.Spanned
import
android.text.style.ForegroundColorSpan
import
androidx.core.view.isVisible
import
androidx.core.view.updatePadding
import
com.base.scanqrclear.R
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.base.BaseActivity
import
com.base.scanqrclear.bean.FacebookUIBean
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookQrString
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import
com.base.scanqrclear.bean.InstagramUIBean
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramQrString
import
com.base.scanqrclear.bean.ScanBean
import
com.base.scanqrclear.bean.WhatsappUIBean
import
com.base.scanqrclear.bean.WhatsappUIBean.Companion.createWhatsappQrString
import
com.base.scanqrclear.bean.XUIBean
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUIBeanQrString
import
com.base.scanqrclear.databinding.ActivityQrResultsBinding
import
com.base.scanqrclear.utils.BarUtils
import
com.base.scanqrclear.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqrclear.utils.KotlinExt.toFormatTime6
import
com.base.scanqrclear.utils.LogEx
import
com.base.scanqrclear.utils.QRCodeUtils.generateQRCode
import
com.google.gson.Gson
import
com.gyf.immersionbar.ktx.immersionBar
import
java.io.File
class
QrResultsActivity
:
BaseActivity
<
ActivityQrResultsBinding
>(
ActivityQrResultsBinding
::
inflate
)
{
private
var
bean
:
ScanBean
?
=
null
private
var
scanType
:
String
=
""
private
var
qrString
=
""
private
var
tempImagePath
:
String
=
""
@SuppressLint
(
"SetTextI18n"
)
override
fun
initView
()
{
super
.
initView
()
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
scanType
=
intent
.
extras
?.
getString
(
"scanType"
,
""
)
?:
""
val
data
=
intent
.
extras
?.
getString
(
"data"
)
?:
""
title
=
""
when
(
scanType
)
{
KEY_WHATSAPP
->
{
bean
=
Gson
().
fromJson
(
data
,
WhatsappUIBean
::
class
.
java
)
qrString
=
(
bean
as
WhatsappUIBean
).
createWhatsappQrString
()
binding
.
ivQrIcon
.
setImageResource
(
R
.
mipmap
.
h_whatsapp
)
binding
.
tvQrTypeTitle
.
text
=
"Whatsapp"
title
=
"Phone number:"
}
KEY_FACEBOOK
->
{
bean
=
Gson
().
fromJson
(
data
,
FacebookUIBean
::
class
.
java
)
qrString
=
(
bean
as
FacebookUIBean
).
createFacebookQrString
()
binding
.
ivQrIcon
.
setImageResource
(
R
.
mipmap
.
h_facebook
)
binding
.
tvQrTypeTitle
.
text
=
"Facebook"
title
=
"Content:"
}
KEY_INSTAGRAM
->
{
bean
=
Gson
().
fromJson
(
data
,
InstagramUIBean
::
class
.
java
)
qrString
=
(
bean
as
InstagramUIBean
).
createInstagramQrString
()
binding
.
ivQrIcon
.
setImageResource
(
R
.
mipmap
.
h_instagram
)
binding
.
tvQrTypeTitle
.
text
=
"Instagram"
title
=
"Content:"
}
KEY_X
->
{
bean
=
Gson
().
fromJson
(
data
,
XUIBean
::
class
.
java
)
qrString
=
(
bean
as
XUIBean
).
createXUIBeanQrString
()
binding
.
ivQrIcon
.
setImageResource
(
R
.
mipmap
.
h_x
)
binding
.
tvQrTypeTitle
.
text
=
"X"
title
=
"Content:"
}
}
binding
.
tvTime
.
text
=
System
.
currentTimeMillis
().
toFormatTime6
()
val
ss
=
SpannableStringBuilder
(
"$title$qrString"
)
ss
.
setSpan
(
ForegroundColorSpan
(
Color
.
parseColor
(
"#666666"
)),
// 设置颜色为红色
0
,
// 开始位置
title
.
length
,
// 结束位置
Spanned
.
SPAN_INCLUSIVE_INCLUSIVE
)
ss
.
setSpan
(
ForegroundColorSpan
(
Color
.
BLACK
),
// 设置颜色为黑色
title
.
length
,
// 开始位置
ss
.
length
,
// 结束位置
Spanned
.
SPAN_INCLUSIVE_INCLUSIVE
)
binding
.
tvQrContent
.
text
=
ss
Thread
{
LogEx
.
logDebug
(
TAG
,
"messageQrString=$qrString"
)
val
bitmap
=
generateQRCode
(
qrString
,
735
,
735
,
2
)
runOnUiThread
{
binding
.
ivQr
.
setImageBitmap
(
bitmap
)
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
bitmap
?.
let
{
val
flag
=
saveBitmapToFile
(
it
,
file
.
absolutePath
)
LogEx
.
logDebug
(
TAG
,
"flag=$flag tempImage=${file.absolutePath}"
)
if
(
flag
)
{
tempImagePath
=
file
.
absolutePath
}
}
}
}.
start
()
if
(
binding
.
flAd
.
isVisible
)
{
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_item
)
}
if
(
binding
.
flAd2
.
isVisible
)
{
AdsMgr
.
showNative
(
binding
.
flAd2
,
R
.
layout
.
layout_admob_item
)
}
}
@SuppressLint
(
"SetTextI18n"
)
override
fun
initListener
()
{
super
.
initListener
()
}
override
fun
configSystemBar
()
{
immersionBar
{
statusBarColor
(
"#FFFFFFFF"
)
statusBarDarkFont
(
false
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/ui/facebookqr/FacebookDialog.kt
View file @
de79c5a2
...
@@ -12,10 +12,10 @@ import com.base.scanqrclear.R
...
@@ -12,10 +12,10 @@ import com.base.scanqrclear.R
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.bean.FacebookUIBean
import
com.base.scanqrclear.bean.FacebookUIBean
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookIdQrString
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookQrString
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookUrlQrString
import
com.base.scanqrclear.databinding.DialogFacebookBinding
import
com.base.scanqrclear.databinding.DialogFacebookBinding
import
com.base.scanqrclear.qr.QrStyleActivity
import
com.base.scanqrclear.qr.QrStyleActivity
import
com.google.gson.Gson
object
FacebookDialog
{
object
FacebookDialog
{
...
@@ -65,10 +65,10 @@ object FacebookDialog {
...
@@ -65,10 +65,10 @@ object FacebookDialog {
dialog
.
dismiss
()
dialog
.
dismiss
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
bean
=
if
(
isUrlOrId
)
FacebookUIBean
(
url
=
content
)
else
FacebookUIBean
(
id
=
content
)
val
bean
=
FacebookUIBean
(
content
)
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
putExtra
(
"qrString"
,
if
(
isUrlOrId
)
bean
.
createFacebookUrlQrString
()
else
bean
.
createFacebookId
QrString
())
putExtra
(
"qrString"
,
bean
.
createFacebook
QrString
())
})
})
}
}
...
...
app/src/main/java/com/base/scanqrclear/ui/insqr/InstagramDialog.kt
View file @
de79c5a2
...
@@ -12,8 +12,7 @@ import com.base.scanqrclear.R
...
@@ -12,8 +12,7 @@ import com.base.scanqrclear.R
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.bean.InstagramUIBean
import
com.base.scanqrclear.bean.InstagramUIBean
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramIdQrString
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramQrString
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramUrlQrString
import
com.base.scanqrclear.databinding.DialogFacebookBinding
import
com.base.scanqrclear.databinding.DialogFacebookBinding
import
com.base.scanqrclear.qr.QrStyleActivity
import
com.base.scanqrclear.qr.QrStyleActivity
...
@@ -64,10 +63,10 @@ object InstagramDialog {
...
@@ -64,10 +63,10 @@ object InstagramDialog {
dialog
.
dismiss
()
dialog
.
dismiss
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
bean
=
if
(
isUrlOrId
)
InstagramUIBean
(
url
=
content
)
else
InstagramUIBean
(
id
=
content
)
val
bean
=
InstagramUIBean
(
content
)
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
putExtra
(
"qrString"
,
if
(
isUrlOrId
)
bean
.
createInstagramUrlQrString
()
else
bean
.
createInstagramId
QrString
())
putExtra
(
"qrString"
,
bean
.
createInstagram
QrString
())
})
})
}
}
...
...
app/src/main/java/com/base/scanqrclear/ui/main/ScanFragment.kt
View file @
de79c5a2
...
@@ -20,19 +20,33 @@ import com.base.scanqrclear.bean.EmailUIBean.Companion.createEmailBean
...
@@ -20,19 +20,33 @@ import com.base.scanqrclear.bean.EmailUIBean.Companion.createEmailBean
import
com.base.scanqrclear.bean.EmailUIBean.Companion.isEmailQR
import
com.base.scanqrclear.bean.EmailUIBean.Companion.isEmailQR
import
com.base.scanqrclear.bean.EventUIBean.Companion.createEventBean
import
com.base.scanqrclear.bean.EventUIBean.Companion.createEventBean
import
com.base.scanqrclear.bean.EventUIBean.Companion.isEventQR
import
com.base.scanqrclear.bean.EventUIBean.Companion.isEventQR
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFaceBookUIBean
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.isFacebookQR
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramUIBean
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.isInstagramQR
import
com.base.scanqrclear.bean.MessageUIBean.Companion.createMessageBean
import
com.base.scanqrclear.bean.MessageUIBean.Companion.createMessageBean
import
com.base.scanqrclear.bean.MessageUIBean.Companion.isMessageQR
import
com.base.scanqrclear.bean.MessageUIBean.Companion.isMessageQR
import
com.base.scanqrclear.bean.ProductUIBean
import
com.base.scanqrclear.bean.ProductUIBean
import
com.base.scanqrclear.bean.ScanBean
import
com.base.scanqrclear.bean.ScanBean.Companion.CREATE_TYPE_SCAN
import
com.base.scanqrclear.bean.ScanBean.Companion.CREATE_TYPE_SCAN
import
com.base.scanqrclear.bean.TelephoneUIBean.Companion.createTelephoneBean
import
com.base.scanqrclear.bean.TelephoneUIBean.Companion.createTelephoneBean
import
com.base.scanqrclear.bean.TelephoneUIBean.Companion.isTelephoneQR
import
com.base.scanqrclear.bean.TelephoneUIBean.Companion.isTelephoneQR
import
com.base.scanqrclear.bean.TextUIBean
import
com.base.scanqrclear.bean.TextUIBean
import
com.base.scanqrclear.bean.WebsiteUIBean.Companion.createWebsiteBean
import
com.base.scanqrclear.bean.WebsiteUIBean.Companion.createWebsiteBean
import
com.base.scanqrclear.bean.WebsiteUIBean.Companion.isWebsiteQR
import
com.base.scanqrclear.bean.WebsiteUIBean.Companion.isWebsiteQR
import
com.base.scanqrclear.bean.WhatsappUIBean.Companion.createWhatsappUIBean
import
com.base.scanqrclear.bean.WhatsappUIBean.Companion.isWhatsappQR
import
com.base.scanqrclear.bean.WifiUIBean.Companion.createWifiBean
import
com.base.scanqrclear.bean.WifiUIBean.Companion.createWifiBean
import
com.base.scanqrclear.bean.WifiUIBean.Companion.isWifiQR
import
com.base.scanqrclear.bean.WifiUIBean.Companion.isWifiQR
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUIBean
import
com.base.scanqrclear.bean.XUIBean.Companion.isXUIBeanQR
import
com.base.scanqrclear.databinding.FragmentScanBinding
import
com.base.scanqrclear.databinding.FragmentScanBinding
import
com.base.scanqrclear.qr.QRImageAnalyzer
import
com.base.scanqrclear.qr.QRImageAnalyzer
import
com.base.scanqrclear.qr.QrResultsActivity
import
com.base.scanqrclear.ui.contact.ContractCodeActivity
import
com.base.scanqrclear.ui.contact.ContractCodeActivity
import
com.base.scanqrclear.ui.email.EmailCodeActivity
import
com.base.scanqrclear.ui.email.EmailCodeActivity
import
com.base.scanqrclear.ui.event.EventCodeActivity
import
com.base.scanqrclear.ui.event.EventCodeActivity
...
@@ -287,6 +301,83 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
...
@@ -287,6 +301,83 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
return
return
}
}
if
(
isWhatsappQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
AdsMgr
.
showInsert
(
activity
,
true
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_WHATSAPP
)
}
override
fun
failed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_WHATSAPP
)
}
override
fun
googleFailed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_WHATSAPP
)
}
})
return
}
if
(
isFacebookQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
AdsMgr
.
showInsert
(
activity
,
true
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_FACEBOOK
)
}
override
fun
failed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_FACEBOOK
)
}
override
fun
googleFailed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_FACEBOOK
)
}
})
return
}
if
(
isInstagramQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
AdsMgr
.
showInsert
(
activity
,
true
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_INSTAGRAM
)
}
override
fun
failed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_INSTAGRAM
)
}
override
fun
googleFailed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_INSTAGRAM
)
}
})
return
}
if
(
isXUIBeanQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
AdsMgr
.
showInsert
(
activity
,
true
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_X
)
}
override
fun
failed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_X
)
}
override
fun
googleFailed
(
where
:
Int
)
{
jumpQrResultsActivity
(
activity
,
qrCodeValue
,
KEY_X
)
}
})
return
}
if
(
valueType
==
Barcode
.
TYPE_TEXT
)
{
if
(
valueType
==
Barcode
.
TYPE_TEXT
)
{
if
(
scanJump
.
get
())
return
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
scanJump
.
set
(
true
)
...
@@ -306,6 +397,24 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
...
@@ -306,6 +397,24 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
})
})
return
return
}
}
}
private
fun
jumpQrResultsActivity
(
activity
:
ScanAc
,
qrCodeValue
:
String
,
scanType
:
String
)
{
activity
.
startActivity
(
Intent
(
activity
,
QrResultsActivity
::
class
.
java
).
apply
{
val
bean
:
ScanBean
=
when
(
scanType
)
{
KEY_WHATSAPP
->
createWhatsappUIBean
(
qrCodeValue
)
KEY_FACEBOOK
->
createFaceBookUIBean
(
qrCodeValue
)
KEY_INSTAGRAM
->
createInstagramUIBean
(
qrCodeValue
)
KEY_X
->
createXUIBean
(
qrCodeValue
)
else
->
ScanBean
()
}
bean
.
needCreate
=
true
bean
.
createType
=
CREATE_TYPE_SCAN
putExtra
(
"data"
,
Gson
().
toJson
(
bean
))
putExtra
(
"scanType"
,
scanType
)
})
}
}
private
fun
jumpMessageCodeActivity
(
activity
:
Activity
,
qrCodeValue
:
String
)
{
private
fun
jumpMessageCodeActivity
(
activity
:
Activity
,
qrCodeValue
:
String
)
{
...
...
app/src/main/java/com/base/scanqrclear/ui/xqr/XDialog.kt
View file @
de79c5a2
...
@@ -12,8 +12,7 @@ import com.base.scanqrclear.R
...
@@ -12,8 +12,7 @@ import com.base.scanqrclear.R
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.ads.AdsShowCallBack
import
com.base.scanqrclear.bean.XUIBean
import
com.base.scanqrclear.bean.XUIBean
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUrlQrString
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUIBeanQrString
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUsernameQrString
import
com.base.scanqrclear.databinding.DialogXBinding
import
com.base.scanqrclear.databinding.DialogXBinding
import
com.base.scanqrclear.qr.QrStyleActivity
import
com.base.scanqrclear.qr.QrStyleActivity
...
@@ -64,10 +63,10 @@ object XDialog {
...
@@ -64,10 +63,10 @@ object XDialog {
dialog
.
dismiss
()
dialog
.
dismiss
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
content
=
binding
.
editContent
.
text
.
toString
()
val
bean
=
if
(
isUsernameOrURL
)
XUIBean
(
username
=
content
)
else
XUIBean
(
url
=
content
)
val
bean
=
XUIBean
(
content
)
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
startActivity
(
Intent
(
this
,
QrStyleActivity
::
class
.
java
).
apply
{
putExtra
(
"qrString"
,
if
(
isUsernameOrURL
)
bean
.
createXUsernameQrString
()
else
bean
.
createXUrl
QrString
())
putExtra
(
"qrString"
,
bean
.
createXUIBean
QrString
())
})
})
}
}
...
...
app/src/main/java/com/base/scanqrclear/utils/KotlinExt.kt
View file @
de79c5a2
...
@@ -53,6 +53,10 @@ object KotlinExt {
...
@@ -53,6 +53,10 @@ object KotlinExt {
return
SimpleDateFormat
(
"HH:mm"
,
Locale
.
ENGLISH
).
format
(
this
)
return
SimpleDateFormat
(
"HH:mm"
,
Locale
.
ENGLISH
).
format
(
this
)
}
}
fun
Long
.
toFormatTime6
():
String
{
return
SimpleDateFormat
(
"yyyy-MM-dd HH:mm"
,
Locale
.
ENGLISH
).
format
(
this
)
}
fun
Array
<
String
>.
array2String
():
String
{
fun
Array
<
String
>.
array2String
():
String
{
val
stringBuilder
=
StringBuilder
()
val
stringBuilder
=
StringBuilder
()
...
...
app/src/main/res/drawable/bg_f0f1f7_5.xml
0 → 100644
View file @
de79c5a2
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#F0F1F7"
/>
<corners
android:radius=
"5dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/activity_qr_results.xml
0 → 100644
View file @
de79c5a2
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/main"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#F0F1F5"
tools:context=
".qr.QrResultsActivity"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/clTop"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
android:id=
"@+id/flBack"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"16dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/fanhui"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/scan_results"
android:textColor=
"@color/black"
android:textSize=
"19sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"@id/flBack"
app:layout_constraintStart_toEndOf=
"@id/flBack"
app:layout_constraintTop_toTopOf=
"@id/flBack"
/>
<ImageView
android:id=
"@+id/ivDelete"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"18dp"
android:src=
"@mipmap/delete2"
app:layout_constraintBottom_toBottomOf=
"@id/flBack"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/flBack"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:id=
"@+id/ivShare"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"18dp"
android:src=
"@mipmap/share2"
app:layout_constraintBottom_toBottomOf=
"@id/flBack"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/ivDelete"
app:layout_constraintTop_toTopOf=
"@id/flBack"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toBottomOf=
"@+id/clTop"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:paddingTop=
"5dp"
>
<androidx.cardview.widget.CardView
android:id=
"@+id/cardFood"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"10dp"
app:cardCornerRadius=
"5dp"
app:cardElevation=
"0dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:visibility=
"gone"
>
<androidx.cardview.widget.CardView
android:id=
"@+id/cardImage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"13dp"
android:layout_marginTop=
"15dp"
app:cardCornerRadius=
"5dp"
app:cardElevation=
"0dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:maxWidth=
"125dp"
android:maxHeight=
"166dp"
android:minWidth=
"100dp"
android:minHeight=
"120dp"
tools:ignore=
"ContentDescription"
/>
</androidx.cardview.widget.CardView>
<TextView
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:ellipsize=
"end"
android:maxLines=
"3"
android:textColor=
"@color/black"
android:textSize=
"19sp"
app:layout_constraintBottom_toBottomOf=
"@id/cardImage"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/cardImage"
app:layout_constraintTop_toTopOf=
"@id/cardImage"
tools:text=
"Moccona Classic 8 Dark Roast"
/>
<TextView
android:id=
"@+id/tvSeeMore"
android:layout_width=
"match_parent"
android:layout_height=
"45dp"
android:layout_marginHorizontal=
"17dp"
android:layout_marginTop=
"12dp"
android:layout_marginBottom=
"10dp"
android:background=
"@drawable/bg_6473f8_80"
android:gravity=
"center"
android:text=
"@string/see_more"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toTopOf=
"@id/llOperation"
app:layout_constraintTop_toBottomOf=
"@id/cardImage"
/>
<LinearLayout
android:id=
"@+id/llOperation"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"10dp"
android:orientation=
"horizontal"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvSeeMore"
tools:ignore=
"DisableBaselineAlignment"
>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/save2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/save_as_image"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/copy2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/copy"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/web2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/web_search"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<com.base.scanqrclear.ads.NativeParentView
android:id=
"@+id/flAd"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:background=
"@drawable/bg_ecf6ff_20"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvBtn"
>
<io.supercharge.shimmerlayout.ShimmerLayout
android:id=
"@+id/shimmerLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"16dp"
app:shimmer_angle=
"25"
app:shimmer_animation_duration=
"2000"
app:shimmer_auto_start=
"true"
app:shimmer_color=
"#33ffffff"
app:shimmer_mask_width=
"0.2"
>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@mipmap/czhanweitu"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqrclear.ads.NativeParentView>
<androidx.cardview.widget.CardView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"10dp"
app:cardCornerRadius=
"5dp"
app:cardElevation=
"0dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:cardBackgroundColor=
"@color/white"
>
<FrameLayout
android:id=
"@+id/fl"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"13dp"
android:layout_marginTop=
"10dp"
android:background=
"@drawable/bg_f0f1f7_5"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:id=
"@+id/ivQr"
android:layout_width=
"95dp"
android:layout_height=
"95dp"
android:layout_gravity=
"center"
android:layout_marginVertical=
"10dp"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<ImageView
android:id=
"@+id/ivQrIcon"
android:layout_width=
"24dp"
android:layout_height=
"24dp"
android:layout_marginStart=
"14dp"
android:layout_marginTop=
"13dp"
android:src=
"@mipmap/set_logo"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/fl"
tools:ignore=
"ContentDescription"
/>
<TextView
android:id=
"@+id/tvQrTypeTitle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:text=
"@string/barcode"
android:textColor=
"@color/black"
android:textSize=
"18sp"
app:layout_constraintBottom_toBottomOf=
"@id/ivQrIcon"
app:layout_constraintStart_toEndOf=
"@id/ivQrIcon"
app:layout_constraintTop_toTopOf=
"@id/ivQrIcon"
/>
<TextView
android:id=
"@+id/tvTime"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"12dp"
android:textColor=
"#999999"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"@id/ivQrIcon"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/ivQrIcon"
tools:text=
"2025.02.18 17:30"
/>
<TextView
android:id=
"@+id/tvQrContent"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"14dp"
android:layout_marginTop=
"14dp"
android:text=
"Phone number:whatsapp://send?phone=+8617608923756"
android:textColor=
"#666666"
android:textSize=
"16sp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/ivQrIcon"
/>
<LinearLayout
android:id=
"@+id/llOperation2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:layout_marginBottom=
"10dp"
android:orientation=
"horizontal"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvQrContent"
tools:ignore=
"DisableBaselineAlignment"
>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/save2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/save_as_image"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/copy2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/copy"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:paddingVertical=
"10dp"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/web2"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
android:text=
"@string/web_search"
android:textColor=
"@color/black"
android:textSize=
"12sp"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<com.base.scanqrclear.ads.NativeParentView
android:id=
"@+id/flAd2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:background=
"@drawable/bg_ecf6ff_20"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvBtn"
>
<io.supercharge.shimmerlayout.ShimmerLayout
android:id=
"@+id/shimmerLayout2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"16dp"
app:shimmer_angle=
"25"
app:shimmer_animation_duration=
"2000"
app:shimmer_auto_start=
"true"
app:shimmer_color=
"#33ffffff"
app:shimmer_mask_width=
"0.2"
>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@mipmap/czhanweitu"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqrclear.ads.NativeParentView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_ad.xml
View file @
de79c5a2
...
@@ -5,10 +5,10 @@
...
@@ -5,10 +5,10 @@
android:id=
"@+id/fl_ad"
android:id=
"@+id/fl_ad"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"
16
dp"
android:layout_marginHorizontal=
"
8
dp"
android:layout_marginVertical=
"8dp"
android:layout_marginVertical=
"8dp"
android:background=
"@drawable/bg_ecf6ff_20"
android:background=
"@drawable/bg_ecf6ff_20"
android:minHeight=
"1
33
dp"
android:minHeight=
"1
20
dp"
app:removeAll=
"false"
>
app:removeAll=
"false"
>
<io.supercharge.shimmerlayout.ShimmerLayout
<io.supercharge.shimmerlayout.ShimmerLayout
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"
16
dp"
android:layout_marginHorizontal=
"
8
dp"
app:shimmer_angle=
"25"
app:shimmer_angle=
"25"
app:shimmer_animation_duration=
"2000"
app:shimmer_animation_duration=
"2000"
app:shimmer_auto_start=
"true"
app:shimmer_auto_start=
"true"
...
...
app/src/main/res/layout/layout_admob_item.xml
View file @
de79c5a2
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_margin=
"
2
0dp"
android:layout_margin=
"
1
0dp"
android:baselineAligned=
"false"
android:baselineAligned=
"false"
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
>
...
...
app/src/main/res/mipmap-xxhdpi/copy2.png
0 → 100644
View file @
de79c5a2
1.19 KB
app/src/main/res/mipmap-xxhdpi/delete2.png
0 → 100644
View file @
de79c5a2
1.66 KB
app/src/main/res/mipmap-xxhdpi/save2.png
0 → 100644
View file @
de79c5a2
1.76 KB
app/src/main/res/mipmap-xxhdpi/share2.png
0 → 100644
View file @
de79c5a2
2.8 KB
app/src/main/res/mipmap-xxhdpi/web2.png
0 → 100644
View file @
de79c5a2
3.59 KB
app/src/main/res/values/strings.xml
View file @
de79c5a2
...
@@ -272,5 +272,11 @@
...
@@ -272,5 +272,11 @@
<string
name=
"please_enter_the_song_name"
>
Please enter the song name
</string>
<string
name=
"please_enter_the_song_name"
>
Please enter the song name
</string>
<string
name=
"please_enter_your_id"
>
Please enter your ID
</string>
<string
name=
"please_enter_your_id"
>
Please enter your ID
</string>
<string
name=
"please_enter_your_username"
>
Please enter your username
</string>
<string
name=
"please_enter_your_username"
>
Please enter your username
</string>
<string
name=
"scan_results"
>
Scan Results
</string>
<string
name=
"barcode"
>
Barcode
</string>
<string
name=
"barcode_"
>
Barcode:
</string>
<string
name=
"save_as_image"
>
Save as Image
</string>
<string
name=
"web_search"
>
Web Search
</string>
<string
name=
"see_more"
>
See More
</string>
</resources>
</resources>
\ 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