2016-12-01 2 views
0

Zxing 바코드 스캐너 라이브러리를 구현 한 곳에서 스캐너 응용 프로그램을 개발했습니다. 카메라 뷰 위에있는 스캐너 페이지에 새로운 버튼 (손전등 버튼)을 추가하려하지만 실패하고 있습니다. 누구든지 Zxing의 스캐너보기 위에 단추를 넣는 것을 도와 줄 수 있습니까? 아래 코드를 게시하고 있습니다. 도와주세요.Zxing 스캐너 페이지 위에 손전등 단추 추가

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{ 

     Integer response = 0 ; 
     int currentIndex=0; 

private ZXingScannerView mScannerView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.e("onCreate", "onCreate"); 
     mScannerView = new ZXingScannerView(this); 
     Button scanButton= new Button(this); 
     LayoutParams params = 
       new LinearLayout.LayoutParams(
         LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT); 
     scanButton.setBackground(getResources().getDrawable(R.drawable.round_button)); 
     scanButton.setText("Flash Light"); 
     scanButton.setLayoutParams(params); 
     mScannerView.addView(scanButton); 
     setContentView(mScannerView); 

     } 
     private void checkPermissions() { 
       try { 
         for (int i = currentIndex; i < permissions.length; i++) { 
           currentIndex = currentIndex + 1; 
           int result = ContextCompat.checkSelfPermission(context, permissions[i]); 
           if (result == PackageManager.PERMISSION_GRANTED) { 
           } else { 
             requestPermission(permissions[i]); 
             return; 
           } 
         } 
       } catch (Exception e) { 
         e.printStackTrace(); 
       } 
     } 

     Activity activity = this; 
     Context context = this; 

     String[] permissions = new String[]{Manifest.permission.CAMERA}; 


     private void requestPermission(String permission) { 

//  if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { 
//   Toast.makeText(context, 
//     "GPS permission allows us to access location data. Please allow in App Settings for additional functionality.", 
//     Toast.LENGTH_LONG).show(); 
//  } else { 
       ActivityCompat.requestPermissions(activity, new String[]{permission}, 
         101); 
//  } 
     } 

     @Override 
     public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
       switch (requestCode) { 
         case 101: 
           if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
//     Snackbar.make(view, "Permission Granted, Now you can access location data.", Snackbar.LENGTH_LONG) 
//       .show(); 
             checkPermissions(); 
           } else { 
             try { 
               // FuncUtils.showToast(context, permissions[0] + " Denied!!!"); 
             } catch (Exception e) { 
               e.printStackTrace(); 
             } 
//     onBackPressed(); 
////     Snackbar.make(view, "Permission Denied, You cannot access location data.", Snackbar.LENGTH_LONG).show(); 
           } 
           break; 
       } 
     } 


     @Override 
public void onResume() { 
     super.onResume(); 

     if(response == 1) { 
     mScannerView = null; 
     mScannerView = new ZXingScannerView(this); 
     setContentView(mScannerView); 
     response = 0; 

     } 

     mScannerView.setResultHandler(this); 
     mScannerView.startCamera(); 

     } 

@Override 
public void onDestroy() { 
     super.onDestroy(); 


     mScannerView.stopCamera(); 

     } 

     @Override 
     protected void onRestart() { 
       super.onRestart(); 
       Log.d("ani","onrestart"); 
     } 

     @Override 
public void handleResult(Result rawResult) { 



     final Dialog dialog = new Dialog(context); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.dialog_screen); 
     dialog.getWindow().setLayout(700, 850); 
     TextView text = (TextView) dialog.findViewById(R.id.CouponCode); 
     Button dialogButton = (Button) dialog.findViewById(R.id.save_code); 
     // if button is clicked, close the custom dialog 
     text.setText(rawResult.getText()); 
     dialogButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) 
       { 
         dialog.dismiss(); 
         MainActivity.this.finish(); 
       } 
     }); 

     dialog.show(); 
     Log.e("Ani", rawResult.getText()); 
     Log.e("Ani", rawResult.getBarcodeFormat().toString()); 



     } 
} 
+0

당신이 당신의 도움을 주셔서 감사합니다 – HsRaja

답변

2

부모에 버튼을 ZxingView를 추가하고

super.onCreate(savedInstanceState); 
    FrameLayout frameLayout = new FrameLayout(this, new ViewGroup.LayoutParams(
      ViewGroup.MATCH_PARENT, 
      ViewGroup.MATCH_PARENT)) 
    mScannerView = new ZXingScannerView(this); 
    Button scanButton= new Button(this); 
    FrameLayout params = 
      new FrameLayout.LayoutParams(
        FrameLayout.WRAP_CONTENT, 
        FrameLayout.WRAP_CONTENT); 
    scanButton.setBackground(getResources().getDrawable(R.drawable.round_button)); 
    scanButton.setText("Flash Light"); 
    scanButton.setLayoutParams(params); 
    frameLayout .addView(mScannerView); 
    frameLayout .addView(scanButton); 
    setContentView(frameLayout); 
+0

플래시 버튼 스캐너 페이지를 zxing에 대한 업데이트 된 코드를 게시하시기 바랍니다 수 된 setContentView하는 첫 번째 통화를 제거 .. :) –

+0

반갑습니다. 이것이 당신이 원하는 것이면 대답을 수락하십시오. –

+0

나는이 답변을 시도했고 저에게 ViewGroup.Match_parent가 해결되지 않았고 그 이유를 모르겠습니다. :( – HsRaja

관련 문제