【问题标题】:Zxing scanner Camera zoomZxing扫描仪相机变焦
【发布时间】:2019-03-04 12:43:09
【问题描述】:

我已经尝试解决这个问题 3 天了,但我仍然没有找到答案。 我想在通过Zxing扫描仪扫描二维码的同时给相机添加一个ZOOM。

build.gradle:

   implementation 'me.dm7.barcodescanner:zxing:1.9.8'

XML:

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</FrameLayout>

ScannerFragment:

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

   private ViewGroup contentFrame;
   private ZXingScannerView zXingScannerView;

    private void activateScanner() {
    if(zXingScannerView != null) {

        if(zXingScannerView.getParent()!=null) {
            ((ViewGroup) 
     zXingScannerView.getParent()).removeView(zXingScannerView); // to 
      prevent crush on re adding view
        }
        contentFrame.addView(zXingScannerView);

        if(zXingScannerView.isActivated()) {
            zXingScannerView.stopCamera();
        }

        zXingScannerView.startCamera(camId);
        zXingScannerView.setFlash(isFlash);
        //zXingScannerView.setAutoFocus(isAutoFocus);
    }
}

我添加了 SeekBar 并且我想用它来控制相机的缩放。

private Camera cameraZoom;
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

   try { 
       Camera.Parameters parameters = cameraZoom.getParameters(); 
   } 
   catch (NullPointerException e) { 
       Log.d("NullP",e.getMessage()); 
   }
}

日志:

D/NullP: Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference

我尝试使用上面的代码执行此操作,但只有错误

请告诉我该怎么做。

【问题讨论】:

  • 能否提供错误日志?
  • E/MessageQueue-JNI: java.lang.NullPointerException: 尝试在空对象上调用虚拟方法 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()'参考我不知道如何正确初始化相机。
  • 在以下文件中搜索setZoom()方法以供参考github.com/srowen/zxing-bsplus/blob/master/android-core/src/…
  • @ViVekH, public static void setZoom(Camera.Parameters parameters, double targetZoomRatio) 这个方法里面有Camera.Parameters参数项。调用方法时在哪里可以得到这个参数?如果我像我的例子那样做://相机cameraZoom; // Camera.Parameters 参数 = cameraZoom.getParameters ();会有错误

标签: java android camera zooming zxing


【解决方案1】:
if(cameraZoom == null){    
     cameraZoom = Camera.open(); 
}

您的代码中缺少这一行。

【讨论】:

    【解决方案2】:

    Zxing打开摄像头的时候不能打开摄像头,所以cameraZoom.getParameters()(cameraZoom为null)。

    【讨论】: