BGAQRCode 掃描二維碼生成二維碼
說明:
這裡只是用到了ZXingDemo的程式碼二維碼掃描功能
效果圖:
自己的程式碼:
具體看git的Demo程式碼,下面是自己寫的掃描二維碼的程式碼:
1.gargle引入:
//二維碼掃描
compile 'com.google.zxing:core:3.2.1'
compile 'cn.bingoogolapple:bga-qrcodecore:[email protected]'
compile 'cn.bingoogolapple:bga-zxing:[email protected] '
2.掃碼類:
package briefer.pet.ui.activity; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Vibrator; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Toast; import briefer.pet.R; import cn.bingoogolapple.qrcode.core.QRCodeView; import cn.bingoogolapple.qrcode.zxing.ZXingView; /** * 掃碼 * Created by zst on 2017/6/6. */ public class ScanCodeActivity extends Activity implements QRCodeView.Delegate { private static final int REQUEST_CODE_CAMERA = 999; private static final String TAG = ScanCodeActivity.class.getSimpleName(); private QRCodeView mQRCodeView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan_code); mQRCodeView = (ZXingView) findViewById(R.id.zxingview); mQRCodeView.setDelegate(this); Log.e(TAG, "掃碼:01"); } @Override protected void onStart() { super.onStart(); mQRCodeView.startCamera(); // mQRCodeView.startCamera(Camera.CameraInfo.CAMERA_FACING_FRONT); mQRCodeView.startSpot(); Log.e(TAG, "掃碼:02"); } @Override protected void onStop() { mQRCodeView.stopCamera(); super.onStop(); Log.e(TAG, "掃碼:03"); } @Override protected void onDestroy() { mQRCodeView.onDestroy(); super.onDestroy(); Log.e(TAG, "掃碼:04"); } //震動器 private void vibrate() { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); vibrator.vibrate(100); Log.e(TAG, "掃碼:05"); } @Override public void onScanQRCodeSuccess(String result) { Log.i(TAG, "result:" + result); //Toast.makeText(this, result, Toast.LENGTH_SHORT).show(); vibrate();//震動 mQRCodeView.stopSpot(); if (!TextUtils.isEmpty(result)) { mQRCodeView.stopCamera(); mQRCodeView.onDestroy(); Intent intent = new Intent(ScanCodeActivity.this, ServiceManagerDianZhuNewActivity.class); intent.putExtra("url", result); //intent.setData(Uri.parse(result)); startActivity(intent); finish(); } else { Toast.makeText(this, "連結無效,請重新掃描", Toast.LENGTH_SHORT).show(); mQRCodeView.startSpot(); } Log.e(TAG, "掃碼:06"); } @Override public void onScanQRCodeOpenCameraError() { Log.e(TAG, "無相機許可權,開啟相機出錯"); ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_CAMERA); Log.e(TAG, "掃碼:07"); } public void onClick(View v) { switch (v.getId()) { case R.id.start_spot: mQRCodeView.startSpot(); break; case R.id.stop_spot: mQRCodeView.stopSpot(); break; case R.id.open_flashlight: mQRCodeView.openFlashlight(); break; case R.id.close_flashlight: mQRCodeView.closeFlashlight(); break; case R.id.rl_back: //onDestroy(); mQRCodeView.stopCamera(); mQRCodeView.onDestroy(); finish(); break; } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_CODE_CAMERA) { mQRCodeView.startCamera(); mQRCodeView.startSpot(); } } }
3.佈局
activity_scan_code.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout style="@style/MatchMatch" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <cn.bingoogolapple.qrcode.zxing.ZXingView android:id="@+id/zxingview" style="@style/MatchMatch" app:qrcv_animTime="2000" app:qrcv_barCodeTipText="將條碼放入框內,即可自動掃描" app:qrcv_borderColor="@android:color/white" app:qrcv_borderSize="1dp" app:qrcv_cornerColor="#f57257" app:qrcv_cornerLength="20dp" app:qrcv_cornerSize="3dp" app:qrcv_isBarcode="false" app:qrcv_isOnlyDecodeScanBoxArea="true" app:qrcv_isScanLineReverse="true" app:qrcv_isShowDefaultGridScanLineDrawable="true" app:qrcv_isShowDefaultScanLineDrawable="false" app:qrcv_isShowTipBackground="true" app:qrcv_isShowTipTextAsSingleLine="false" app:qrcv_isTipTextBelowRect="false" app:qrcv_maskColor="#33FFFFFF" app:qrcv_qrCodeTipText="將二維碼放入框內,即可自動掃描" app:qrcv_rectWidth="200dp" app:qrcv_scanLineColor="#f57257" app:qrcv_scanLineMargin="0dp" app:qrcv_scanLineSize="1dp" app:qrcv_tipTextColor="@android:color/white" app:qrcv_tipTextSize="12sp" app:qrcv_toolbarHeight="0dp" app:qrcv_topOffset="180dp"/> <LinearLayout style="@style/MatchWrap.Vertical" android:layout_alignParentBottom="true" android:layout_marginBottom="50dp"> <LinearLayout style="@style/MatchWrap.Horizontal"> <TextView android:id="@+id/start_spot" style="@style/AutoWrapTv" android:text="開始識別" android:visibility="gone"/> <TextView android:id="@+id/stop_spot" style="@style/AutoWrapTv" android:text="暫停識別" android:visibility="gone"/> <TextView android:id="@+id/open_flashlight" style="@style/AutoWrapTv" android:text="開燈"/> <TextView android:id="@+id/close_flashlight" style="@style/AutoWrapTv" android:text="關燈"/> </LinearLayout> </LinearLayout> <RelativeLayout android:id="@+id/rl_back" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="30dp" android:onClick="onClick" android:layout_marginLeft="10dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:src="@drawable/ic_back"/> </RelativeLayout> </RelativeLayout>
4.Style.xml
<!-- 掃描樣式 -->
<style name="MatchMatch">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
</style>
<style name="WrapMatch">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
</style>
<style name="MatchWrap">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="WrapMatch.Vertical">
<item name="android:orientation">vertical</item>
</style>
<style name="MatchWrap.Vertical">
<item name="android:orientation">vertical</item>
</style>
<style name="MatchWrap.Horizontal">
<item name="android:orientation">horizontal</item>
</style>
<style name="AutoWrap">
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="AutoWrapTv" parent="AutoWrap">
<item name="android:textSize">12sp</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/selector_btn_orange</item>
<item name="android:layout_margin">45dp</item>
<item name="android:onClick">onClick</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
</style>
5.selector_btn_orange.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#CCf57257" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#f57257" />
<corners android:radius="5dp" />
</shape>
</item>
</selector>
6.許可權
<!-- 掃碼 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
遇到的問題:
1.使用gardle匯入jar包的時候,
compile 'cn.bingoogolapple:bga-qrcodecore:[email protected]'
1.1.3的版本號一定要輸入對,否則匯入不成功。
2.Demo中沒有考慮那麼全對於攝像頭開啟和關閉,這裡需要自己打Log來測試一下掃碼的順序,這樣好開發。
3.Demo中是按鈕啟動掃碼的,不會開啟Activity就會掃碼的,所以自己開啟Activity的時候要自己啟動一下掃碼:
mQRCodeView.startSpot();
相關推薦
BGAQRCode 掃描二維碼生成二維碼
說明: 這裡只是用到了ZXingDemo的程式碼二維碼掃描功能 效果圖: 自己的程式碼: 具體看git的Demo程式碼,下面是自己寫的掃描二維碼的程式碼: 1.gargle引入: //二維碼掃描 comp
掃描二維碼 生成二維碼
mainactivity.xml佈局 <?xml version="1.0" encoding="utf-8"?> <Button android:id="@+id/btnSan" android:layout_width="
掃描二維碼 生成二維碼
mainactivity.xml佈局 <?xml version="1.0" encoding="utf-8"?> <Button android:id="@+id/btnSan" android:layout_width="match_paren
HTML5 實現掃描識別二維碼 生成二維碼
掃描識別二維碼思路 1. 操作攝像頭,獲取圖片。HTML5 WEBRTC的navigator.getUserMedia方法去實時獲取攝像頭資源。 2. 利用canvas使用
Android用Zxing掃二維碼/生成二維碼功能
新年已過,一切恢復真正常,新的一年給自己幾句指引: 光努力還不行,方向很重要。 總是想著最壞的結果,就會讓人失去改變的勇氣。 你當然有權利選擇自己的人生--但只有在你真正強大後,逆行的阻力才會降到最小。 never say never. 下面開始記錄二維碼使用過程
掃描,生成二維碼
掃描,生成二維碼 <?xml version="1.0" encoding="utf-8"?> <Button android:id="@+id/button" android:layout_width="match_parent"
二維碼的掃描和生成二維碼
前言 之前自己一直想要去實現一個二維碼的掃描和生成,但是一直拖到現在,今天趁著夜色落幕,氣氛還算可以(各種聲音的夾雜中),完成了這個掃描和生成二維碼的工具,在這裡總結一下。 首先普及一下什麼是二維碼和二維碼開源庫 QR Code QRCode簡介: QRCode全
簡單的掃描二維碼吐司+生成二維碼
1.匯入依賴(build.gradle) implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4' 2.MainActivity頁面 public class MainActivity extends AppCompat
Android Zxing實現掃描二維碼條形碼功能仿微信整合閃光燈生成二維碼
最近在做android專案需要用到二維碼條形碼掃描功能,我用的是Eclipse網上原始碼大多是GitHup上的Android studio版本的所以我改了一版整合到專案中去。 效果圖: 左邊版本的掃碼框是自定義的。右邊版本的掃碼框和掃描線是圖片因為太醜所以最終換成左邊
生成二維碼 和 掃描二維碼
導依賴 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4' 許可權 <uses-permission android:name="android.permission.CAMERA" /> <uses-pe
掃描+生成二維碼
1.佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://
andorid 二維碼zxing的整合和掃描以及二維碼生成
二維碼掃描的功能,相信大家以及很熟悉了,但是如何整合呢?網上一搜,於是我們找的了這個開源庫:https://github.com/zxing/zxing 比較權威的一個開源庫,相信很多二維碼掃描核心程式
二維碼掃描和生成二維碼
1.佈局 <?xml version="1.0" encoding="utf-8"?> <cn.bingoogolapple.qrcode.zxing.ZXingView android:id="@+id/zxing" and
如何生成二維碼並統計掃描次數,展示二維碼頁面
引入了 phpqrcode 外掛來生成自定義二維碼 //建立空二維碼 唯一標識code public function mkCode() { // 引入外掛 include '/static/phpqrcode/phpqrcode.php'
Android 二維碼生成,掃描,近距離識別優化,從相簿選擇二維碼識別
做了一個二維碼掃描圖片,主要是掃描不出來,看到一篇部落格,其中的第二種方法可以掃描到,在此做筆記,以備後用,前面的進入相簿,返回,到獲取圖片路徑方法都一樣; (1):二維碼生成的方法順便貼上: private Bitmap createQRImage(String url, final
IOS幾種常見的實現掃描、生成二維碼的方式(一、使用ZBar SDK)
最近專案中使用到掃描二維碼的功能,要求還蠻多的,包括介面的定製,掃描靈敏度,使用的穩定性等等。於是,研究總結了一下IOS中幾種掃描二維碼的實現方式。 基本上我們的實現方法有三大途徑:ZBar、ZXing、AVFoundation。在 iOS7
IOS中生成二維碼、掃描二維碼
轉載自: http://www.jianshu.com/p/b8bf300e9a56 從IOS7開始集成了二維碼的生成和讀取功能生成二維碼 1 匯入CoreImage框架#import <CoreImage/CoreImage.h> 2 通過濾鏡CIFi
Android開發——Android中的二維碼生成與掃描
0. 前言今天這篇文章主要描述二維碼的生成與掃描,使用目前流行的Zxing,為什麼要講二維碼,因為二維碼太普遍了,隨便一個Android APP都會有二維碼掃描。本篇旨在幫助有需求的同學快速完成二維碼生成和掃描的功能。本篇轉載自:http://blog.csdn.net/ha
Cordova各個外掛使用介紹系列(二)—$cordovaBarcodeScanner掃描二維碼與生成二維碼
這是一個用來掃描二維碼的cordova外掛,在做專案的時候想實現類似於微信的掃一掃功能,就想到了cordova的$cordovaBarcodeScanner外掛,用很少量的程式碼就可以實現了,下面來看一下具體的實現步驟: 一、掃描二維碼: 1、首先需要有一個簡單
在android上實現二維碼生成和掃描
先在androidstudio上匯入libzing的Module,然後再app上把那個libzing新增上去,這樣我們的app就關聯了那個libzing庫了 然後我們就只在app這個工程下寫程式碼就行了。activity_main.xml佈局如下