添加依赖
compile 'cn.yipianfengye.android:zxing-library:2.2'
添加权限
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
MyApp类 继承Application
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); ZXingLibrary.initDisplayOpinion(this); } }
点击打开扫码
- 在代码中执行打开扫描二维码界面操作
/**
* 打开默认二维码扫描界面
*/
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
这里的REQUEST_CODE是我们定义的int型常量。
- 在Activity的onActivityResult方法中接收扫描结果
/**
* 处理二维码扫描结果
*/
if (requestCode == REQUEST_CODE) {
//处理扫描结果(在界面上显示)
if (null != data) {
Bundle bundle = data.getExtras();
if (bundle == null) {
return;
}
if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
String result = bundle.getString(CodeUtils.RESULT_STRING);
Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show();
} else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
}
}
}
调用系统API打开图库
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE);
- 在Activity的onActivityResult方法中获取用户选中的图片并调用二维码图片解析API
if (requestCode == REQUEST_IMAGE) {
if (data != null) {
Uri uri = data.getData();
ContentResolver cr = getContentResolver();
try {
Bitmap mBitmap = MediaStore.Images.Media.getBitmap(cr, uri);//显得到bitmap图片
CodeUtils.analyzeBitmap(mBitmap, new CodeUtils.AnalyzeCallback() {
@Override
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();
}
@Override
public void onAnalyzeFailed() {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
}
});
if (mBitmap != null) {
mBitmap.recycle();
}
} catch (Exception e) {
e.printStackTrace();
}
}
2 生成带logo的二维码 和 二维码
public class Main2Activity extends AppCompatActivity { private EditText mEdit; private ImageView mImgs; /** * 普通二维码 */ private Button mBtnP; /** * logo二维码 */ private Button mBtnL; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initView(); /** * 生成不带logo的二维码图片 */ mBtnP.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String textContent = mEdit.getText().toString(); if (TextUtils.isEmpty(textContent)) { Toast.makeText(Main2Activity.this, "您的输入为空!", Toast.LENGTH_SHORT).show(); return; } mEdit.setText(""); Bitmap mBitmap = CodeUtils.createImage(textContent, 400, 400, null); mImgs.setImageBitmap(mBitmap); } }); mBtnL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String textContent = mEdit.getText().toString(); if (TextUtils.isEmpty(textContent)) { Toast.makeText(Main2Activity.this, "您的输入为空!", Toast.LENGTH_SHORT).show(); return; } mEdit.setText(""); Bitmap mBitmap = CodeUtils.createImage(textContent, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); mImgs.setImageBitmap(mBitmap); } }); } private void initView() { mEdit = (EditText) findViewById(R.id.edit); mImgs = (ImageView) findViewById(R.id.imgs); mBtnP = (Button) findViewById(R.id.btn_p); mBtnL = (Button) findViewById(R.id.btn_l); } }
布局: activity_main2.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bw.erweima.Main2Activity"> <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imgs" android:layout_width="150dp" android:layout_height="150dp" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:text="普通二维码" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edit" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="12dp" android:id="@+id/btn_p" /> <Button android:text="logo二维码" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/btn_p" android:layout_toRightOf="@+id/btn_p" android:layout_toEndOf="@+id/btn_p" android:id="@+id/btn_l" /> </RelativeLayout>