android一般都是使用ZXing Android Embedded这个库来进行二维码操作!,我以前也没弄过这个,也有一些不错第三方库,也是看别人的博客现在第一次弄各位大佬有提议的可以说
编码:使用字符串生成图片。
解码:解析图片中的字符串。
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
implementation 'com.google.zxing:core:3.3.0'
Activity
boolean isTure=true,isFalse=true;
String[] pers;
pers=new String[]{Manifest.permission.CAMERA};
if(Build.VERSION_CODES.M>22){
for (int i = 0; i 22){
// if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
// ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},1);
// }else{
//
// }
// }else{
//
// }
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator intentIntegrator = new IntentIntegrator(MainActivity.this);
intentIntegrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);//扫码的类型,可选:一维码,二维码
intentIntegrator.setPrompt("请对准二维码");//提示语
intentIntegrator.setBeepEnabled(true);//扫完之后 叮的一声
intentIntegrator.setCaptureActivity(ScanActivity.class);////自定义扫码界面
intentIntegrator.initiateScan();//初始化扫码
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result!=null){
if(result.getContents()==null){
Toast.makeText(this, "取消", Toast.LENGTH_SHORT).show();
Log.e("##","失败");
}else{
Toast.makeText(this, "成功"+result.getContents(), Toast.LENGTH_SHORT).show();
Log.e("##","成功!");
}
}else{
super.onActivityResult(requestCode,resultCode,data);
}
}
@SuppressLint("NewApi")
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
//有权限
}else{
Toast.makeText(this, "请手动打开相机权限", Toast.LENGTH_SHORT).show();
}
break;
case 100:
for (int i = 0; i
CaptureManager captureManager;
ImageButton imageButton;
DecoratedBarcodeView barcodeView;
boolean bTorch=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
barcodeView=findViewById(R.id.dbv);
imageButton=findViewById(R.id.but_light);
barcodeView.setTorchListener(new DecoratedBarcodeView.TorchListener() {
@SuppressLint("NewApi")
@Override
public void onTorchOn() {
imageButton.setBackground(getResources().getDrawable(R.drawable.flashlight_open));
bTorch=true;
}
@SuppressLint("NewApi")
@Override
public void onTorchOff() {
imageButton.setBackground(getResources().getDrawable(R.drawable.flashlight_close));
bTorch = false;
}
});
//打开闪光灯
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bTorch){
barcodeView.setTorchOff();
}else{
barcodeView.setTorchOn();
}
}
});
captureManager=new CaptureManager(this,barcodeView);
captureManager.initializeFromIntent(getIntent(),savedInstanceState);
captureManager.decode();
}
@Override
protected void onResume() {
super.onResume();
captureManager.onResume();
}
@Override
protected void onPause() {
super.onPause();
captureManager.onPause();
barcodeView.setTorchOff();
}
@Override
protected void onDestroy() {
super.onDestroy();
captureManager.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
captureManager.onSaveInstanceState(outState);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
captureManager.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}