JAVA Study

zxing lib 를 이용한 QR코드 카메라 구현시 center laser 커스텀방법

85chong 2020. 7. 7. 12:28
728x90
반응형
SMALL

zxing 를 사용하여 QR 을 적용 시키다 보면 QR 카메라 찍는 중앙에 레이저의 색상을 변경하던가, 안보이게 하던가 하고 싶을때가 있는데, 보통 zxing_viewfinder_laser 검색을 이용해 코드를 적용시키는데, 꼭 필요한 주의사항이 있어서 기록함

 

 

 

zxing 중앙 레이저의 색상을 변경하는 방법1.

 

 <com.journeyapps.barcodescanner.ViewfinderView 
        anroidid:="@+id/zxing_viewfinder_laser" 
        android:laoyout_width:="match_parent" 
        android:laoyout_height:="match_parent" 
        app:zxing_possible_result_points="@color/color_000000" 
        app:zxing_result_view="@color/color_000000" 
        app:zxing_viewfinder_laser="@color/color_000000" 
        app:zxing_viewfinder_mask="@color/color/color_000000"/> 

위의 코드에서 zxing_viewfinder_laser 부분의 색상을 변경하면 center laser 색상을 변경 할 수 있다.
단! 투명도는 적용되지 않는다.

 

 

 zxing 중앙 레이저의 제거방법1.(중앙 레이저 색상을 투명으로 만들어, 제거하는 효과를 적용 시키는 방법)

(본인이 직접 구현한 QR 코드중에 DecorateBarcodeView 를 수정, DecorateBarcodeView mDecorateBarcodVeiw 에 이미 값이 존재한다고 가정하고 설명함) 

    ViewfinderView viewfinderview = mDecorateBarcodVeiw.getViewFinder();
    Field scannerAlphaField = null;
    try{
        scannerAlphaField = viewfinderview.getClass().getDeclaredField("SCANNER_ALPHA");
        scannerAlphaField.setAccessible(true);
        scannerAlphaField .set(viewfinderview, new int[1]);
    }catch(Exception e){
        Log.e("eTag", "e : "+e.getMessage);
    }

!위의 코드는 코드 난독화 minifyEnabled = true 가 적용되면, getDeclaredField 부분에서 예외처리되어 작동하지 않는다.

 

 

◎ zxing 중앙 레이저를 제거하는 방법2.(레이저를 없애는 방법)

(본인이 직접 구현한 QR 코드중에 DecorateBarcodeView 를 수정, DecorateBarcodeView mDecorateBarcodVeiw 에 이미 값이 존재한다고 가정하고 설명함)
   

   if(mDecorateBarcodVeiw !=null){ 
      mDecorateBarcodVeiw .getViewFinder.setVisibility(View.INVISIBLE); 
   }

위의 코드는 가장 확실하게 중앙 레이저를 없애는 방법이다.

 

 

 

- 끝 - 

'JAVA Study' 카테고리의 다른 글

Java 환경변수 버전 수정 8->11 안될때  (0) 2022.05.13
AppDistribution 테스터App 등록 방법  (0) 2022.05.03
PATTERN 모음집  (0) 2019.01.31
배열의 데이터를 조건에 맞게 분류 하기  (0) 2019.01.31
try catch fianlly  (0) 2019.01.30