二维码扫描--基于bingoogolapple + Android Studio 2.3.3
来源:互联网 发布:视频大数据什么意思 编辑:程序博客网 时间:2024/06/05 12:06
前言:
Android开发之实现二维码扫描
正文:
网上有很多的二维码扫描的教程,但,对于刚入门的兄弟们来说,真的很残忍。
既然有需求,就去网上找相应的教程是吧,而且,就喜欢那种简单粗暴的先实现下功能,再进行代码的改动,达到自己的需求。
嗯,我只是刚入门的小学生。
扫描二维码,当然是官方的Zxing库了,这个是必须要学习的。
但是,如果只是实现功能练下手,咱就接着往下看。
bingoogolapple在功能实现上就是很简洁的一个基于zxing的库。
本文就此展开。
1. 首先,在Model的build.gradel中添加如下代码:
dependencies { //添加如下代码 compile 'com.google.zxing:core:3.2.1' compile 'cn.bingoogolapple:bga-qrcodecore:1.1.3@aar' compile 'cn.bingoogolapple:bga-zxing:1.1.3@aar'}
2. 配置AndroidManifest.xml
<!-- 扫码 --> <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" />
3. 新建ScanCodeActivity
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; private String scanResult; 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) { scanResult = 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(); new Handler().postDelayed(new Runnable() { //开启线程阻塞,以便查看是否登录成功。做调试用 public void run() { // TODO Auto-generated method stub } }, 10000); Intent intent = new Intent(ScanCodeActivity.this, showMessage.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(); } }}
布局文件如下:
<?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"> </RelativeLayout> <TextView android:id="@+id/text" android:layout_height="match_parent" android:layout_width="match_parent" /></RelativeLayout>
4. 新建showMessage(扫码成功后的跳转Activity)
public class showMessage extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_message); Intent intent = getIntent(); String str = intent.getStringExtra("url"); Toast.makeText(this, str,Toast.LENGTH_SHORT).show(); }}
阅读全文
0 0
- 二维码扫描--基于bingoogolapple + Android Studio 2.3.3
- Android Studio二维码扫描
- Android studio 生成二维码与扫描二维码
- Android二维码扫描:基于barcodescanner
- Android studio 二维码扫描简单例子
- Android Studio 扫描二维码并解析跳转
- Android Studio 扫描二维码并解析跳转
- android studio 中实现二维码扫描
- android之基于Zxing二维码扫描
- Android基于Zxing实现二维码,条形码扫描和生成二维码
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 高仿仿微信界面二维码扫描效果 之 Android 基于google Zxing实现二维码、条形码扫描
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Spring事务管理——事务的传播行为
- .NET之三分钟学会玩C#委托
- 编程题之——KMP算法Java实现
- HTTP中Get与Post的区别
- CodeForces
- 二维码扫描--基于bingoogolapple + Android Studio 2.3.3
- kotlin 底部导航栏(tabLayout + fragment)
- python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器
- ssm-dao层设计整理
- unity 不用事先写结构体或类的Json解析器
- CF848,第一次参加div1
- 移动端h5页面点透问题
- Linux 环境下使用g++编译C++
- 封装_练习