├── .gitignore ├── README.md ├── ZxingLibDemo.iml ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── yangxixi │ │ └── zxinglib │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── yangxixi │ │ │ └── zxinglib │ │ │ ├── AliCaptureActivity.java │ │ │ ├── DefaultCaptureActivity.java │ │ │ ├── MainActivity.java │ │ │ └── WeChatCaptureActivity.java │ └── res │ │ ├── layout │ │ ├── activity_ali_capture.xml │ │ ├── activity_capture.xml │ │ ├── activity_main.xml │ │ └── activity_wechat_capture.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── yangxixi │ └── zxinglib │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── local.properties ├── settings.gradle └── zxinglite ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── src └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── zxing │ │ ├── BarcodeFormat.java │ │ ├── Binarizer.java │ │ ├── BinaryBitmap.java │ │ ├── ChecksumException.java │ │ ├── DecodeHintType.java │ │ ├── Dimension.java │ │ ├── EncodeHintType.java │ │ ├── FormatException.java │ │ ├── InvertedLuminanceSource.java │ │ ├── LuminanceSource.java │ │ ├── MultiFormatReader.java │ │ ├── MultiFormatWriter.java │ │ ├── NotFoundException.java │ │ ├── PlanarYUVLuminanceSource.java │ │ ├── RGBLuminanceSource.java │ │ ├── Reader.java │ │ ├── ReaderException.java │ │ ├── Result.java │ │ ├── ResultMetadataType.java │ │ ├── ResultPoint.java │ │ ├── ResultPointCallback.java │ │ ├── Writer.java │ │ ├── WriterException.java │ │ ├── aztec │ │ ├── AztecDetectorResult.java │ │ ├── AztecReader.java │ │ ├── AztecWriter.java │ │ ├── decoder │ │ │ └── Decoder.java │ │ ├── detector │ │ │ └── Detector.java │ │ └── encoder │ │ │ ├── AztecCode.java │ │ │ ├── BinaryShiftToken.java │ │ │ ├── Encoder.java │ │ │ ├── HighLevelEncoder.java │ │ │ ├── SimpleToken.java │ │ │ ├── State.java │ │ │ └── Token.java │ │ ├── client │ │ ├── android │ │ │ ├── AnimeViewCallback.java │ │ │ ├── AutoScannerView.java │ │ │ ├── BaseCaptureActivity.java │ │ │ ├── BeepManager.java │ │ │ ├── CaptureActivityHandler.java │ │ │ ├── DecodeFormatManager.java │ │ │ ├── DecodeHandler.java │ │ │ ├── DecodeHintManager.java │ │ │ ├── DecodeThread.java │ │ │ ├── FlowLineView.java │ │ │ ├── Ids.java │ │ │ ├── IntentSource.java │ │ │ ├── Intents.java │ │ │ ├── PreferencesActivity.java │ │ │ ├── ViewfinderResultPointCallback.java │ │ │ ├── ViewfinderView.java │ │ │ └── camera │ │ │ │ ├── AutoFocusManager.java │ │ │ │ ├── CameraConfigurationManager.java │ │ │ │ ├── CameraConfigurationUtils.java │ │ │ │ ├── CameraManager.java │ │ │ │ ├── FrontLightMode.java │ │ │ │ ├── PreviewCallback.java │ │ │ │ └── open │ │ │ │ ├── CameraFacing.java │ │ │ │ ├── OpenCamera.java │ │ │ │ └── OpenCameraInterface.java │ │ └── result │ │ │ ├── AbstractDoCoMoResultParser.java │ │ │ ├── AddressBookAUResultParser.java │ │ │ ├── AddressBookDoCoMoResultParser.java │ │ │ ├── AddressBookParsedResult.java │ │ │ ├── BizcardResultParser.java │ │ │ ├── BookmarkDoCoMoResultParser.java │ │ │ ├── CalendarParsedResult.java │ │ │ ├── EmailAddressParsedResult.java │ │ │ ├── EmailAddressResultParser.java │ │ │ ├── EmailDoCoMoResultParser.java │ │ │ ├── ExpandedProductParsedResult.java │ │ │ ├── ExpandedProductResultParser.java │ │ │ ├── GeoParsedResult.java │ │ │ ├── GeoResultParser.java │ │ │ ├── ISBNParsedResult.java │ │ │ ├── ISBNResultParser.java │ │ │ ├── ParsedResult.java │ │ │ ├── ParsedResultType.java │ │ │ ├── ProductParsedResult.java │ │ │ ├── ProductResultParser.java │ │ │ ├── ResultParser.java │ │ │ ├── SMSMMSResultParser.java │ │ │ ├── SMSParsedResult.java │ │ │ ├── SMSTOMMSTOResultParser.java │ │ │ ├── SMTPResultParser.java │ │ │ ├── TelParsedResult.java │ │ │ ├── TelResultParser.java │ │ │ ├── TextParsedResult.java │ │ │ ├── URIParsedResult.java │ │ │ ├── URIResultParser.java │ │ │ ├── URLTOResultParser.java │ │ │ ├── VCardResultParser.java │ │ │ ├── VEventResultParser.java │ │ │ ├── VINParsedResult.java │ │ │ ├── VINResultParser.java │ │ │ ├── WifiParsedResult.java │ │ │ └── WifiResultParser.java │ │ ├── common │ │ ├── BitArray.java │ │ ├── BitMatrix.java │ │ ├── BitSource.java │ │ ├── CharacterSetECI.java │ │ ├── DecoderResult.java │ │ ├── DefaultGridSampler.java │ │ ├── DetectorResult.java │ │ ├── GlobalHistogramBinarizer.java │ │ ├── GridSampler.java │ │ ├── HybridBinarizer.java │ │ ├── PerspectiveTransform.java │ │ ├── StringUtils.java │ │ ├── detector │ │ │ ├── MathUtils.java │ │ │ ├── MonochromeRectangleDetector.java │ │ │ └── WhiteRectangleDetector.java │ │ └── reedsolomon │ │ │ ├── GenericGF.java │ │ │ ├── GenericGFPoly.java │ │ │ ├── ReedSolomonDecoder.java │ │ │ ├── ReedSolomonEncoder.java │ │ │ └── ReedSolomonException.java │ │ ├── datamatrix │ │ ├── DataMatrixReader.java │ │ ├── DataMatrixWriter.java │ │ ├── decoder │ │ │ ├── BitMatrixParser.java │ │ │ ├── DataBlock.java │ │ │ ├── DecodedBitStreamParser.java │ │ │ ├── Decoder.java │ │ │ └── Version.java │ │ ├── detector │ │ │ └── Detector.java │ │ └── encoder │ │ │ ├── ASCIIEncoder.java │ │ │ ├── Base256Encoder.java │ │ │ ├── C40Encoder.java │ │ │ ├── DataMatrixSymbolInfo144.java │ │ │ ├── DefaultPlacement.java │ │ │ ├── EdifactEncoder.java │ │ │ ├── Encoder.java │ │ │ ├── EncoderContext.java │ │ │ ├── ErrorCorrection.java │ │ │ ├── HighLevelEncoder.java │ │ │ ├── SymbolInfo.java │ │ │ ├── SymbolShapeHint.java │ │ │ ├── TextEncoder.java │ │ │ └── X12Encoder.java │ │ ├── maxicode │ │ ├── MaxiCodeReader.java │ │ └── decoder │ │ │ ├── BitMatrixParser.java │ │ │ ├── DecodedBitStreamParser.java │ │ │ └── Decoder.java │ │ ├── multi │ │ ├── ByQuadrantReader.java │ │ ├── GenericMultipleBarcodeReader.java │ │ ├── MultipleBarcodeReader.java │ │ └── qrcode │ │ │ ├── QRCodeMultiReader.java │ │ │ └── detector │ │ │ ├── MultiDetector.java │ │ │ └── MultiFinderPatternFinder.java │ │ ├── oned │ │ ├── CodaBarReader.java │ │ ├── CodaBarWriter.java │ │ ├── Code128Reader.java │ │ ├── Code128Writer.java │ │ ├── Code39Reader.java │ │ ├── Code39Writer.java │ │ ├── Code93Reader.java │ │ ├── Code93Writer.java │ │ ├── EAN13Reader.java │ │ ├── EAN13Writer.java │ │ ├── EAN8Reader.java │ │ ├── EAN8Writer.java │ │ ├── EANManufacturerOrgSupport.java │ │ ├── ITFReader.java │ │ ├── ITFWriter.java │ │ ├── MultiFormatOneDReader.java │ │ ├── MultiFormatUPCEANReader.java │ │ ├── OneDReader.java │ │ ├── OneDimensionalCodeWriter.java │ │ ├── UPCAReader.java │ │ ├── UPCAWriter.java │ │ ├── UPCEANExtension2Support.java │ │ ├── UPCEANExtension5Support.java │ │ ├── UPCEANExtensionSupport.java │ │ ├── UPCEANReader.java │ │ ├── UPCEANWriter.java │ │ ├── UPCEReader.java │ │ ├── UPCEWriter.java │ │ └── rss │ │ │ ├── AbstractRSSReader.java │ │ │ ├── DataCharacter.java │ │ │ ├── FinderPattern.java │ │ │ ├── Pair.java │ │ │ ├── RSS14Reader.java │ │ │ ├── RSSUtils.java │ │ │ └── expanded │ │ │ ├── BitArrayBuilder.java │ │ │ ├── ExpandedPair.java │ │ │ ├── ExpandedRow.java │ │ │ ├── RSSExpandedReader.java │ │ │ └── decoders │ │ │ ├── AI013103decoder.java │ │ │ ├── AI01320xDecoder.java │ │ │ ├── AI01392xDecoder.java │ │ │ ├── AI01393xDecoder.java │ │ │ ├── AI013x0x1xDecoder.java │ │ │ ├── AI013x0xDecoder.java │ │ │ ├── AI01AndOtherAIs.java │ │ │ ├── AI01decoder.java │ │ │ ├── AI01weightDecoder.java │ │ │ ├── AbstractExpandedDecoder.java │ │ │ ├── AnyAIDecoder.java │ │ │ ├── BlockParsedResult.java │ │ │ ├── CurrentParsingState.java │ │ │ ├── DecodedChar.java │ │ │ ├── DecodedInformation.java │ │ │ ├── DecodedNumeric.java │ │ │ ├── DecodedObject.java │ │ │ ├── FieldParser.java │ │ │ └── GeneralAppIdDecoder.java │ │ ├── pdf417 │ │ ├── PDF417Common.java │ │ ├── PDF417Reader.java │ │ ├── PDF417ResultMetadata.java │ │ ├── PDF417Writer.java │ │ ├── decoder │ │ │ ├── BarcodeMetadata.java │ │ │ ├── BarcodeValue.java │ │ │ ├── BoundingBox.java │ │ │ ├── Codeword.java │ │ │ ├── DecodedBitStreamParser.java │ │ │ ├── DetectionResult.java │ │ │ ├── DetectionResultColumn.java │ │ │ ├── DetectionResultRowIndicatorColumn.java │ │ │ ├── PDF417CodewordDecoder.java │ │ │ ├── PDF417ScanningDecoder.java │ │ │ └── ec │ │ │ │ ├── ErrorCorrection.java │ │ │ │ ├── ModulusGF.java │ │ │ │ └── ModulusPoly.java │ │ ├── detector │ │ │ ├── Detector.java │ │ │ └── PDF417DetectorResult.java │ │ └── encoder │ │ │ ├── BarcodeMatrix.java │ │ │ ├── BarcodeRow.java │ │ │ ├── Compaction.java │ │ │ ├── Dimensions.java │ │ │ ├── PDF417.java │ │ │ ├── PDF417ErrorCorrection.java │ │ │ └── PDF417HighLevelEncoder.java │ │ └── qrcode │ │ ├── QRCodeReader.java │ │ ├── QRCodeWriter.java │ │ ├── decoder │ │ ├── BitMatrixParser.java │ │ ├── DataBlock.java │ │ ├── DataMask.java │ │ ├── DecodedBitStreamParser.java │ │ ├── Decoder.java │ │ ├── ErrorCorrectionLevel.java │ │ ├── FormatInformation.java │ │ ├── Mode.java │ │ ├── QRCodeDecoderMetaData.java │ │ └── Version.java │ │ ├── detector │ │ ├── AlignmentPattern.java │ │ ├── AlignmentPatternFinder.java │ │ ├── Detector.java │ │ ├── FinderPattern.java │ │ ├── FinderPatternFinder.java │ │ └── FinderPatternInfo.java │ │ └── encoder │ │ ├── BlockPair.java │ │ ├── ByteMatrix.java │ │ ├── Encoder.java │ │ ├── MaskUtil.java │ │ ├── MatrixUtil.java │ │ └── QRCode.java │ └── res │ ├── drawable │ └── scanline.png │ ├── raw │ └── beep.ogg │ └── values │ ├── colors.xml │ └── strings.xml └── zxinglite.iml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ZxingLite 2 | Android二维码(仿微信,轻量Zxing) 3 | 4 | 详细用法见:http://blog.csdn.net/Vicent_9920/article/details/78352090 5 | http://www.jianshu.com/p/168bef5526ae 6 | -------------------------------------------------------------------------------- /ZxingLibDemo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.1" 6 | defaultConfig { 7 | applicationId "yangxixi.zxinglib" 8 | minSdkVersion 9 9 | targetSdkVersion 24 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:24.2.1' 28 | testCompile 'junit:junit:4.12' 29 | compile project(path: ':zxinglite') 30 | } 31 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/yangxixi/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/yangxixi/zxinglib/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package yangxixi.zxinglib; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("yangxixi.zxinglib", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/java/yangxixi/zxinglib/AliCaptureActivity.java: -------------------------------------------------------------------------------- 1 | package yangxixi.zxinglib; 2 | 3 | import android.graphics.Bitmap; 4 | import android.os.Bundle; 5 | import android.util.Log; 6 | import android.view.SurfaceView; 7 | import android.widget.Toast; 8 | 9 | import com.google.zxing.Result; 10 | import com.google.zxing.client.android.AnimeViewCallback; 11 | import com.google.zxing.client.android.BaseCaptureActivity; 12 | import com.google.zxing.client.android.FlowLineView; 13 | 14 | public class AliCaptureActivity extends BaseCaptureActivity { 15 | 16 | private static final String TAG = "AliCaptureActivity"; 17 | private SurfaceView surfaceView; 18 | private FlowLineView flowLineView; 19 | private boolean isPause = false; 20 | @Override 21 | protected void onCreate(Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | setContentView(R.layout.activity_ali_capture); 24 | surfaceView = (SurfaceView) findViewById(R.id.preview_view); 25 | flowLineView = (FlowLineView) findViewById(R.id.autoscanner_view); 26 | } 27 | 28 | @Override 29 | protected void onResume() { 30 | super.onResume(); 31 | flowLineView.setCameraManager(cameraManager); 32 | if(isPause){ 33 | flowLineView.Pause(); 34 | } 35 | } 36 | 37 | @Override 38 | protected void onPause() { 39 | super.onPause(); 40 | flowLineView.Pause(); 41 | isPause = true; 42 | } 43 | 44 | @Override 45 | public SurfaceView getSurfaceView() { 46 | return (surfaceView == null) ? (SurfaceView) findViewById(R.id.preview_view) : surfaceView; 47 | } 48 | 49 | @Override 50 | public AnimeViewCallback getViewfinderHolder() { 51 | return (flowLineView == null) ? (FlowLineView) findViewById(R.id.viewfinder_view) : flowLineView; 52 | // return null; 53 | } 54 | 55 | @Override 56 | public void dealDecode(Result rawResult, Bitmap barcode, float scaleFactor) { 57 | Log.i(TAG, "dealDecode ~~~~~ " + rawResult.getText() + " " + barcode + " " + scaleFactor); 58 | playBeepSoundAndVibrate(true, false); 59 | Toast.makeText(this, rawResult.getText(), Toast.LENGTH_LONG).show(); 60 | // 对此次扫描结果不满意可以调用 61 | // reScan(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/yangxixi/zxinglib/DefaultCaptureActivity.java: -------------------------------------------------------------------------------- 1 | package yangxixi.zxinglib; 2 | 3 | import android.graphics.Bitmap; 4 | import android.os.Bundle; 5 | import android.util.Log; 6 | import android.view.SurfaceView; 7 | import android.widget.Toast; 8 | 9 | import com.google.zxing.Result; 10 | import com.google.zxing.client.android.AnimeViewCallback; 11 | import com.google.zxing.client.android.BaseCaptureActivity; 12 | import com.google.zxing.client.android.ViewfinderView; 13 | 14 | /** 15 | * 默认的扫描界面 16 | */ 17 | public class DefaultCaptureActivity extends BaseCaptureActivity { 18 | 19 | private static final String TAG = DefaultCaptureActivity.class.getSimpleName(); 20 | 21 | private SurfaceView surfaceView; 22 | private ViewfinderView viewfinderView; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_capture); 28 | surfaceView = (SurfaceView) findViewById(R.id.preview_view); 29 | viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); 30 | } 31 | 32 | @Override 33 | public SurfaceView getSurfaceView() { 34 | return (surfaceView == null) ? (SurfaceView) findViewById(R.id.preview_view) : surfaceView; 35 | } 36 | 37 | @Override 38 | public AnimeViewCallback getViewfinderHolder() { 39 | return (viewfinderView == null) ? (ViewfinderView) findViewById(R.id.viewfinder_view) : viewfinderView; 40 | } 41 | 42 | @Override 43 | public void dealDecode(Result rawResult, Bitmap barcode, float scaleFactor) { 44 | Log.i(TAG, "dealDecode ~~~~~ " + rawResult.getText() + " " + barcode + " " + scaleFactor); 45 | playBeepSoundAndVibrate(); 46 | Toast.makeText(this, rawResult.getText(), Toast.LENGTH_LONG).show(); 47 | // 对此次扫描结果不满意可以调用 48 | // reScan(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/yangxixi/zxinglib/MainActivity.java: -------------------------------------------------------------------------------- 1 | package yangxixi.zxinglib; 2 | 3 | import android.content.Intent; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.os.Bundle; 6 | import android.view.View; 7 | import android.widget.Button; 8 | 9 | public class MainActivity extends AppCompatActivity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_main); 15 | Button defaultStart = (Button) findViewById(R.id.default_start); 16 | defaultStart.setOnClickListener(new View.OnClickListener() { 17 | @Override 18 | public void onClick(View v) { 19 | Intent intent = new Intent(MainActivity.this, DefaultCaptureActivity.class); 20 | startActivity(intent); 21 | } 22 | }); 23 | 24 | Button weStart = (Button) findViewById(R.id.wechat_start); 25 | weStart.setOnClickListener(new View.OnClickListener() { 26 | @Override 27 | public void onClick(View v) { 28 | Intent intent = new Intent(MainActivity.this, WeChatCaptureActivity.class); 29 | startActivity(intent); 30 | } 31 | }); 32 | 33 | Button aliStart = (Button) findViewById(R.id.alipay_start); 34 | aliStart.setOnClickListener(new View.OnClickListener() { 35 | @Override 36 | public void onClick(View v) { 37 | Intent intent = new Intent(MainActivity.this, AliCaptureActivity.class); 38 | startActivity(intent); 39 | } 40 | }); 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/yangxixi/zxinglib/WeChatCaptureActivity.java: -------------------------------------------------------------------------------- 1 | package yangxixi.zxinglib; 2 | 3 | import android.graphics.Bitmap; 4 | import android.os.Bundle; 5 | import android.util.Log; 6 | import android.view.SurfaceView; 7 | import android.widget.Toast; 8 | 9 | import com.google.zxing.Result; 10 | import com.google.zxing.client.android.AutoScannerView; 11 | import com.google.zxing.client.android.BaseCaptureActivity; 12 | 13 | /** 14 | * 模仿微信的扫描界面 15 | */ 16 | public class WeChatCaptureActivity extends BaseCaptureActivity { 17 | 18 | private static final String TAG = WeChatCaptureActivity.class.getSimpleName(); 19 | 20 | private SurfaceView surfaceView; 21 | private AutoScannerView autoScannerView; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | setContentView(R.layout.activity_wechat_capture); 27 | surfaceView = (SurfaceView) findViewById(R.id.preview_view); 28 | autoScannerView = (AutoScannerView) findViewById(R.id.autoscanner_view); 29 | } 30 | 31 | @Override 32 | protected void onResume() { 33 | super.onResume(); 34 | autoScannerView.setCameraManager(cameraManager); 35 | } 36 | 37 | 38 | 39 | @Override 40 | public SurfaceView getSurfaceView() { 41 | return (surfaceView == null) ? (SurfaceView) findViewById(R.id.preview_view) : surfaceView; 42 | } 43 | 44 | @Override 45 | public void dealDecode(Result rawResult, Bitmap barcode, float scaleFactor) { 46 | Log.i(TAG, "dealDecode ~~~~~ " + rawResult.getText() + " " + barcode + " " + scaleFactor); 47 | playBeepSoundAndVibrate(true, false); 48 | Toast.makeText(this, rawResult.getText(), Toast.LENGTH_LONG).show(); 49 | // 对此次扫描结果不满意可以调用 50 | // reScan(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_ali_capture.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_capture.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 |