2016-12-01 89 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

请你发布更新后的代码与Flash按钮 – HsRaja

回答

2

添加您的按钮,并ZxingView到父并删除第一个调用的setContentView

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

谢谢您的帮助斑马线扫描仪页面.. :) –

+0

不客气。接受答案,如果这是你想要的 –

+0

我试过这个答案,对我来说ViewGroup.Match_parent没有解决,我不知道为什么? :( – HsRaja