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
093cb506
Commit
093cb506
authored
Dec 25, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
c697848a
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
88 additions
and
9 deletions
+88
-9
EmailCodeActivity.kt
...c/main/java/com/base/scanqr/ui/email/EmailCodeActivity.kt
+1
-1
ScanFragment.kt
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
+27
-0
TextCodeActivity.kt
...src/main/java/com/base/scanqr/ui/text/TextCodeActivity.kt
+1
-3
WifiCodeActivity.kt
...src/main/java/com/base/scanqr/ui/wifi/WifiCodeActivity.kt
+6
-3
QRCodeUtils.kt
app/src/main/java/com/base/scanqr/utils/QRCodeUtils.kt
+53
-2
No files found.
app/src/main/java/com/base/scanqr/ui/email/EmailCodeActivity.kt
View file @
093cb506
...
...
@@ -14,7 +14,7 @@ import com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareImage
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCode
Generator
.generateQRCode
import
com.base.scanqr.utils.QRCode
Utils
.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.ToastUtils.toast
import
com.google.gson.Gson
...
...
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
View file @
093cb506
package
com.base.scanqr.ui.main
import
android.Manifest
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.hardware.camera2.CameraMetadata.FLASH_MODE_OFF
import
android.view.View
...
...
@@ -10,9 +11,12 @@ import com.base.scanqr.R
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.databinding.FragmentScanBinding
import
com.base.scanqr.qr.QRImageAnalyzer
import
com.base.scanqr.ui.wifi.WifiCodeActivity
import
com.base.scanqr.utils.IntentUtils.intentSafPickImage
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.PermissionUtils.checkCameraPermission
import
com.base.scanqr.utils.QRCodeUtils
import
com.google.gson.Gson
import
com.gyf.immersionbar.ktx.immersionBar
import
java.util.concurrent.atomic.AtomicBoolean
...
...
@@ -45,6 +49,9 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
binding
.
flFlash
.
visibility
=
View
.
GONE
}
val
qrImageAnalyzer
=
QRImageAnalyzer
()
qrImageAnalyzer
.
parseAction
=
{
qrCodeValue
,
valueType
->
handleScan
(
qrCodeValue
,
valueType
)
}
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?:
return
activity
.
cameraUtils
?.
startBind
(
binding
.
previewView
,
qrImageAnalyzer
)
...
...
@@ -80,6 +87,26 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
cameraInit
.
set
(
true
)
}
private
var
scanJump
=
AtomicBoolean
(
false
)
/**
* 处理扫描结果
*/
private
fun
handleScan
(
qrCodeValue
:
String
,
valueType
:
Int
)
{
LogEx
.
logDebug
(
TAG
,
"qrCodeValue=$qrCodeValue valueType=$valueType"
)
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?:
return
if
(
QRCodeUtils
.
isWifiQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
activity
.
startActivity
(
Intent
(
activity
,
WifiCodeActivity
::
class
.
java
).
apply
{
val
bean
=
QRCodeUtils
.
createWifiBean
(
qrCodeValue
)
putExtra
(
"data"
,
Gson
().
toJson
(
bean
))
})
return
}
}
override
fun
onPause
()
{
super
.
onPause
()
val
activity
=
requireActivity
()
as
MainActivity
?
...
...
app/src/main/java/com/base/scanqr/ui/text/TextCodeActivity.kt
View file @
093cb506
...
...
@@ -5,7 +5,6 @@ import androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.TextUIBean
...
...
@@ -16,11 +15,10 @@ import com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareText
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCode
Generator
.generateQRCode
import
com.base.scanqr.utils.QRCode
Utils
.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.ToastUtils.toast
import
java.io.File
import
java.io.ObjectInput
class
TextCodeActivity
:
BaseActivity
<
ActivityTextCodeBinding
>(
ActivityTextCodeBinding
::
inflate
)
{
...
...
app/src/main/java/com/base/scanqr/ui/wifi/WifiCodeActivity.kt
View file @
093cb506
...
...
@@ -14,7 +14,7 @@ import com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareImage
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCode
Generator
.generateQRCode
import
com.base.scanqr.utils.QRCode
Utils
.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.ToastUtils.toast
import
com.google.gson.Gson
...
...
@@ -32,10 +32,13 @@ class WifiCodeActivity : BaseActivity<ActivityWifiCodeBinding>(ActivityWifiCodeB
val
data
=
intent
.
extras
?.
getString
(
"data"
)
LogEx
.
logDebug
(
TAG
,
"data=$data"
)
data
?.
let
{
wifiBean
=
Gson
().
fromJson
(
data
,
WifiUIBean
::
class
.
java
)
}
val
content
=
StringBuilder
()
content
.
append
(
"WIF:T:"
)
content
.
append
(
"WIFI:"
)
content
.
append
(
"T:"
)
if
(
wifiBean
.
securityId
==
0
)
{
content
.
append
(
"WPA/WPA2"
).
append
(
";"
)
binding
.
tvSecurity
.
text
=
"WPA/WPA2"
...
...
app/src/main/java/com/base/scanqr/utils/QRCode
Generator
.kt
→
app/src/main/java/com/base/scanqr/utils/QRCode
Utils
.kt
View file @
093cb506
...
...
@@ -2,14 +2,14 @@ package com.base.scanqr.utils
import
android.graphics.Bitmap
import
android.graphics.Color
import
com.base.scanqr.bean.WifiUIBean
import
com.google.zxing.BarcodeFormat
import
com.google.zxing.EncodeHintType
import
com.google.zxing.WriterException
import
com.google.zxing.common.BitMatrix
import
com.google.zxing.qrcode.QRCodeWriter
import
java.util.EnumMap
object
QRCode
Generator
{
object
QRCode
Utils
{
// fun generateQRCode(content: String, width: Int, height: Int): Bitmap? {
// val writer = QRCodeWriter()
...
...
@@ -60,4 +60,55 @@ object QRCodeGenerator {
}
return
null
}
fun
isWifiQR
(
qrCodeValue
:
String
):
Boolean
{
val
flag
=
qrCodeValue
.
startsWith
(
"WIFI:"
)
if
(
flag
)
{
return
true
}
return
false
}
fun
createWifiBean
(
qrCodeValue
:
String
):
WifiUIBean
{
val
splitList
=
qrCodeValue
.
split
(
";"
)
val
wifiUIBean
=
WifiUIBean
()
wifiUIBean
.
isCreateOrScan
=
false
wifiUIBean
.
createTime
=
System
.
currentTimeMillis
()
val
ssidKV
=
splitList
.
find
{
it
.
startsWith
(
"S:"
)
}
?:
""
wifiUIBean
.
ssid
=
getPairKeyValue
(
ssidKV
).
second
val
passWordKV
=
splitList
.
find
{
it
.
startsWith
(
"P:"
)
}
?:
""
wifiUIBean
.
password
=
getPairKeyValue
(
passWordKV
).
second
val
hiddenKV
=
splitList
.
find
{
it
.
startsWith
(
"H:"
)
}
?:
""
wifiUIBean
.
hidden
=
getPairKeyValue
(
hiddenKV
).
second
.
toBoolean
()
val
securityKy
=
splitList
.
find
{
it
.
startsWith
(
"T"
)
}
if
(
securityKy
.
equals
(
"WPA/WPA2"
))
{
wifiUIBean
.
securityId
=
0
}
if
(
securityKy
.
equals
(
"WEP"
))
{
wifiUIBean
.
securityId
=
1
}
if
(
securityKy
.
equals
(
""
))
{
wifiUIBean
.
securityId
=
0
}
return
wifiUIBean
}
fun
getPairKeyValue
(
keyValue
:
String
):
Pair
<
String
,
String
>
{
val
split
=
keyValue
.
split
(
":"
)
var
key
=
""
kotlin
.
runCatching
{
key
=
split
[
0
]
}
var
value
:
String
=
""
kotlin
.
runCatching
{
value
=
split
[
1
]
}
return
Pair
(
key
,
value
)
}
}
\ 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