日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android實現(xiàn)掃碼功能

瀏覽:25日期:2022-09-18 11:57:08

本文實例為大家分享了Android實現(xiàn)掃碼功能的具體代碼,供大家參考,具體內(nèi)容如下

Android實現(xiàn)掃碼功能

1、引入

implementation ’com.journeyapps:zxing-android-embedded:3.5.0’

2、使用:

public void initScan() {IntentIntegrator integrator = new IntentIntegrator(this);// 設(shè)置要掃描的條碼類型,ONE_D_CODE_TYPES:一維碼,QR_CODE_TYPES-二維碼integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);integrator.setCaptureActivity(ScanActivity.class); //設(shè)置打開攝像頭的Activityintegrator.setPrompt(''); //底部的提示文字,設(shè)為''可以置空integrator.setCameraId(0); //前置或者后置攝像頭integrator.setBeepEnabled(true); //掃描成功的「嗶嗶」聲,默認開啟integrator.setBarcodeImageEnabled(true);integrator.initiateScan(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) {super.onActivityResult(requestCode, resultCode, intent);if (requestCode == IntentIntegrator.REQUEST_CODE) { IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanResult != null && scanResult.getContents() != null) {String result = scanResult.getContents();LogUtil.d('掃碼返回: ' + result);try { JSONObject jsonObject = new JSONObject(result); if (jsonObject.has(Constant.USERPOLICEMENID)) { //TODO 邏輯 } else {ToastUtil.showShortToast('未掃描到有效的信息'); }} catch (Exception e) { ToastUtil.showShortToast('未掃描到有效的信息'); e.printStackTrace();} } else {ToastUtil.showShortToast('未掃描到有效的信息'); }} }

3、ScanActivity

public class ScanActivity extends BackActivity { @BindView(R.id.dbv) DecoratedBarcodeView mDbv; private CaptureManager captureManager; @Override protected int getLayoutId() {getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);return R.layout.activity_scan; } @Override protected void init() {super.init();captureManager = new CaptureManager(this, mDbv);captureManager.initializeFromIntent(getIntent(), getSavedInstanceState());captureManager.decode(); } @Override public void onSaveInstanceState(@NotNull Bundle outState, @NotNull PersistableBundle outPersistentState) {super.onSaveInstanceState(outState, outPersistentState);captureManager.onSaveInstanceState(outState); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) {return mDbv.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } @Override protected void onPause() {super.onPause();captureManager.onPause(); } @Override public void onResume() {super.onResume();captureManager.onResume(); } @Override protected void onDestroy() {super.onDestroy();captureManager.onDestroy(); } }

4、布局文件

activity_scan

<?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.main.alarmassistant.ScanActivity'> <com.journeyapps.barcodescanner.DecoratedBarcodeViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:fitsSystemWindows='true'app:zxing_framing_rect_height='200dp'app:zxing_framing_rect_width='200dp'app:zxing_preview_scaling_strategy='fitXY'app:zxing_scanner_layout='@layout/view_qr'app:zxing_use_texture_view='true' /></LinearLayout>

view_qr

<?xml version='1.0' encoding='utf-8'?><merge xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto'> <com.journeyapps.barcodescanner.BarcodeViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'app:zxing_framing_rect_height='50dp'app:zxing_framing_rect_width='250dp' /> <com.x.x.widget.QrViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'app:zxing_possible_result_points='@color/color_white'app:zxing_result_view='@color/zxing_custom_result_view'app:zxing_viewfinder_laser='@color/color_white'app:zxing_viewfinder_mask='@color/zxing_custom_viewfinder_mask' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_gravity='bottom|center_horizontal'android:layout_marginBottom='30dp'android:background='@color/zxing_transparent'android:text='@string/zxing_msg_default_status'android:textColor='@color/zxing_status_text' /> <com.x.common.widget.MyActionBarandroid: android:layout_width='match_parent'android:layout_height='wrap_content'app:dark_mode='true'app:title='掃一掃' /></merge>

5、

/** * 自定義掃描界面 */ public class QrView extends ViewfinderView { public int laserLinePosition = 0; public float[] position = new float[]{0f, 0.5f, 1f}; public int[] colors = new int[]{0x0027B14D, 0xff27B14D, 0x0027B14D}; public LinearGradient linearGradient; private int ScreenRate; public QrView(Context context, AttributeSet attrs) {super(context, attrs);float density = context.getResources().getDisplayMetrics().density;ScreenRate = (int) (15 * density); } @Override public void onDraw(Canvas canvas) {int CORNER_WIDTH = 15;refreshSizes(); if (framingRect == null || previewFramingRect == null) { return;} Rect frame = framingRect;Rect previewFrame = previewFramingRect; int width = canvas.getWidth();int height = canvas.getHeight();//繪制4個角 paint.setColor(getResources().getColor(R.color.color_white));//定義畫筆的顏色canvas.drawRect(frame.left, frame.top, frame.left + ScreenRate, frame.top + CORNER_WIDTH, paint);canvas.drawRect(frame.left, frame.top, frame.left + CORNER_WIDTH, frame.top + ScreenRate, paint); canvas.drawRect(frame.right - ScreenRate, frame.top, frame.right, frame.top + CORNER_WIDTH, paint);canvas.drawRect(frame.right - CORNER_WIDTH, frame.top, frame.right, frame.top + ScreenRate, paint); canvas.drawRect(frame.left, frame.bottom - CORNER_WIDTH, frame.left + ScreenRate, frame.bottom, paint);canvas.drawRect(frame.left, frame.bottom - ScreenRate, frame.left + CORNER_WIDTH, frame.bottom, paint); canvas.drawRect(frame.right - ScreenRate, frame.bottom - CORNER_WIDTH, frame.right, frame.bottom, paint);canvas.drawRect(frame.right - CORNER_WIDTH, frame.bottom - ScreenRate, frame.right, frame.bottom, paint); // 畫出外部(即構(gòu)圖矩形之外)變暗paint.setColor(resultBitmap != null ? resultColor : maskColor);canvas.drawRect(0, 0, width, frame.top, paint);canvas.drawRect(0, frame.top, frame.left, frame.bottom, paint);canvas.drawRect(frame.right, frame.top, width, frame.bottom, paint);canvas.drawRect(0, frame.bottom, width, height, paint); if (resultBitmap != null) { // Draw the opaque result bitmap over the scanning rectangle paint.setAlpha(CURRENT_POINT_OPACITY); canvas.drawBitmap(resultBitmap, null, frame, paint);} else { laserLinePosition = laserLinePosition + 8; if (laserLinePosition >= frame.height()) {laserLinePosition = 0; } linearGradient = new LinearGradient(frame.left + 1, frame.top + laserLinePosition, frame.right - 1, frame.top + 10 + laserLinePosition, colors, position, Shader.TileMode.CLAMP); // Draw a red 'laser scanner' line through the middle to show decoding is active paint.setShader(linearGradient); //繪制掃描線 canvas.drawRect(frame.left + 1, frame.top + laserLinePosition, frame.right - 1, frame.top + 10 + laserLinePosition, paint); paint.setShader(null); float scaleX = frame.width() / (float) previewFrame.width(); float scaleY = frame.height() / (float) previewFrame.height(); List<ResultPoint> currentPossible = possibleResultPoints; List<ResultPoint> currentLast = lastPossibleResultPoints; int frameLeft = frame.left; int frameTop = frame.top; if (currentPossible.isEmpty()) {lastPossibleResultPoints = null; } else {possibleResultPoints = new ArrayList<>(5);lastPossibleResultPoints = currentPossible;paint.setAlpha(CURRENT_POINT_OPACITY);paint.setColor(resultPointColor);for (ResultPoint point : currentPossible) { canvas.drawCircle(frameLeft + (int) (point.getX() * scaleX), frameTop + (int) (point.getY() * scaleY), POINT_SIZE, paint);} } if (currentLast != null) {paint.setAlpha(CURRENT_POINT_OPACITY / 2);paint.setColor(resultPointColor);float radius = POINT_SIZE / 2.0f;for (ResultPoint point : currentLast) { canvas.drawCircle(frameLeft + (int) (point.getX() * scaleX), frameTop + (int) (point.getY() * scaleY), radius, paint);} } postInvalidateDelayed(16, frame.left, frame.top, frame.right, frame.bottom);} }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
老司机久久99久久精品播放免费| 欧美国产美女| 五月天久久777| 亚洲天堂久久| 黑丝一区二区三区| 久久都是精品| 日韩av网站在线观看| 欧美一区91| 久久一区亚洲| 欧美黄色网页| 免费日韩视频| 国产日韩欧美中文在线| 久久中文欧美| 亚洲爱爱视频| 激情五月综合| 亚洲综合图色| 久久精品资源| 香蕉国产精品| 欧美日韩精品一区二区三区视频| 美女精品久久| 电影亚洲精品噜噜在线观看| 合欧美一区二区三区| 午夜电影一区| 在线天堂中文资源最新版| 在线一区欧美| 国产精品久久久久久模特| 欧美日韩在线网站| 日韩精品成人| 日韩免费小视频| 蜜臀久久99精品久久久久宅男| 欧美日韩18| 99精品在线免费在线观看| 蜜桃视频一区二区三区在线观看| 国产精品伊人| 免费av一区| 国产精品欧美三级在线观看| 日韩在线观看不卡| 婷婷综合国产| 国产一区二区亚洲| 午夜一级久久| 精品国产一区二| 亚洲欧美日韩专区| 成人国产综合| 日韩精品午夜视频| 色黄视频在线观看| 日韩欧美中文在线观看| 成人日韩精品| 国产日韩欧美一区二区三区在线观看| 成人羞羞视频在线看网址| 日本免费在线视频不卡一不卡二| 久久久精品五月天| 国产精品网址| 中文精品在线| 在线人成日本视频| 国产精品一区二区美女视频免费看| 天堂资源在线亚洲| 精品精品国产三级a∨在线| 日本综合精品一区| 自拍日韩欧美| 国产成人精品一区二区免费看京| 亚洲精品在线a| 亚洲大片在线| 97在线精品| 久久xxx视频| 综合一区二区三区| 136国产福利精品导航网址| 精品久久电影| 国产精品久久久久久模特| 日韩中文字幕麻豆| 99久久99视频只有精品| 久久在线91| 欧美日韩中出| 蜜臀av亚洲一区中文字幕| 亚洲一级影院| av在线资源| 精品视频97| 久久国产精品色av免费看| 综合色一区二区| 在线精品一区二区| 一区二区国产在线| 亚洲一区av| 免费人成在线不卡| 亚洲黄页一区| 一区二区亚洲精品| 女人天堂亚洲aⅴ在线观看| 久久精品免费一区二区三区| 成人亚洲一区二区| 国产精品黑丝在线播放| 精品国产三区在线| 久久不见久久见免费视频7 | 91精品99| 亚洲一级二级| 五月天综合网站| 夜夜嗨av一区二区三区网站四季av| 国产精品av一区二区| 亚洲天堂黄色| av不卡在线| 中文字幕一区二区三区四区久久 | 久久精品天堂| 久久精品九色| а√天堂8资源中文在线| 日韩精品dvd| 久久国产直播| 一区在线视频观看| 亚洲精选久久| 国产免费久久| 91亚洲国产成人久久精品| 久久久亚洲一区| 99视频一区| 日韩精品一区二区三区中文| 久久精品超碰| 精品99在线| 久久久噜噜噜| 欧美不卡高清| 日本欧美在线看| 日韩一区二区三区精品视频第3页| 日欧美一区二区| 国产精品sss在线观看av| 成人污污视频| 国产国产精品| 欧美日韩18| 国语精品一区| 精品在线播放| 日本一区二区中文字幕| 欧美国产另类| 久久网站免费观看| 日本免费在线视频不卡一不卡二| 麻豆国产精品777777在线| 大香伊人久久精品一区二区| 久久精品123| 日产欧产美韩系列久久99| 久久99高清| 亚洲精品1区| 国产免费播放一区二区| 天堂√8在线中文| 国内亚洲精品| 91福利精品在线观看| 日韩在线视频精品| 亚洲狼人精品一区二区三区| 国产一区二区三区亚洲综合| 美女少妇全过程你懂的久久| 国产日韩欧美一区二区三区| 久久一区二区三区喷水| 日韩va亚洲va欧美va久久| 另类欧美日韩国产在线| 亚洲作爱视频| 精品欠久久久中文字幕加勒比| 国产亚洲精品久久久久婷婷瑜伽| 国产精品国码视频| 99热精品在线| 神马久久午夜| 国产美女撒尿一区二区| 欧美 日韩 国产一区二区在线视频| 亚洲欧洲av| 国产在线不卡| 久久精品人人| 亚洲1区在线| 日韩精品欧美激情一区二区| 久久国产日韩欧美精品| 久久精品亚洲人成影院 | 合欧美一区二区三区| 国产精品探花在线观看| 精品中文一区| 久久香蕉网站| 亚洲综合三区| 日韩深夜视频| 国产精品调教视频| 男女男精品视频网| 四虎884aa成人精品最新| 国产亚洲一区二区三区不卡| 亚洲网站视频| 成人黄色av| 国产精品中文| 亚洲免费观看高清完整版在线观| 日韩国产网站| 精品精品国产三级a∨在线| 亚洲午夜免费| 99xxxx成人网| 色天使综合视频| 久久免费影院| 国产剧情在线观看一区| 中文字幕av一区二区三区四区| 亚洲黑丝一区二区| 婷婷激情一区| 国产精品久久久久久久久久10秀| 欧美日韩中文| 日韩毛片网站| 日韩精品免费观看视频| 中文字幕av一区二区三区人| 黄色亚洲在线| av亚洲免费| 91精品久久久久久久久久不卡| 国产69精品久久| 成人在线免费观看91| 久久精品国产精品亚洲毛片| 国产欧美日韩一区二区三区四区 | 久久久噜噜噜| a国产在线视频| 国产一区二区视频在线看| 国产精品17p|