Android QR 코드 스 캔 및 QR 코드 생 성 기능

앱 개발 에 서 는 QR 코드 스 캔 기능 과 QR 코드 생 성 수요 가 자주 발생 한다.Android 는 대부분 zxing 이라는 오픈 소스 프로젝트 의 스 캔 기능 을 통합 합 니 다오픈 소스 프로젝트 주소구체 적 인 집적 절 차 를 소개 하 겠 습 니 다.
통합 절차
참조 데모
1.demo 는 다음 과 같이 보 여 줍 니 다.
1.1 demo 홈 페이지
 
1.2 스캐닝 인터페이스
 
수요 에 따라 수정 할 수 있 습 니 다.제 실제 프로젝트 의 화면 캡 처 는 다음 과 같 습 니 다.
 
1.3 QR 코드 생 성
 
2.파일 도입
2.1 demo 를 다운로드 하고 demo 의 com.google.zxing 5 개의 가방 과 com.utils 가방 을 복사 하여 자신의 프로젝트 에 도입 합 니 다.
 
2.2 본 프로젝트 demo 의 레이아웃 activity 복사scanner.xml 와 toolbarscanner.xml
 
2.3 자원 디 렉 터 리 raw 를 이 항목 에 복사 하면 beep.ogg 는 스 캔 에 성 공 했 을 때의 알림 음 입 니 다.
 
2.4 파일 내용 attrs.xml/colors.xml/ids.xml 세 파일 을 복사 하거나 병합 합 니 다.
 
2.5 build.gradle 파일 에 인용 추가

compile 'com.google.zxing:core:3.3.0'
2.6 R 파일 참조 경 로 를 수정 하여 다음 4 개 파일 의 R 파일 참조 주 소 를 수정 하고 본 항목 의 R 을 참조 합 니 다.

//com.google            
com.google.zxing.activity.CaptureActivity
com.google.zxing.decoding.CaptureActivityHandler
com.google.zxing.decoding.DecodeHandler
com.google.zxing.view.ViewfinderView
3.권한 설정
3.1 AndroidManifest.xml 에 권한 신청 코드 추가:

<uses-permission android:name="android.permission.INTERNET" /> <!--      -->
 <uses-permission android:name="android.permission.VIBRATE" /> <!--      -->
 <uses-permission android:name="android.permission.CAMERA" /> <!--       -->
 <uses-feature android:name="android.hardware.camera.autofocus" /> <!--        -->
4.기능 실현
위 와 같은 통합 을 마 친 후 Capture Activity 를 호출 하면 스 캔 기능 을 실현 할 수 있 습 니 다.MainActivity 소스 코드 부분:

public class MainActivity extends AppCompatActivity {
 @BindView(R.id.openQrCodeScan)
 Button openQrCodeScan;
 @BindView(R.id.text)
 EditText text;
 @BindView(R.id.CreateQrCode)
 Button CreateQrCode;
 @BindView(R.id.QrCode)
 ImageView QrCode;
 @BindView(R.id.qrCodeText)
 TextView qrCodeText;
 //         
 private int REQUEST_CODE = 0x01;
 //       
 private int RESULT_OK = 0xA1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ButterKnife.bind(this);
 }
 @OnClick({R.id.openQrCodeScan, R.id.CreateQrCode})
 public void onClick(View view) {
 switch (view.getId()) {
  case R.id.openQrCodeScan:
  //         
  if(CommonUtil.isCameraCanUse()){
   Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
   startActivityForResult(intent, REQUEST_CODE);
  }else{
   Toast.makeText(this,"            !",Toast.LENGTH_SHORT).show();
  }
  break;
  case R.id.CreateQrCode:
  try {
   //         
   String str = text.getText().toString().trim();
   if(str != null && !"".equals(str.trim())){
   //                     
   Bitmap mBitmap = EncodingHandler.createQRCode(text.getText().toString(), 500);
   if(mBitmap != null){
    Toast.makeText(this,"       !",Toast.LENGTH_SHORT).show();
    QrCode.setImageBitmap(mBitmap);
   }
   }else{
   Toast.makeText(this,"        !",Toast.LENGTH_SHORT).show();
   }
  } catch (WriterException e) {
   e.printStackTrace();
  }
  break;
 }
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 //      
 if (resultCode == RESULT_OK) { //RESULT_OK = -1
  Bundle bundle = data.getExtras();
  String scanResult = bundle.getString("qr_scan_result");
  //           
  qrCodeText.setText(scanResult);
 }
 }
}
5.소스 코드 분석
5.1 QR 코드 스 캔 인터페이스 열기

//         
  if(CommonUtil.isCameraCanUse()){
   Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
   startActivityForResult(intent, REQUEST_CODE);
  }else{
   Toast.makeText(this,"            !",Toast.LENGTH_SHORT).show();
  }
5.2 입력 한 텍스트 에 따라 해당 하 는 QR 코드 를 생 성하 고 표시

try {
   //         
   String str = text.getText().toString().trim();
   if(str != null && !"".equals(str.trim())){
   //                     
   Bitmap mBitmap = EncodingHandler.createQRCode(text.getText().toString(), 500);
   if(mBitmap != null){
    Toast.makeText(this,"       !",Toast.LENGTH_SHORT).show();
    QrCode.setImageBitmap(mBitmap);
   }
   }else{
   Toast.makeText(this,"        !",Toast.LENGTH_SHORT).show();
   }
  } catch (WriterException e) {
   e.printStackTrace();
  }
5.3 스 캔 결과 리 셋

@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 //      
 if (resultCode == RESULT_OK) { //RESULT_OK = -1
  Bundle bundle = data.getExtras();
  String scanResult = bundle.getString("qr_scan_result");
  //           
  qrCodeText.setText(scanResult);
 }
 }
총결산
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 안 드 로 이 드 QR 코드 스 캔 과 QR 코드 생 성 기능 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기