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
b3d0d4a3
Commit
b3d0d4a3
authored
Jan 06, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
db4bd29d
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
354 additions
and
21 deletions
+354
-21
build.gradle.kts
app/build.gradle.kts
+1
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
GuideActivity.kt
app/src/main/java/com/base/scanqr/ui/guide/GuideActivity.kt
+92
-0
GuideFragment.kt
app/src/main/java/com/base/scanqr/ui/guide/GuideFragment.kt
+66
-0
LanguageActivity.kt
...main/java/com/base/scanqr/ui/language/LanguageActivity.kt
+21
-18
StartActivity.kt
app/src/main/java/com/base/scanqr/ui/start/StartActivity.kt
+1
-3
activity_guide.xml
app/src/main/res/layout/activity_guide.xml
+48
-0
fragment_guide.xml
app/src/main/res/layout/fragment_guide.xml
+111
-0
yindaoye1.png
app/src/main/res/mipmap-xxhdpi/yindaoye1.png
+0
-0
yindaoye2.png
app/src/main/res/mipmap-xxhdpi/yindaoye2.png
+0
-0
yindaoye3.png
app/src/main/res/mipmap-xxhdpi/yindaoye3.png
+0
-0
dimens.xml
app/src/main/res/values/dimens.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+10
-0
No files found.
app/build.gradle.kts
View file @
b3d0d4a3
...
...
@@ -101,6 +101,7 @@ dependencies {
implementation
(
"io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4"
)
implementation
(
"io.supercharge:shimmerlayout:2.1.0"
)
implementation
(
"com.github.Kunzisoft:Android-SwitchDateTimePicker:2.1"
)
implementation
(
"com.github.zhpanvip:viewpagerindicator:1.2.3"
)
//机器学习二维码扫描
...
...
app/src/main/AndroidManifest.xml
View file @
b3d0d4a3
...
...
@@ -35,6 +35,9 @@
android:supportsRtl=
"true"
android:theme=
"@style/Theme.ScanQR"
tools:targetApi=
"31"
>
<activity
android:name=
".ui.guide.GuideActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.location.LocationCodeActivity"
android:exported=
"false"
/>
...
...
app/src/main/java/com/base/scanqr/ui/guide/GuideActivity.kt
0 → 100644
View file @
b3d0d4a3
package
com.base.scanqr.ui.guide
import
android.graphics.Color
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.databinding.ActivityGuideBinding
import
com.gyf.immersionbar.ktx.immersionBar
import
com.zhpan.indicator.enums.IndicatorSlideMode.Companion.SMOOTH
import
com.zhpan.indicator.enums.IndicatorStyle.Companion.ROUND_RECT
class
GuideActivity
:
BaseActivity
<
ActivityGuideBinding
>(
ActivityGuideBinding
::
inflate
)
{
private
val
guide1
by
lazy
{
GuideFragment
(
0
)
}
private
val
guide2
by
lazy
{
GuideFragment
(
1
)
}
private
val
guide3
by
lazy
{
GuideFragment
(
2
)
}
private
val
fragments
by
lazy
{
mutableListOf
(
guide1
,
guide2
,
guide3
)
}
private
var
currentIndex
=
0
override
fun
initView
()
{
super
.
initView
()
initViewPager2
()
initIndicator
()
}
private
fun
initViewPager2
()
{
binding
.
viewPager2
.
run
{
adapter
=
object
:
FragmentStateAdapter
(
this
@GuideActivity
)
{
override
fun
getItemCount
():
Int
{
return
fragments
.
size
}
override
fun
createFragment
(
position
:
Int
):
Fragment
{
return
fragments
[
position
]
}
}
}
binding
.
viewPager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
override
fun
onPageSelected
(
position
:
Int
)
{
currentIndex
=
position
}
})
}
override
fun
initListener
()
{
super
.
initListener
()
}
override
fun
configSystemBar
()
{
immersionBar
{
statusBarColor
(
"#00FFFFFF"
)
statusBarDarkFont
(
true
)
}
}
fun
nextPage
()
{
if
(
currentIndex
<=
1
)
{
currentIndex
++
binding
.
viewPager2
.
setCurrentItem
(
currentIndex
,
true
)
}
}
private
fun
initIndicator
()
{
binding
.
indicator
.
setSliderColor
(
Color
.
parseColor
(
"#DEDEDE"
),
Color
.
parseColor
(
"#6473F8"
)
)
binding
.
indicator
.
setSliderHeight
(
resources
.
getDimension
(
R
.
dimen
.
dp_5
))
binding
.
indicator
.
setSliderWidth
(
resources
.
getDimension
(
R
.
dimen
.
dp_5
),
resources
.
getDimension
(
R
.
dimen
.
dp_15
)
)
binding
.
indicator
.
setSlideMode
(
SMOOTH
)
binding
.
indicator
.
setIndicatorStyle
(
ROUND_RECT
)
binding
.
indicator
.
setupWithViewPager
(
binding
.
viewPager2
)
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/guide/GuideFragment.kt
0 → 100644
View file @
b3d0d4a3
package
com.base.scanqr.ui.guide
import
android.content.Intent
import
com.base.scanqr.R
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.databinding.FragmentGuideBinding
import
com.base.scanqr.ui.main.MainActivity
class
GuideFragment
()
:
BaseFragment
<
FragmentGuideBinding
>(
FragmentGuideBinding
::
inflate
)
{
private
var
pageIndex
=
0
constructor
(
pageIndex
:
Int
)
:
this
()
{
this
.
pageIndex
=
pageIndex
}
override
fun
initView
()
{
super
.
initView
()
when
(
pageIndex
)
{
0
->
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
yindaoye1
)
binding
.
tvTitle
.
text
=
this
.
resources
.
getString
(
R
.
string
.
scan_barcode_qr_code
)
binding
.
tvDesc
.
text
=
this
.
resources
.
getString
(
R
.
string
.
guide_1
)
}
1
->
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
yindaoye2
)
binding
.
tvTitle
.
text
=
getString
(
R
.
string
.
quickly_scan_products
)
binding
.
tvDesc
.
text
=
getString
(
R
.
string
.
guide_2
)
}
2
->
{
binding
.
iv
.
setImageResource
(
R
.
mipmap
.
yindaoye3
)
binding
.
tvTitle
.
text
=
getString
(
R
.
string
.
create_share_qr_code
)
binding
.
tvDesc
.
text
=
getString
(
R
.
string
.
guide_3
)
binding
.
tvBtn
.
text
=
getString
(
R
.
string
.
complete
)
}
}
}
override
fun
onResumeOneShoot
()
{
super
.
onResumeOneShoot
()
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_app_exit
)
}
override
fun
initListener
()
{
super
.
initListener
()
binding
.
tvBtn
.
setOnClickListener
{
if
(
pageIndex
==
2
)
{
completeAction
()
}
else
{
val
activity
=
requireActivity
()
as
GuideActivity
?
activity
?.
nextPage
()
}
}
}
private
fun
completeAction
()
{
val
activity
=
requireActivity
()
as
GuideActivity
?
activity
?.
startActivity
(
Intent
(
activity
,
MainActivity
::
class
.
java
))
activity
?.
finish
()
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/language/LanguageActivity.kt
View file @
b3d0d4a3
...
...
@@ -11,7 +11,7 @@ import com.base.scanqr.bean.ConstObject.appLanguageCountrySp
import
com.base.scanqr.bean.ConstObject.appLanguageSp
import
com.base.scanqr.bean.LanguageBean
import
com.base.scanqr.databinding.ActivityLanguageBinding
import
com.base.scanqr.ui.
main.Main
Activity
import
com.base.scanqr.ui.
guide.Guide
Activity
import
com.base.scanqr.utils.BarUtils
import
com.base.scanqr.utils.LogEx
import
com.gyf.immersionbar.ktx.immersionBar
...
...
@@ -52,7 +52,8 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB
super
.
initListener
()
onBackPressedDispatcher
.
addCallback
{
if
(
isGuide
)
{
finishToMainTop
()
startActivity
(
Intent
(
this
@LanguageActivity
,
GuideActivity
::
class
.
java
))
finish
()
}
else
{
finish
()
}
...
...
@@ -68,22 +69,24 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB
appLanguageCountrySp
=
selectLanguageBean
.
country
if
(
isGuide
)
{
AdsMgr
.
showInsert
(
this
,
false
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
startActivity
(
Intent
(
this
@LanguageActivity
,
MainActivity
::
class
.
java
))
finish
()
}
override
fun
failed
(
where
:
Int
)
{
startActivity
(
Intent
(
this
@LanguageActivity
,
MainActivity
::
class
.
java
))
finish
()
}
override
fun
googleFailed
(
where
:
Int
)
{
startActivity
(
Intent
(
this
@LanguageActivity
,
MainActivity
::
class
.
java
))
finish
()
}
})
// AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
// override fun close(where: Int) {
// startActivity(Intent(this@LanguageActivity, GuideActivity::class.java))
// finish()
// }
//
// override fun failed(where: Int) {
// startActivity(Intent(this@LanguageActivity, GuideActivity::class.java))
// finish()
// }
//
// override fun googleFailed(where: Int) {
// startActivity(Intent(this@LanguageActivity, GuideActivity::class.java))
// finish()
// }
// })
startActivity
(
Intent
(
this
@LanguageActivity
,
GuideActivity
::
class
.
java
))
finish
()
}
else
{
finish
()
}
...
...
app/src/main/java/com/base/scanqr/ui/start/StartActivity.kt
View file @
b3d0d4a3
...
...
@@ -19,12 +19,10 @@ import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WIFI
import
com.base.scanqr.databinding.ActivityStartBinding
import
com.base.scanqr.fcm.notification.NotificationHoverUtils
import
com.base.scanqr.service.StayJobService.Companion.startJob
import
com.base.scanqr.ui.contact.ContractActivity
import
com.base.scanqr.ui.email.EmailActivity
import
com.base.scanqr.ui.
event.Event
Activity
import
com.base.scanqr.ui.
guide.Guide
Activity
import
com.base.scanqr.ui.language.LanguageActivity
import
com.base.scanqr.ui.main.MainActivity
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.wifi.WifiActivity
...
...
app/src/main/res/layout/activity_guide.xml
0 → 100644
View file @
b3d0d4a3
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:banner=
"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:orientation=
"vertical"
tools:context=
".ui.guide.GuideActivity"
>
<androidx.viewpager2.widget.ViewPager2
android:id=
"@+id/viewPager2"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<View
android:layout_width=
"match_parent"
android:layout_height=
"450dp"
tools:ignore=
"UselessLeaf"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginTop=
"8dp"
android:orientation=
"horizontal"
>
<com.zhpan.indicator.IndicatorView
android:id=
"@+id/indicator"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginHorizontal=
"16dp"
/>
</FrameLayout>
</LinearLayout>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_guide.xml
0 → 100644
View file @
b3d0d4a3
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".ui.guide.GuideFragment"
>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"450dp"
tools:ignore=
"UselessParent"
>
<ImageView
android:id=
"@+id/iv"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:scaleType=
"centerCrop"
tools:ignore=
"ContentDescription"
tools:src=
"@mipmap/yindaoye1"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal|bottom"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tvTitle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginBottom=
"8dp"
android:text=
"@string/app_name"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tvDesc"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginHorizontal=
"20dp"
android:layout_marginBottom=
"5dp"
android:gravity=
"center"
android:text=
"@string/guide_1"
android:textColor=
"#666666"
android:textSize=
"15sp"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginTop=
"8dp"
android:orientation=
"horizontal"
tools:background=
"#40FFA5A2"
>
<TextView
android:id=
"@+id/tvBtn"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|end"
android:layout_marginEnd=
"20dp"
android:background=
"@drawable/bg_6473f8_90"
android:paddingHorizontal=
"15dp"
android:paddingVertical=
"8dp"
android:text=
"@string/continue_"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
</FrameLayout>
<com.base.scanqr.ads.NativeParentView
android:id=
"@+id/fl_ad"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:background=
"@drawable/bg_ecf6ff_10"
android:minHeight=
"258dp"
android:paddingTop=
"20dp"
android:paddingBottom=
"20dp"
>
<io.supercharge.shimmerlayout.ShimmerLayout
android:id=
"@+id/shimmerLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
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=
"wrap_content"
android:background=
"@mipmap/zhanweitu"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqr.ads.NativeParentView>
</LinearLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/yindaoye1.png
0 → 100644
View file @
b3d0d4a3
This diff is collapsed.
Click to expand it.
app/src/main/res/mipmap-xxhdpi/yindaoye2.png
0 → 100644
View file @
b3d0d4a3
This diff is collapsed.
Click to expand it.
app/src/main/res/mipmap-xxhdpi/yindaoye3.png
0 → 100644
View file @
b3d0d4a3
758 KB
app/src/main/res/values/dimens.xml
View file @
b3d0d4a3
...
...
@@ -29,4 +29,5 @@
<dimen
name=
"dp_112"
>
112dp
</dimen>
<dimen
name=
"dp_114"
>
114dp
</dimen>
<dimen
name=
"fab_margin"
>
16dp
</dimen>
<dimen
name=
"dp_5"
>
5dp
</dimen>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
b3d0d4a3
...
...
@@ -107,4 +107,14 @@
<string
name=
"enter_telephone_number"
>
Enter telephone number
</string>
<string
name=
"enter_email"
>
Enter email
</string>
<string
name=
"quickly_scan_products"
>
Quickly scan products
</string>
<string
name=
"create_share_qr_code"
>
Create
&
Share QR Code
</string>
<string
name=
"scan_barcode_qr_code"
tools:ignore=
"MissingTranslation"
>
Scan Barcode
&
QR Code
</string>
<string
name=
"guide_1"
>
Scan barcodes and QR codes into images for storage, support sharing
</string>
<string
name=
"guide_2"
>
Scan products to obtain prices and other information
</string>
<string
name=
"guide_3"
>
Edit the various information you want to share into QR codes
</string>
<string
name=
"continue_"
>
Continue
</string>
<string
name=
"complete"
>
Complete
</string>
</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