Skip to content

Commit 45fe9fa

Browse files
committed
添加示例
1 parent 0328b07 commit 45fe9fa

25 files changed

+436
-116
lines changed

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# ZXingLib
22

3-
[![](https://jitpack.io/v/helen-x/JitpackReleaseDemo.svg)](https://jitpack.io/#Dkaishu/ZXingLib)
4-
3+
[![](https://jitpack.io/v/Dkaishu/ZXingLib.svg)](https://jitpack.io/#Dkaishu/ZXingLib)
54
快速集成:二维码扫描及生成
65

76
- 二维码扫描识别
@@ -26,7 +25,7 @@ To get the project into your build:
2625
- Step 2. Add the dependency
2726

2827
dependencies {
29-
compile 'com.github.Dkaishu:ZXingLib:V1.0.2'
28+
compile 'com.github.Dkaishu:ZXingLib:V1.0.3'
3029
}
3130

3231
That's it! Add then:
@@ -147,7 +146,7 @@ That's it! Add then:
147146

148147
// 三、替换添加扫描控件
149148

149+
- 其他待补充
150150

151-
152-
153-
- 其他待补充
151+
- TODO
152+
下版本将默认界面中闪光灯去掉,因为使用者自己去实现更加合理。

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ dependencies {
2323
compile fileTree(dir: 'libs', include: ['*.jar'])
2424
compile 'com.android.support:appcompat-v7:26.+'
2525
compile project(':zxinglib')
26-
// compile 'com.github.Dkaishu:ZXingLib:V1.0.2'
26+
// compile 'com.github.Dkaishu:ZXingLib:V1.0.3'
2727
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<category android:name="android.intent.category.LAUNCHER" />
3131
</intent-filter>
3232
</activity>
33+
<activity android:name=".CustomActivity"/>
3334
</application>
3435

3536
</manifest>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.dkaishu.zxinglibexample;
2+
3+
import android.content.Intent;
4+
import android.graphics.Bitmap;
5+
import android.os.Bundle;
6+
import android.support.v7.app.AppCompatActivity;
7+
8+
import com.dkaishu.zxinglib.activity.CaptureFragment;
9+
import com.dkaishu.zxinglib.activity.CodeUtils;
10+
11+
/**
12+
* Created by Administrator on 2018/2/27.
13+
*/
14+
15+
public class CustomActivity extends AppCompatActivity {
16+
17+
private CaptureFragment captureFragment;
18+
19+
@Override
20+
protected void onCreate(Bundle savedInstanceState) {
21+
super.onCreate(savedInstanceState);
22+
setContentView(R.layout.activity_custom);
23+
captureFragment = new CaptureFragment();
24+
// 为二维码扫描界面设置定制化界面
25+
CodeUtils.setFragmentArgs(captureFragment, R.layout.custom_camera);
26+
captureFragment.setAnalyzeCallback(analyzeCallback);
27+
getSupportFragmentManager().beginTransaction().replace(R.id.fl_my_container, captureFragment).commit();
28+
}
29+
30+
31+
/**
32+
* 二维码解析回调函数
33+
*/
34+
CodeUtils.AnalyzeCallback analyzeCallback = new CodeUtils.AnalyzeCallback() {
35+
@Override
36+
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
37+
Intent resultIntent = new Intent();
38+
Bundle bundle = new Bundle();
39+
bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_SUCCESS);
40+
bundle.putString(CodeUtils.RESULT_STRING, result);
41+
resultIntent.putExtras(bundle);
42+
CustomActivity.this.setResult(RESULT_OK, resultIntent);
43+
CustomActivity.this.finish();
44+
}
45+
46+
@Override
47+
public void onAnalyzeFailed() {
48+
Intent resultIntent = new Intent();
49+
Bundle bundle = new Bundle();
50+
bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_FAILED);
51+
bundle.putString(CodeUtils.RESULT_STRING, "");
52+
resultIntent.putExtras(bundle);
53+
CustomActivity.this.setResult(RESULT_OK, resultIntent);
54+
CustomActivity.this.finish();
55+
}
56+
};
57+
}
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
2+
/*
3+
******************************* Copyright (c)*********************************\
4+
**
5+
** (c) Copyright 2015, 蒋朋, china, qd. sd
6+
** All Rights Reserved
7+
**
8+
** By()
9+
**
10+
**
11+
**-----------------------------------版本信息------------------------------------
12+
** 版 本: V0.1
13+
**
14+
**------------------------------------------------------------------------------
15+
********************************End of Head************************************\
16+
*/
17+
package com.dkaishu.zxinglibexample;
18+
19+
import android.annotation.TargetApi;
20+
import android.content.ContentUris;
21+
import android.content.Context;
22+
import android.database.Cursor;
23+
import android.net.Uri;
24+
import android.os.Environment;
25+
import android.provider.DocumentsContract;
26+
import android.provider.MediaStore;
27+
28+
/**
29+
* 文 件 名: ImageUtil
30+
* 创 建 人: 蒋朋
31+
* 创建日期: 16-8-22 11:36
32+
* 描 述:
33+
* 修 改 人:
34+
* 修改时间:
35+
* 修改备注:
36+
*/
37+
38+
public class ImageUtil {
39+
/**
40+
* 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换
41+
*
42+
* @param context
43+
* @param imageUri
44+
*/
45+
@TargetApi(19)
46+
public static String getImageAbsolutePath(Context context, Uri imageUri) {
47+
if (context == null || imageUri == null)
48+
return null;
49+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, imageUri)) {
50+
if (isExternalStorageDocument(imageUri)) {
51+
String docId = DocumentsContract.getDocumentId(imageUri);
52+
String[] split = docId.split(":");
53+
String type = split[0];
54+
if ("primary".equalsIgnoreCase(type)) {
55+
return Environment.getExternalStorageDirectory() + "/" + split[1];
56+
}
57+
} else if (isDownloadsDocument(imageUri)) {
58+
String id = DocumentsContract.getDocumentId(imageUri);
59+
Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
60+
return getDataColumn(context, contentUri, null, null);
61+
} else if (isMediaDocument(imageUri)) {
62+
String docId = DocumentsContract.getDocumentId(imageUri);
63+
String[] split = docId.split(":");
64+
String type = split[0];
65+
Uri contentUri = null;
66+
if ("image".equals(type)) {
67+
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
68+
} else if ("video".equals(type)) {
69+
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
70+
} else if ("audio".equals(type)) {
71+
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
72+
}
73+
String selection = MediaStore.Images.Media._ID + "=?";
74+
String[] selectionArgs = new String[]{split[1]};
75+
return getDataColumn(context, contentUri, selection, selectionArgs);
76+
}
77+
} // MediaStore (and general)
78+
else if ("content".equalsIgnoreCase(imageUri.getScheme())) {
79+
// Return the remote address
80+
if (isGooglePhotosUri(imageUri))
81+
return imageUri.getLastPathSegment();
82+
return getDataColumn(context, imageUri, null, null);
83+
}
84+
// File
85+
else if ("file".equalsIgnoreCase(imageUri.getScheme())) {
86+
return imageUri.getPath();
87+
}
88+
return null;
89+
}
90+
91+
public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
92+
Cursor cursor = null;
93+
String column = MediaStore.Images.Media.DATA;
94+
String[] projection = {column};
95+
try {
96+
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
97+
if (cursor != null && cursor.moveToFirst()) {
98+
int index = cursor.getColumnIndexOrThrow(column);
99+
return cursor.getString(index);
100+
}
101+
} finally {
102+
if (cursor != null)
103+
cursor.close();
104+
}
105+
return null;
106+
}
107+
108+
/**
109+
* @param uri The Uri to check.
110+
* @return Whether the Uri authority is ExternalStorageProvider.
111+
*/
112+
public static boolean isExternalStorageDocument(Uri uri) {
113+
return "com.android.externalstorage.documents".equals(uri.getAuthority());
114+
}
115+
116+
/**
117+
* @param uri The Uri to check.
118+
* @return Whether the Uri authority is DownloadsProvider.
119+
*/
120+
public static boolean isDownloadsDocument(Uri uri) {
121+
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
122+
}
123+
124+
/**
125+
* @param uri The Uri to check.
126+
* @return Whether the Uri authority is MediaProvider.
127+
*/
128+
public static boolean isMediaDocument(Uri uri) {
129+
return "com.android.providers.media.documents".equals(uri.getAuthority());
130+
}
131+
132+
/**
133+
* @param uri The Uri to check.
134+
* @return Whether the Uri authority is Google Photos.
135+
*/
136+
public static boolean isGooglePhotosUri(Uri uri) {
137+
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
138+
}
139+
}

app/src/main/java/com/dkaishu/zxinglibexample/MainActivity.java

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
package com.dkaishu.zxinglibexample;
22

33
import android.content.Intent;
4+
import android.graphics.Bitmap;
5+
import android.graphics.BitmapFactory;
6+
import android.net.Uri;
47
import android.os.Bundle;
58
import android.support.v7.app.AppCompatActivity;
69
import android.view.View;
710
import android.widget.Button;
11+
import android.widget.ImageView;
812
import android.widget.Toast;
913

1014
import com.dkaishu.zxinglib.activity.CaptureActivity;
1115
import com.dkaishu.zxinglib.activity.CaptureFragment;
1216
import com.dkaishu.zxinglib.activity.CodeUtils;
1317

1418
public class MainActivity extends AppCompatActivity {
15-
private static final String TAG = "MainActivity";
19+
private static final String TAG = "MainActivity";
1620
/**
1721
* 扫描跳转Activity RequestCode
1822
*/
19-
public static final int REQUEST_CODE = 111;
23+
public static final int REQUEST_CODE = 111;
24+
public static final int REQUEST_IMAGE = 112;
25+
26+
private ImageView imageView;
27+
2028
@Override
2129
protected void onCreate(Bundle savedInstanceState) {
2230
super.onCreate(savedInstanceState);
2331
setContentView(R.layout.activity_main);
24-
Button bt1= (Button) findViewById(R.id.bt_1);
25-
bt1.setOnClickListener(new View.OnClickListener() {
26-
@Override
27-
public void onClick(View view) {
28-
CaptureFragment.showFlashLight(true);
29-
Intent intent = new Intent(getApplication(), CaptureActivity.class);
30-
startActivityForResult(intent, REQUEST_CODE);
31-
}
32-
});
32+
imageView = (ImageView) findViewById(R.id.iv_qr);
3333
}
3434

3535
@Override
@@ -52,10 +52,10 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
5252
}
5353
}
5454
}
55-
/*
56-
*//**
57-
* 选择系统图片并解析
58-
*//*
55+
56+
57+
/*选择系统图片并解析*/
58+
5959
else if (requestCode == REQUEST_IMAGE) {
6060
if (data != null) {
6161
Uri uri = data.getData();
@@ -76,11 +76,36 @@ public void onAnalyzeFailed() {
7676
}
7777
}
7878
}
79-
79+
/*
8080
else if (requestCode == REQUEST_CAMERA_PERM) {
8181
Toast.makeText(this, "从设置页面返回...", Toast.LENGTH_SHORT)
8282
.show();
8383
}*/
8484
}
8585

86+
87+
public void selectPic(View view) {
88+
Intent intent = new Intent();
89+
intent.setAction(Intent.ACTION_PICK);
90+
intent.setType("image/*");
91+
startActivityForResult(intent, REQUEST_IMAGE);
92+
}
93+
94+
public void startCapture(View view) {
95+
CaptureFragment.showFlashLight(true);
96+
Intent intent = new Intent(getApplication(), CaptureActivity.class);
97+
startActivityForResult(intent, REQUEST_CODE);
98+
}
99+
100+
public void startCustomActivity(View view) {
101+
Intent intent = new Intent(getApplication(), CustomActivity.class);
102+
startActivityForResult(intent, REQUEST_CODE);
103+
}
104+
105+
public void generateQR(View view) {
106+
Bitmap Bitmap = CodeUtils.createImage("生成二维码", 300, 300
107+
, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
108+
imageView.setImageBitmap(Bitmap);
109+
}
110+
86111
}
2.1 KB
Loading
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:id="@+id/activity_second"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent">
6+
<FrameLayout
7+
android:id="@+id/fl_my_container"
8+
android:layout_width="match_parent"
9+
android:layout_height="match_parent"
10+
/>
11+
12+
13+
<LinearLayout
14+
android:layout_width="match_parent"
15+
android:layout_height="wrap_content"
16+
android:paddingBottom="15dp"
17+
android:paddingTop="15dp"
18+
android:layout_gravity="bottom|center_horizontal"
19+
android:orientation="horizontal"
20+
android:background="#AA333333"
21+
>
22+
23+
<LinearLayout
24+
android:id="@+id/linear1"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:layout_weight="1"
28+
android:orientation="vertical"
29+
android:gravity="center_horizontal"
30+
>
31+
32+
<TextView
33+
android:layout_width="wrap_content"
34+
android:layout_height="wrap_content"
35+
android:text="这里是自定义的界面"
36+
android:layout_marginTop="10dp"
37+
android:textColor="#FFFFFF"
38+
/>
39+
</LinearLayout>
40+
41+
</LinearLayout>
42+
43+
44+
</FrameLayout>

0 commit comments

Comments
 (0)