Android 扫描二维码和生成二维码

*//导入ZXing依赖包*

//导入依赖
compile 'pub.devrel:easypermissions:0.2.0'

//必须要实现这个EasyPermissions.PermissionCallbacks
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"/>

猜你喜欢

转载自blog.csdn.net/qq_42805756/article/details/83962502