导入ZXing依赖包,已上传到GitHub
点我去下载
//导入依赖
compile 'pub.devrel:easypermissions:0.2.0'
//必须要实现这个
public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
private Button button1;
private Button button;
//用来判断是否成功
private int REQUEST_CODE=111;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//ThreeActivity是扫描二维码
Intent intent = new Intent(getApplication(), ThreeActivity.class);
//把这个常量传过去
startActivityForResult(intent, REQUEST_CODE);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//ThreeActivity是扫描二维码
startActivity(new Intent(MainActivity.this, TwoActivity.class));
}
});
}
//回调
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
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(MainActivity.this,"解析结果"+result,Toast.LENGTH_SHORT).show();
}else if (bundle.getInt(CodeUtils.RESULT_TYPE)==CodeUtils.RESULT_FAILED){
Toast.makeText(MainActivity.this,"二维码解析失败",Toast.LENGTH_SHORT).show();
}
}
}
}
@Override
protected void onStart() {
super.onStart();
requestCodeQRCodePermissions();
}
检测权限
private void requestCodeQRCodePermissions(){
String[] perms={Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE};
if (!EasyPermissions.hasPermissions(this,perms)){
EasyPermissions.requestPermissions(this,"扫描二维码需要打开相机和闪光灯的权限",REQUEST_CODE,perms);
}
}
//动态获取权限
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);
}
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
}
}
//扫描二维码
public class ThreeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ZXingLibrary.initDisplayOpinion(this);
setContentView(R.layout.activity_three);
CaptureFragment captureFragment=new CaptureFragment();
captureFragment.setAnalyzeCallback(analyzeCallback);
getSupportFragmentManager().beginTransaction().replace(R.id.fl_zxing_container,captureFragment).commit();
captureFragment.setCameraInitCallBack(new CaptureFragment.CameraInitCallBack() {
@Override
public void callBack(Exception e) {
if (e==null){
}else {
Log.e("TAG","callBack",e);
}
}
});
}
CodeUtils.AnalyzeCallback analyzeCallback=new CodeUtils.AnalyzeCallback() {
@Override
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
Intent resultIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt(CodeUtils.RESULT_TYPE,CodeUtils.RESULT_SUCCESS);
bundle.putString(CodeUtils.RESULT_STRING,result);
resultIntent.putExtras(bundle);
ThreeActivity.this.setResult(RESULT_OK,resultIntent);
ThreeActivity.this.finish();
}
@Override
public void onAnalyzeFailed() {
Intent resultIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt(CodeUtils.RESULT_TYPE,CodeUtils.RESULT_FAILED);
bundle.putString(CodeUtils.RESULT_STRING,"");
resultIntent.putExtras(bundle);
ThreeActivity.this.setResult(RESULT_OK,resultIntent);
ThreeActivity.this.finish();
}
};
}
//生成二维码
public class TwoActivity extends AppCompatActivity {
private EditText editText;
private Button button;
private Button button1;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
editText = (EditText) findViewById(R.id.edit_content);
button = (Button) findViewById(R.id.button_content);
button1 = (Button) findViewById(R.id.button1_content);
imageView = (ImageView) findViewById(R.id.image_content);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String textContent = editText.getText().toString();
if (TextUtils.isEmpty(textContent)){
Toast.makeText(TwoActivity.this,"不能为空",Toast.LENGTH_SHORT).show();
return;
}
editText.setText("");
/* Resources res = getResources();
Bitmap logo = BitmapFactory.decodeResource(res, R.mipmap.dd);*/
Bitmap bitmap = CodeUtils.createImage(textContent, 400, 400, BitmapFactory.decodeResource(getResources(),R.mipmap.dd));
imageView.setImageBitmap(bitmap);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String textContent = editText.getText().toString();
if (TextUtils.isEmpty(textContent)){
Toast.makeText(TwoActivity.this,"不能为空",Toast.LENGTH_SHORT).show();
return;
}
editText.setText("");
Bitmap bitmap = CodeUtils.createImage(textContent, 400, 400, null);
imageView.setImageBitmap(bitmap);
}
});
}
}
//扫描二维码的xml布局
<FrameLayout
android:id="@+id/fl_zxing_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>