本 demo 为 扫一扫 单组件 demo,clone 后直接运行工程即可。
支持 inside(不再维护) 和 aar 两种接入方式,支持基线:
- 10.1.60,支持 inside 方式(10.1.60 分支)
- 10.1.68,支持 inside 和 aar 方式(10.1.68 分支)
- 10.2.3,支持 aar 方式(master 分支)
android扫一扫
本 demo 为 扫一扫 单组件 demo,clone 后直接运行工程即可。
支持 inside(不再维护) 和 aar 两种接入方式,支持基线:
编译时报错 duplicate entry:res/layout/activity_scan.xml found! 是怎么回事
环境工具
Android Studio 3.6.3
Build #AI-192.7142.36.36.6392135, built on April 14, 2020
Runtime version: 1.8.0_212-release-1586-b04 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1237M
Cores: 12
Registry: ide.new.welcome.screen.force=true
Non-Bundled Plugins: org.jetbrains.kotlin, com.alipay.android.plugin.mpaas.boost
报错
Cause: duplicate entry:res/drawable-hdpi-v4/scan_ray.png found!
java.lang.IllegalMonitorStateException: need invoke bind before use
at com.alipay.mobile.common.logging.api.LoggerFactory.a(LoggerFactory.java:285)
at com.alipay.mobile.common.logging.api.LoggerFactory.access$800(LoggerFactory.java:50)
at com.alipay.mobile.common.logging.api.LoggerFactory$NullTraceLogger.warn(LoggerFactory.java:493)
at com.alipay.mobile.bqcscanservice.Logger$1.run(Logger.java:155)
at android.os.Handler.handleCallback(Handler.java:819)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:210)
at android.os.HandlerThread.run(HandlerThread.java:61)
2021-03-23 11:22:52.211 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setup()
2021-03-23 11:22:52.212 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setDisplay():surfaceCallback is null:false
2021-03-23 11:22:52.212 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] startPreviewing,cameraFacingType= 0
2021-03-23 11:22:52.212 26282-14611/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] regScanEngine()
2021-03-23 11:22:52.213 26282-14611/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanType(MA, null, barCode|qrCode|dmCode|pdf417Code)
2021-03-23 11:22:52.213 26282-14611/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanEnable(enable=true, cameraManager=com.alipay.camera.CameraManager@9a5b30d, scanController=com.alipay.mobile.bqcscanservice.impl.BQCScanController@12962c2
2021-03-23 11:22:52.233 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] resetCurCameraParameters
2021-03-23 11:22:52.234 26282-26282/apppackage D/[Scan]MPaasScanServiceImpl: [main] BQCSurfaceCallback:onSurfaceTextureAvailable(): surface: android.graphics.SurfaceTexture@c90c21f, width: 1080, height: 2408
2021-03-23 11:22:52.236 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setPreviewCallback()
2021-03-23 11:22:52.236 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] requestPreviewFrameWithBuffer
2021-03-23 11:22:52.236 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setPreviewParameters: surfaceTexture is : android.graphics.SurfaceTexture@c90c21f
2021-03-23 11:22:52.237 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] onSurfaceAvailable:surfaceTexture:false, is surfaceAvailable android.graphics.SurfaceTexture@c90c21f, surfaceAlreadySet:false
2021-03-23 11:22:52.237 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] Start to set preview surface
2021-03-23 11:22:52.419 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] onSurfaceAvailable:surfaceTexture:false, is surfaceAvailable android.graphics.SurfaceTexture@c90c21f, surfaceAlreadySet:true
2021-03-23 11:22:53.199 26282-13729/apppackage D/[Scan]MPaasScanServiceImpl: [Thread-72] The Postcode is 0, the bqcCode is 1616469752989, the statisticCamera is 0
2021-03-23 11:22:53.451 26282-14611/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanEnable(enable=false, cameraManager=com.alipay.camera.CameraManager@9a5b30d, scanController=com.alipay.mobile.bqcscanservice.impl.BQCScanController@12962c2
2021-03-23 11:22:53.485 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] stopPreview(), surfaceTexture = null; textureView=null
2021-03-23 11:22:53.749 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] The Camera FrameRate: mFrameNum = 27, duration = 1226, frame(ms)=45
2021-03-23 11:22:53.749 26282-14610/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] cleanUp: surfaceTexture = null, textureView = null
2021-03-23 11:22:53.784 26282-26282/apppackage D/[Scan]MPaasScanServiceImpl: [main] onSurfaceTextureDestroyed: android.graphics.SurfaceTexture@c90c21f
2021-03-23 11:22:55.568 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setup()
2021-03-23 11:22:55.569 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setDisplay():surfaceCallback is null:false
2021-03-23 11:22:55.569 26282-14782/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] regScanEngine()
2021-03-23 11:22:55.569 26282-14782/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanType(MA, null, barCode|qrCode|dmCode|pdf417Code)
2021-03-23 11:22:55.569 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] startPreviewing,cameraFacingType= 0
2021-03-23 11:22:55.569 26282-14782/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanEnable(enable=true, cameraManager=com.alipay.camera.CameraManager@dae5554, scanController=com.alipay.mobile.bqcscanservice.impl.BQCScanController@4321cfd
2021-03-23 11:22:55.585 26282-26282/apppackage D/[Scan]MPaasScanServiceImpl: [main] BQCSurfaceCallback:onSurfaceTextureAvailable(): surface: android.graphics.SurfaceTexture@2c7ef25, width: 1080, height: 2408
2021-03-23 11:22:55.588 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] resetCurCameraParameters
2021-03-23 11:22:55.592 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setPreviewCallback()
2021-03-23 11:22:55.592 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] requestPreviewFrameWithBuffer
2021-03-23 11:22:55.592 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setPreviewParameters: surfaceTexture is : android.graphics.SurfaceTexture@2c7ef25
2021-03-23 11:22:55.592 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] onSurfaceAvailable:surfaceTexture:false, is surfaceAvailable android.graphics.SurfaceTexture@2c7ef25, surfaceAlreadySet:false
2021-03-23 11:22:55.592 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] Start to set preview surface
2021-03-23 11:22:55.782 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] onSurfaceAvailable:surfaceTexture:false, is surfaceAvailable android.graphics.SurfaceTexture@2c7ef25, surfaceAlreadySet:true
2021-03-23 11:22:57.372 26282-14782/apppackage D/[Scan]MPaasScanServiceImpl: [Scan-Recognized] setScanEnable(enable=false, cameraManager=com.alipay.camera.CameraManager@dae5554, scanController=com.alipay.mobile.bqcscanservice.impl.BQCScanController@4321cfd
2021-03-23 11:22:57.404 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] stopPreview(), surfaceTexture = null; textureView=null
2021-03-23 11:22:57.693 26282-26282/apppackage D/[Scan]MPaasScanServiceImpl: [main] onSurfaceTextureDestroyed: android.graphics.SurfaceTexture@2c7ef25
2021-03-23 11:22:57.738 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] The Camera FrameRate: mFrameNum = 44, duration = 1841, frame(ms)=41
2021-03-23 11:22:57.738 26282-14781/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] cleanUp: surfaceTexture = null, textureView = null
2021-03-23 11:22:59.373 26282-14959/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] setup()
2021-03-23 11:22:59.373 26282-14959/apppackage D/[Scan]MPaasScanServiceImpl: [Camera-Handler] startPreviewing,cameraFacingType= 0
2021-03-23 11:22:59.373 26282-14959/apppackage E/[Scan]MPaasScanServiceImpl: [Camera-Handler] startPreview(): cameraManager is null
最后会出现 因为 context 为空而导致的 cameraManager is null
不太理解为什么,setContext要在异步进行
com.alipay.android.phone.scancode.export.camera.ScanHandler#setContext
测试后发现的结果,能做到和标准UI一致吗
扫码界面设置为横屏后预览严重拉伸
Could not resolve all artifacts for configuration ':app:personalDebugCompileClasspath'.
Could not find scan-10.1.68.29.jar (com.mpaas.android:scan:10.1.68.29).
Searched in the following locations:
http://mvn.cloud.alipay.com/nexus/content/repositories/releases/com/mpaas/android/scan/10.1.68.29/scan-10.1.68.29.jar
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.