Android 最简单的二维码和条形码扫描生成工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/male09/article/details/81077796

Android 最简单的二维码和条形码扫描生成工具

本项目是一个AndroidStudio项目

主要功能:

生成条形码

条形码的内容自定义
扫描条形码
生成二维码
二维码内容自定义
扫描条形码
扫描形式:
手动扫描
机器自动扫码

=================================================================

使用方法:快速进入

步奏1:

AndroidStudio导入项目库:

  compile 'com.hongyelinggu:scancode:1.0.0'

步骤2:

调用自己项目用到功能,现在把项目包含的功能做以示范

注意: 我们要用到的无论是生成二维码还是扫描二维码都是一个Activity,所以我们要做的就是传入参数启动Activity 现在我们了解一下方法:实例

   intent = new Intent(this, CreateCodeActivity.class);
   intent.putExtra(Constant.REQUEST_SCAN_MODE, Constant.REQUEST_SCAN_MODE_ALL_MODE);
   intent.putExtra(Constant.CREAL_CODE_KEY, "1234567890CSDCECECECSC");
   startActivity(intent);

该方法是一个同时生成条形码和二维码的方法,现在以此为例,做详细说明 该方法中有两个重要参数:

● Constant.REQUEST_SCAN_MODE 扫描和生成的模板类型
● Constant.Constant.CREAL_CODE_KEY 生成图形的内容

参数说明:

引入包名 com.hylg.scancode.utils

类名:Constant

类参数说明:

/**
* 生成二维码/条码 内容
*/
public static final String CREAL_CODE_KEY = "CreateQRKey";

  /**
   * 扫描方式 KEY
   * 普通类型,扫完即关闭 REQUEST_SCAN_TYPE_COMMON
   * 手动连续扫描,扫完不关闭界面 REQUEST_SCAN_TYPE_REGIST
   * 自动连续扫码,扫完不关闭界面 REQUEST_SCAN_TYPE_REGIST
   */
 public static final String REQUEST_SCAN_TYPE = "ScanType";
  /**
   * 普通类型,扫完即关闭
   */
  public static final int REQUEST_SCAN_TYPE_COMMON = 0X0;
  /**
   * 手动连续扫描,扫完不关闭界面
   * 其他类可以从REQUEST_SCAN_MODE_ALL_DATA获取扫描到的数据
   */
  public static final int REQUEST_SCAN_TYPE_REGIST = 0X1;
  /**
   * 自动连续扫码,扫完不关闭界面
   * 其他类可以从REQUEST_SCAN_MODE_ALL_DATA获取扫描到的数据
   */
  public static final int REQUEST_SCAN_TYPE_REGIST_AUTO = 0X2;


  /**
   * 扫描/生成类型 KEY
   * 条形码或者二维码:REQUEST_SCAN_MODE_ALL_MODE
   * 条形码: REQUEST_SCAN_MODE_BARCODE_MODE
   * 二维码:REQUEST_SCAN_MODE_QRCODE_MODE
   */
  public static final String REQUEST_SCAN_MODE = "ScanCreatMode";
  /**
   * 条形码: REQUEST_SCAN_MODE_BARCODE_MODE
   */
  public static final int REQUEST_SCAN_MODE_BARCODE_MODE = 0X100;
  /**
   * 二维码:REQUEST_SCAN_MODE_ALL_MODE
   */
  public static final int REQUEST_SCAN_MODE_QRCODE_MODE = 0X200;
  /**
   * 条形码/二维码:REQUEST_SCAN_MODE_ALL_MODE
   */
  public static final int REQUEST_SCAN_MODE_ALL_MODE = 0X300;

  /**
   * 扫码结果码code
   */
  public static final int REQUEST_SCAN_MODE_CODE = 0X118;

  /**
   * 持续扫描到的数据
   */
  public static String REQUEST_SCAN_MODE_ALL_DATA = null;

两个重要的activity

生成图形Activity: CreateCodeActivity

接收参数: 
  > 1.生成图像的类型 Constant.REQUEST_SCAN_MODE   
      >> 图形类型详情查看Constant类
  > 2.生成图形的内容 Constant.CREAL_CODE_KEY
      >> 图形的内容
 都是放在intent中传递

扫描图形Activity: CommonScanActivity

接收参数:
  >1.扫描图形类型 Constant.REQUEST_SCAN_MODE:
    >> 图形类型详情查看Constant类  
  >2.扫描图形方式 Constant.REQUEST_SCAN_TYPE: 
    >> 图形扫描方式详情查看Constant类  

回调方法:

    @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent intentDta) {
      super.onActivityResult(requestCode, resultCode, intentDta);
      if (intentDta != null) {
          String extra = intentDta.getStringExtra(Constant.REQUEST_SCAN_MODE);
          textView.setText(extra);
          System.out.println("扫码测试===========data==" +extra );
      }
  }

如果是连续不断的扫描就得开线程循环不断的判断Constant.REQUEST_SCAN_MODE_ALL_DATA数据是否是null

    /**
    * 测试扫描数据
    */
   private void testData() {
       new Thread(new Runnable() {
           @Override
           public void run() {
               try {
                   while (true) {
                       if (Constant.REQUEST_SCAN_MODE_ALL_DATA != null) {
                           System.out.println("扫码测试=====001===" + Constant.REQUEST_SCAN_MODE_ALL_DATA);
                           Constant.REQUEST_SCAN_MODE_ALL_DATA = null;
                       }
                       Thread.sleep(500);
                   }
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       }).start();
   }

需要用到的权限

    <!-- 二维码相关权限 -->
   <uses-permission android:name="android.permission.VIBRATE"/>
   <uses-permission android:name="android.permission.CAMERA"/>

   <uses-feature android:name="android.hardware.camera"/>
   <uses-feature android:name="android.hardware.camera.autofocus"/>
   <uses-feature android:name="android.hardware.camera.flash"/>

   <uses-permission android:name="android.permission.FLASHLIGHT"/>
   <uses-permission android:name="android.permission.READ_CONTACTS"/>
   <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

以上内容会不定期的维护,希望能帮助到哟用的人


猜你喜欢

转载自blog.csdn.net/male09/article/details/81077796
今日推荐