1. 程式人生 > >二維碼掃描,生成

二維碼掃描,生成

首先是生成預設二維碼頁面

在點選事件裡跳轉到預設二維碼

 case R.id.but1:
                //開啟預設二維碼掃描頁面
                Intent intent = new Intent(MainActivity.this,CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
                break;

這裡需要回傳值

 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        /*
        開啟掃一掃掃描解析圖片
         */
        if(requestCode==REQUEST_CODE){
            if(data!=null){
                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 {
                    Toast.makeText(MainActivity.this, "解析二維碼失敗", Toast.LENGTH_LONG).show();
                }
            }
        }
}

效果圖

生成二維碼

如果想自己生成一個二維碼圖片,新定義一個activity,進行跳轉

  case R.id.but4:
                //生成自定義二維碼頁面
               startActivity(new Intent(MainActivity.this,Main2Activity.class));

                break;

到新的activity

輸入文字框內容,進行生成二維碼操作



public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

    private EditText edit;
    private Button addlog;
    private Button nolog;
    private Bitmap mMBitmap;
    private ImageView QRcode;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
    }

    private void initView() {
        edit = (EditText) findViewById(R.id.edit);
        addlog = (Button) findViewById(R.id.addlog);
        nolog = (Button) findViewById(R.id.nolog);

        addlog.setOnClickListener(this);
        nolog.setOnClickListener(this);
        QRcode = (ImageView) findViewById(R.id.QRcode);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //帶log的二維碼
            case R.id.addlog:
                //輸入要生成二維碼內容
                String textString = edit.getText().toString().trim();
                if (TextUtils.isEmpty(textString)) {
                    Toast.makeText(Main2Activity.this, "您的輸入為空!", Toast.LENGTH_SHORT).show();
                    return;
                }
                //開始生成二維碼
                edit.setText("");
                mMBitmap = CodeUtils.createImage(textString, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
                QRcode.setImageBitmap(mMBitmap);

                break;
            case R.id.nolog://不帶log的二維碼
                String textString2 = edit.getText().toString().trim();
                if (TextUtils.isEmpty(textString2)) {
                    Toast.makeText(Main2Activity.this, "您的輸入為空!", Toast.LENGTH_SHORT).show();
                    return;
                }
                //開始生成二維碼
                edit.setText("");
                mMBitmap = CodeUtils.createImage(textString2, 400, 400, null);
                QRcode.setImageBitmap(mMBitmap);

                break;
        }
    }


}

效果圖如下