首页下载资源移动开发android Camera2 + zxing进行二维码解码

ZIPandroid Camera2 + zxing进行二维码解码

a3073269844.55MB需要积分:1

资源文件列表:

Camera2Test.zip 大约有160个文件
  1. CameraTest/
  2. CameraTest/.gitignore 222B
  3. CameraTest/.gradle/
  4. CameraTest/.gradle/5.4.1/
  5. CameraTest/.gradle/5.4.1/executionHistory/
  6. CameraTest/.gradle/5.4.1/executionHistory/executionHistory.bin 2.76MB
  7. CameraTest/.gradle/5.4.1/executionHistory/executionHistory.lock 17B
  8. CameraTest/.gradle/5.4.1/fileChanges/
  9. CameraTest/.gradle/5.4.1/fileChanges/last-build.bin 1B
  10. CameraTest/.gradle/5.4.1/fileContent/
  11. CameraTest/.gradle/5.4.1/fileContent/fileContent.lock 17B
  12. CameraTest/.gradle/5.4.1/fileHashes/
  13. CameraTest/.gradle/5.4.1/fileHashes/fileHashes.bin 255.29KB
  14. CameraTest/.gradle/5.4.1/fileHashes/fileHashes.lock 17B
  15. CameraTest/.gradle/5.4.1/fileHashes/resourceHashesCache.bin 18.99KB
  16. CameraTest/.gradle/5.4.1/gc.properties
  17. CameraTest/.gradle/5.4.1/javaCompile/
  18. CameraTest/.gradle/5.4.1/javaCompile/classAnalysis.bin 1014.07KB
  19. CameraTest/.gradle/5.4.1/javaCompile/javaCompile.lock 17B
  20. CameraTest/.gradle/5.4.1/javaCompile/taskHistory.bin 32.49KB
  21. CameraTest/.gradle/5.4.1/vcsMetadata-1/
  22. CameraTest/.gradle/buildOutputCleanup/
  23. CameraTest/.gradle/buildOutputCleanup/buildOutputCleanup.lock 17B
  24. CameraTest/.gradle/buildOutputCleanup/cache.properties 53B
  25. CameraTest/.gradle/buildOutputCleanup/outputFiles.bin 97.29KB
  26. CameraTest/.gradle/vcs-1/
  27. CameraTest/.gradle/vcs-1/gc.properties
  28. CameraTest/.idea/
  29. CameraTest/.idea/.gitignore 50B
  30. CameraTest/.idea/caches/
  31. CameraTest/.idea/caches/build_file_checksums.ser 536B
  32. CameraTest/.idea/caches/gradle_models.ser 130.23KB
  33. CameraTest/.idea/codeStyles/
  34. CameraTest/.idea/codeStyles/Project.xml 3.34KB
  35. CameraTest/.idea/compiler.xml 174B
  36. CameraTest/.idea/gradle.xml 886B
  37. CameraTest/.idea/jarRepositories.xml 1.66KB
  38. CameraTest/.idea/libraries/
  39. CameraTest/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml 761B
  40. CameraTest/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml 996B
  41. CameraTest/.idea/libraries/Gradle__androidx_arch_core_core_common_2_0_0.xml 565B
  42. CameraTest/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 830B
  43. CameraTest/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml 892B
  44. CameraTest/.idea/libraries/Gradle__androidx_collection_collection_1_0_0.xml 563B
  45. CameraTest/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_1_1_3_aar.xml 652B
  46. CameraTest/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_1_1_3.xml 416B
  47. CameraTest/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml 1.04KB
  48. CameraTest/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml 951B
  49. CameraTest/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 844B
  50. CameraTest/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml 820B
  51. CameraTest/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml 836B
  52. CameraTest/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1023B
  53. CameraTest/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml 987B
  54. CameraTest/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 836B
  55. CameraTest/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml 884B
  56. CameraTest/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml 902B
  57. CameraTest/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_0_0.xml 590B
  58. CameraTest/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 866B
  59. CameraTest/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 896B
  60. CameraTest/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml 860B
  61. CameraTest/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml 872B
  62. CameraTest/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml 788B
  63. CameraTest/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml 907B
  64. CameraTest/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml 960B
  65. CameraTest/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml 876B
  66. CameraTest/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml 1.05KB
  67. CameraTest/.idea/libraries/Gradle__androidx_test_core_1_1_0_aar.xml 952B
  68. CameraTest/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_1_1_aar.xml 1.03KB
  69. CameraTest/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_1_1_aar.xml 1.11KB
  70. CameraTest/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_0_aar.xml 972B
  71. CameraTest/.idea/libraries/Gradle__androidx_test_monitor_1_1_1_aar.xml 975B
  72. CameraTest/.idea/libraries/Gradle__androidx_test_runner_1_1_1_aar.xml 967B
  73. CameraTest/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml 852B
  74. CameraTest/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml 906B
  75. CameraTest/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml 892B
  76. CameraTest/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml 812B
  77. CameraTest/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml 363B
  78. CameraTest/.idea/libraries/Gradle__com_google_zxing_core_3_5_1.xml 706B
  79. CameraTest/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml 733B
  80. CameraTest/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml 719B
  81. CameraTest/.idea/libraries/Gradle__junit_junit_4_12.xml 663B
  82. CameraTest/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml 694B
  83. CameraTest/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml 740B
  84. CameraTest/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml 789B
  85. CameraTest/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml 760B
  86. CameraTest/.idea/misc.xml 378B
  87. CameraTest/.idea/modules/
  88. CameraTest/.idea/modules.xml 415B
  89. CameraTest/.idea/modules/app/
  90. CameraTest/.idea/modules/app/CameraTest.app.iml 8.59KB
  91. CameraTest/.idea/runConfigurations.xml 698B
  92. CameraTest/.idea/workspace.xml 10.31KB
  93. CameraTest/app/
  94. CameraTest/app/.gitignore 8B
  95. CameraTest/app/build.gradle 1.21KB
  96. CameraTest/app/libs/
  97. CameraTest/app/proguard-rules.pro 772B
  98. CameraTest/app/src/
  99. CameraTest/app/src/androidTest/
  100. CameraTest/app/src/androidTest/java/
  101. CameraTest/app/src/androidTest/java/com/
  102. CameraTest/app/src/androidTest/java/com/ipos/
  103. CameraTest/app/src/androidTest/java/com/ipos/cameratest/
  104. CameraTest/app/src/androidTest/java/com/ipos/cameratest/ExampleInstrumentedTest.java 781B
  105. CameraTest/app/src/main/
  106. CameraTest/app/src/main/AndroidManifest.xml 1.37KB
  107. CameraTest/app/src/main/java/
  108. CameraTest/app/src/main/java/com/
  109. CameraTest/app/src/main/java/com/ipos/
  110. CameraTest/app/src/main/java/com/ipos/cameratest/
  111. CameraTest/app/src/main/java/com/ipos/cameratest/MainActivity.java 6.82KB
  112. CameraTest/app/src/main/java/com/ipos/cameratest/QrCamera.java 23.33KB
  113. CameraTest/app/src/main/java/com/ipos/cameratest/QrDecorateView.java 4.77KB
  114. CameraTest/app/src/main/java/com/ipos/cameratest/QrYuvLuminanceSource.java 1.71KB
  115. CameraTest/app/src/main/res/
  116. CameraTest/app/src/main/res/drawable/
  117. CameraTest/app/src/main/res/drawable-v24/
  118. CameraTest/app/src/main/res/drawable-v24/ic_launcher_foreground.xml 1.87KB
  119. CameraTest/app/src/main/res/drawable/ic_launcher_background.xml 5.64KB
  120. CameraTest/app/src/main/res/layout/
  121. CameraTest/app/src/main/res/layout/activity_main.xml 988B
  122. CameraTest/app/src/main/res/mipmap-anydpi-v26/
  123. CameraTest/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml 276B
  124. CameraTest/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml 276B
  125. CameraTest/app/src/main/res/mipmap-hdpi/
  126. CameraTest/app/src/main/res/mipmap-hdpi/ic_launcher.png 2.89KB
  127. CameraTest/app/src/main/res/mipmap-hdpi/ic_launcher_round.png 4.79KB
  128. CameraTest/app/src/main/res/mipmap-mdpi/
  129. CameraTest/app/src/main/res/mipmap-mdpi/ic_launcher.png 2.01KB
  130. CameraTest/app/src/main/res/mipmap-mdpi/ic_launcher_round.png 2.72KB
  131. CameraTest/app/src/main/res/mipmap-xhdpi/
  132. CameraTest/app/src/main/res/mipmap-xhdpi/ic_launcher.png 4.38KB
  133. CameraTest/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png 6.73KB
  134. CameraTest/app/src/main/res/mipmap-xxhdpi/
  135. CameraTest/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 6.24KB
  136. CameraTest/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png 10.17KB
  137. CameraTest/app/src/main/res/mipmap-xxxhdpi/
  138. CameraTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 8.91KB
  139. CameraTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png 14.78KB
  140. CameraTest/app/src/main/res/values/
  141. CameraTest/app/src/main/res/values/colors.xml 395B
  142. CameraTest/app/src/main/res/values/strings.xml 76B
  143. CameraTest/app/src/main/res/values/styles.xml 394B
  144. CameraTest/app/src/test/
  145. CameraTest/app/src/test/java/
  146. CameraTest/app/src/test/java/com/
  147. CameraTest/app/src/test/java/com/ipos/
  148. CameraTest/app/src/test/java/com/ipos/cameratest/
  149. CameraTest/app/src/test/java/com/ipos/cameratest/ExampleUnitTest.java 396B
  150. CameraTest/build.gradle 771B
  151. CameraTest/CameraTest.iml 991B
  152. CameraTest/gradle/
  153. CameraTest/gradle.properties 1.07KB
  154. CameraTest/gradlew 5.17KB
  155. CameraTest/gradlew.bat 2.21KB
  156. CameraTest/gradle/wrapper/
  157. CameraTest/gradle/wrapper/gradle-wrapper.jar 53.06KB
  158. CameraTest/gradle/wrapper/gradle-wrapper.properties 238B
  159. CameraTest/local.properties 366B
  160. CameraTest/settings.gradle 47B

资源介绍:

网上很多关于zxing的相关资源,但基本都是调用的camera或camerax进行集成的,由于摄像头原因,camera原生api又无法进行对焦,camerax在系统源码中又不是很方便导入到编译脚本,故使用了camera2进行集成。 关键代码调用: LuminanceSource source = new RGBLuminanceSource(width, height, data); BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); Result qrCodeResult = null; MultiFormatReader multiFormatReader = new MultiFormatReader(); try { qrCodeResult = multiFormatReader.decode(bitmap1); } catch (NotFoundException e) { }
package com.ipos.cameratest; import android.Manifest; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.ImageFormat; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraManager; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.params.StreamConfigurationMap; import android.media.Image; import android.media.ImageReader; import android.nfc.Tag; import android.os.Environment; import android.os.Handler; import android.content.Context; import android.content.res.Configuration; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.SurfaceTexture; //import android.hardware.Camera; //import android.hardware.Camera.CameraInfo; //import android.hardware.Camera.Parameters; import android.hardware.camera2.CameraDevice; import android.os.AsyncTask; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import android.util.Size; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.TextureView; import android.view.View; import android.view.WindowManager; import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.core.app.ActivityCompat; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.LuminanceSource; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.RGBLuminanceSource; import com.google.zxing.ReaderException; import com.google.zxing.Result; import com.google.zxing.common.HybridBinarizer; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; /** * Manage the camera for the QR scanner and help the decoder to get the image inside the scanning * frame. Caller prepares a {@link SurfaceTexture} then call {@link #start()} to * start QR Code scanning. The scanning result will return by ScannerCallback interface. Caller * can also call {@link #stop()} to halt QR Code scanning before the result returned. */ public class QrCamera extends Handler { private static final String TAG = "QrCamera"; private static final int MSG_AUTO_FOCUS = 1; /** * The max allowed difference between picture size ratio and preview size ratio. * Uses to filter the picture sizes of similar preview size ratio, for example, if a preview * size is 1920x1440, MAX_RATIO_DIFF 0.1 could allow picture size of 720x480 or 352x288 or * 176x44 but not 1920x1080. */ private static final double MAX_RATIO_DIFF = 0.1; private static final long AUTOFOCUS_INTERVAL_MS = 1500L; private static Map> HINTS = new ArrayMap<>(); private static List FORMATS = new ArrayList<>(); static { FORMATS.add(BarcodeFormat.QR_CODE); HINTS.put(DecodeHintType.POSSIBLE_FORMATS, FORMATS); } @VisibleForTesting // Camera mCamera; private CameraDevice mCameraDevice; private CameraCaptureSession mCaptureSession; private CaptureRequest.Builder mPreviewRequestBuilder; private CaptureRequest mPreviewRequest; private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; private ImageReader mImageReader; private Size mPreviewSize; private WeakReference mContext; private ScannerCallback mScannerCallback; private MultiFormatReader mReader; private DecodingTask mDecodeTask; private int mCameraOrientation = 0; @VisibleForTesting // Camera.Parameters mParameters; public QrCamera(Context context, ScannerCallback callback) { mContext = new WeakReference(context); mScannerCallback = callback; mReader = new MultiFormatReader(); mReader.setHints(HINTS); } public QrCamera(Context context, ScannerCallback callback, SurfaceView mSurfaceView, SurfaceHolder mSurfaceHolder) { mContext = new WeakReference(context); mScannerCallback = callback; mReader = new MultiFormatReader(); mReader.setHints(HINTS); this.mSurfaceView = mSurfaceView; this.mSurfaceHolder = mSurfaceHolder; mPreviewSize = new Size(mSurfaceView.getWidth(), mSurfaceView.getHeight()); } /** * The function start camera preview and capture pictures to decode QR code continuously in a * background task. * //@param surface The surface to be used for live preview. */ public void start(/*SurfaceTexture surface*/) { CameraManager manager = (CameraManager) mContext.get().getSystemService(Context.CAMERA_SERVICE); try { String cameraId = manager.getCameraIdList()[0]; CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId); StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); int width = mPreviewSize.getWidth(); int height = mPreviewSize.getHeight(); mImageReader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1); mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, null); if (ActivityCompat.checkSelfPermission(mContext.get(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { return; } manager.openCamera(cameraId, mStateCallback, null); } catch (CameraAccessException e) { e.printStackTrace(); } /*if (mDecodeTask == null) { mDecodeTask = new DecodingTask(); // Execute in the separate thread pool to prevent block other AsyncTask. mDecodeTask.executeOnExecutor(Executors.newSingleThreadExecutor()); }*/ } final Semaphore imageGot = new Semaphore(0); long lastTime = 0; private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() { @Override public void onImageAvailable(ImageReader reader) { Image image = reader.acquireLatestImage(); if (image == null) { return; } ByteBuffer buffer = image.getPlanes()[0].getBuffer(); byte[] bytes = new byte[buffer.remaining()]; buffer.get(bytes); image.close(); imageGot.release(); try { // Semaphore.acquire() blocking until permit is available, or the thread is // interrupted. imageGot.acquire(); Result qrCode = decodeQRCode(BitmapFactory.decodeByteArray(bytes, 0, bytes.length)); if (qrCode != null) { if (mScannerCallback.isValid(qrCode.getText())) { long curTime = System.currentTimeMillis(); if (curTime < lastTime + 3000) { return; } lastTime = curTime; if (qrCode != null) { mScannerCallback.handleSuccessfulResult(qrCode.getText());
100+评论
captcha