如何自定义CameraView for Android ZBar QrCode Reader

我正在使用Zbar阅读QRCode。 我使用这个https://github.com/DushyanthMaguluru/ZBarScanner示例进行我的活动。 问题是如何在FrameLayout上显示cameraView?

编辑:

         @覆盖
     public void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState); 

setContentView(R.layout.main); //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mCamera = getCameraInstance(); if(!isCameraAvailable()) { cancelRequest(); return; } requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); mAutoFocusHandler = new Handler(); setupScanner(); mPreview = new CameraPreview(this, this, autoFocusCB); //setContentView(mPreview); FrameLayout preview = (FrameLayout)findViewById(R.id.cameraPreview); preview.addView(mPreview); } 

首先删除我认为获取相机访问权限的行: mCamera = getCameraInstance(); 。 您不希望这样做,因为CameraPreview将为您执行此操作。

我不会使用FrameLayout,因为项目是一个接一个地放置,你想把你的cameraPreview放在最后。 所以你应该在另一个RelativeLayout有一个LinearLayout (我知道,它效率不高,但现在还可以)。 像(你的main.xml布局):

       

现在,您需要将CameraPreview放在zbar_layout_area 。 出于这个原因,尝试将代码更改为(盲编码):

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!isCameraAvailable()) { // Cancel request if there is no rear-facing camera. cancelRequest(); return; } // Hide the window title. requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); mAutoFocusHandler = new Handler(); // Create and configure the ImageScanner; setupScanner(); // Create a RelativeLayout container that will hold a SurfaceView, // and set it as the content of our activity. mPreview = new CameraPreview(this, this, autoFocusCB); LinearLayout zbarLayout = (LinearLayout) findViewById(R.id.zbar_layout_area); mPreview.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); zbarLayout.addView(mPreview); } 

还要确保你已经设置了足够的预备: