Skip to content

Commit

Permalink
Merge branch 'feature/v2' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
YOOJIA.CHEN committed Sep 28, 2016
2 parents 297b7b5 + b506978 commit 8fdb7d5
Show file tree
Hide file tree
Showing 52 changed files with 974 additions and 1,386 deletions.
95 changes: 14 additions & 81 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,36 @@
# ZXingMini ZXing开源库的精简版

基于ZXing Android实现的二维码扫描支持库。
包括`生成二维码图片``相机扫描二维码图片即时解码`两部分功能
包括`生成二维码图片``解析二维码图片``相机扫描即时解码`三部分功能

## 本项目作以下优化:
## 与原ZXingMini项目对比

1. 已创建QRCode Library,可以直接通过dependencies引入依赖使用。
2. 精简ZXing官方项目的例子,app模块为完整使用演示代码
- NextQRCode做了重大架构修改,原ZXingMini项目与当前NextQRCode不兼容;
- 相机扫描即时解码模块,使用Camera2包

## 依赖

## 生成二维码图片

ZXingMini已对ZXing生成二维码图做了封装,通过 QRCodeEncode 类可以将文本内容生成二维码图片。

```java

final int dimension = 500;
final QRCodeEncode encoder = new QRCodeEncode.Builder()
.setBackgroundColor(0xFFFFFF) // 指定背景颜色,默认为白色
.setCodeColor(0xFF000000) // 指定编码块颜色,默认为黑色
.setOutputBitmapWidth(dimension) // 生成图片宽度
.setOutputBitmapHeight(dimension) // 生成图片高度
.setOutputBitmapPadding(0) // 设置为没有白边
.build();

final Bitmap _QRCodeImage = encoder.encode("你的文本内容");
// 解码时间大概在 160ms 左右,建议用AsyncTask来处理。

```

## 对二维码图片解码

ZXingMini已对ZXing二维码解码部分做了封装。通过 QRCodeDecode 类可以将二维码图片解码为文本内容。

```java

Bitmap _QRCodeImage = ....
QRCodeDecode decoder = new QRCodeDecode.Builder().build();
String content = decoder.decod(_QRCodeImage);

```
## 生成二维码图片

通常,二维码解码与相机联合使用。ZXingMini对相机管理的代码也做了简化,使用起来非常简单。只需要简单的几行代码,如下:

```java
#### 二维码图片新增特性

private QRCodeSupport mQRCodeScanSupport;
###### 1、设置像素单位内边距 - Padding

private final Handler mHandler = new Handler();

private final Runnable mDelayAutoTask = new Runnable() {
@Override
public void run() {
mQRCodeScanSupport.startAuto(500);
}
};
###### 2、在二维码中间增加小图标 - CenterImage

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_scan);

ImageView capturePreview = (ImageView) findViewById(R.id.decode_preview);
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.capture_preview_view);
###### 3、设置背景颜色 - BackgroundColor

mQRCodeScanSupport = new QRCodeSupport(surfaceView, new QRCodeSupport.OnResultListener() {
@Override
public void onScanResult(String notNullResult) {
Toast.makeText(QRCodeScanActivity.this, "扫描结果: " + notNullResult, Toast.LENGTH_SHORT).show();
}
});
mQRCodeScanSupport.setCapturePreview(capturePreview);

}
###### 4、设置前景颜色 - ForegroundColor

@Override
protected void onResume() {
super.onResume();
mQRCodeScanSupport.onResume();
mHandler.postDelayed(mDelayAutoTask, 500);
}

@Override
protected void onPause() {
super.onPause();
mQRCodeScanSupport.onPause();
mHandler.removeCallbacks(mDelayAutoTask);
}
}
###### 5、增加Bitmap处理处理接口 - bitmapProcessor

```
## 解析二维码图片

## 依赖

dependencies {
...
compile 'com.google.zxing:core:3.2.1'
compile 'com.google.zxing:android-core:3.2.1'
compile 'com.github.yoojia:zxing:0.7@aar'
}
## 相机即时解码
15 changes: 9 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
applicationId "com.github.yoojia.zxing"
minSdkVersion 13
targetSdkVersion 21
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
Expand All @@ -21,6 +21,9 @@ android {

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':zxing')
compile 'com.android.support:appcompat-v7:23.0.0'

compile project(':qrcode')
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'
}
7 changes: 2 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.yoojia.zxing" >



<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand All @@ -21,9 +19,8 @@
</intent-filter>
</activity>

<activity android:name=".app.QRCodeShowActivity" android:screenOrientation="portrait"/>
<activity android:name=".app.QRCodeScanActivity" android:screenOrientation="portrait"/>
<activity android:name=".app.CameraActivity" android:screenOrientation="portrait"/>
<activity android:name=".app.QRCodeShowActivity"/>
<activity android:name=".app.QRCodeScanActivity"/>
</application>

</manifest>
63 changes: 0 additions & 63 deletions app/src/main/java/com/github/yoojia/zxing/app/CameraActivity.java

This file was deleted.

22 changes: 7 additions & 15 deletions app/src/main/java/com/github/yoojia/zxing/app/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,40 @@
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import com.github.yoojia.zxing.R;

/**
* @author : Yoojia.Chen (yoojia.chen@gmail.com)
* @date : 2015-03-03
*/
public class MainActivity extends ActionBarActivity {
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button show = (Button) findViewById(R.id.qrcode_show);
show.setOnClickListener(new View.OnClickListener() {

// Show QRCode
findViewById(R.id.qrcode_show).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, QRCodeShowActivity.class);
startActivity(intent);
}
});

Button scan = (Button) findViewById(R.id.qrcode_scan);
scan.setOnClickListener(new View.OnClickListener() {
// Generate QRCode
findViewById(R.id.qrcode_scan).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, QRCodeScanActivity.class);
startActivity(intent);
}
});

Button camera = (Button) findViewById(R.id.camera);
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CameraActivity.class);
startActivity(intent);
}
});

}

}
Loading

0 comments on commit 8fdb7d5

Please sign in to comment.