1

main Activity.java

 import com.google.zxing.integration.android.IntentIntegrator;
 import com.google.zxing.integration.android.IntentResult;

import java.security.MessageDigest;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class qrscan extends AppCompatActivity {
private  Button scan_butn;
private String output;
private TextView name, decryp;
private  String AES= "AES";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qrscan);
    name =(TextView) findViewById(R.id.namedis_scn);
    decryp=(TextView) findViewById(R.id.decyrpt);

  final String Name= getIntent().getExtras().getString("NAME");
   final String Passwd = getIntent().getExtras().getString("PASSWORD");
    scan_butn = (Button) findViewById(R.id.login_scn);
    name.setText(Name);

    final Activity activity = this;
    scan_butn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            try {
                output = encrypt(Name,Passwd);

            }
            catch (Exception e) {
                e.printStackTrace();
            }

            IntentIntegrator integrator = new IntentIntegrator(activity);
            integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
            integrator.setPrompt("SCAN");
            integrator.setCameraId(0);
            integrator.setBeepEnabled(false);
            integrator.setBarcodeImageEnabled(false);
            integrator.initiateScan();
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode,data);
    if (result != null) {
        if (result.getContents()==null){
            Toast.makeText(this, "you cancelled the scanning", Toast.LENGTH_LONG).show();
        }
        else {
            (Toast.makeText(this , result.getContents(),Toast.LENGTH_LONG)).show();
            if (output.contentEquals(result.getContents())){
                Toast.makeText(this,"content matched",Toast.LENGTH_SHORT).show();
                finish();
                startActivity(new Intent(this,AVS2.class));

            }else {
                Toast.makeText(this,"content not matched",Toast.LENGTH_SHORT).show();
                finish();
                startActivity(new Intent(this,AVS1.class));
            }
        }
    }
    else{
        super.onActivityResult(requestCode, resultCode, data);
    }
}
private String encrypt(String Data, String passwd) throws Exception {
    SecretKeySpec key = generateKey(passwd);
    Cipher c= Cipher.getInstance(AES);
    c.init(Cipher.ENCRYPT_MODE,key);
    byte[] encVal = c.doFinal(Data.getBytes());
    String encryptedValue = Base64.encodeToString(encVal,Base64.DEFAULT);
    return encryptedValue;
}
private SecretKeySpec generateKey(String passwd) throws Exception {
    final MessageDigest digest = MessageDigest.getInstance("SHA-256");
    byte[] bytes = passwd.getBytes("UTF-8");
    digest.update(bytes, 0, bytes.length);
    byte[] key = digest.digest();
    SecretKeySpec secretKeySpec =new SecretKeySpec(key, "AES");
    return secretKeySpec;
}
}

i am able to scan qr from camera but i want also to let user scan image from phone photos or gallery and what all changes can be made to the code... please help........ zxing libraryr used

your reply will be apprieciated

thanks in advance......................................................

Raj K
  • 41
  • 7

0 Answers0