【问题标题】:ZXing on Android: how to set camera in negative mode?Android上的ZXing:如何将相机设置为负片模式?
【发布时间】:2013-01-08 15:38:22
【问题描述】:

我想在一个 android 项目中使用 zxing。我已经下载了代码并且示例应用程序现在正在运行(ZXingTestActivity)。供您参考,我对原生 android 编码不是很熟悉。

我想使用 zxing 扫描二维码来配置应用程序。为了避免普通二维码和配置二维码之间的混淆,我想在屏幕或纸上打印反转/负二维码。

为了能够扫描这些倒置/负向二维码,相机必须处于负向模式。我怎样才能做到这一点?但是,我不确定从哪里开始......

在ZXingTestActivity.java中有一个clicklistener,它为IntentIntegrator指定了一些额外的参数,例如:

private final Button.OnClickListener scanProduct = new Button.OnClickListener() {
    @Override
    public void onClick(View v) {
      IntentIntegrator integrator = new IntentIntegrator(ZXingTestActivity.this);
      integrator.addExtra("SCAN_WIDTH", 800);
      integrator.addExtra("SCAN_HEIGHT", 200);
      integrator.addExtra("RESULT_DISPLAY_DURATION_MS", 3000L);
      integrator.addExtra("PROMPT_MESSAGE", "Custom prompt to scan a product");
      integrator.initiateScan(IntentIntegrator.PRODUCT_CODE_TYPES);
    }
  };

是否可以使用 addExtra 添加相机设置以及如何格式化?可能吗?还是有另一种方法可以将相机配置为倒置/负片模式?

【问题讨论】:

  • 有人可以解释为什么我的问题被否决了吗?我不明白。

标签: android camera zxing mode


【解决方案1】:

抱歉,无法通过 Intent 执行此操作。一个干净的补丁添加这个作为一个选项将是有吸引力的提交。唯一的问题是相机必须支持“负片”模式。然后它是微不足道的(您可以在Barcode Scanner+ 中将此行为视为可选选项)。否则你必须自己翻转图像。不难,但需要一些代码和 CPU 周期。

【讨论】:

  • 看我的回答,ZXing也可以吗?
  • 当然,这就是我在这里所指的。仅当相机支持此模式时才有效。
  • 好的,你能告诉我怎么做,而不是告诉我它必须是一个选项,并且必须得到相机的支持吗?如果您解释如何检测相机是否支持此模式,那就太好了。你说:对不起,没有办法通过 Intent 做到这一点。好的,我明白了,但是当无法通过意图实现时,你能给我一些方向来归档我的目标吗?
  • 如果您研究已经给出的答案,那么使用 SO 会更有效。你会很快找到方法getSupportedColorEffects() (developer.android.com/reference/android/hardware/…)。
  • 啊,谢谢你的信息。就像我在我的问题中所说的那样:我对原生 android 编码不是很熟悉。你能告诉我在 ZXing 哪里可以找到相机对象吗?
【解决方案2】:

我不知道 ZXing 是否完全不可能,但 ZBar 是可能的!

  1. 首先在sourceforge上下载ZBar安卓版: http://sourceforge.net/projects/zbar/files/AndroidSDK/

  2. 将项目添加到 eclipse

  3. 打开 CameraPreview.java

  4. 给类添加一个私有变量:

    private Camera.Parameters mCameraParams;

  5. 在构造函数CameraPreview中添加以下行:mCamera = camera;:

    mCameraParams = camera.getParameters(); mCameraParams.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE); mCamera.setParameters(mCameraParams);

  6. 就是这样! (运行项目)

还认为 ZBar 可以更快地检测损坏的条形码。与我在另一个项目中使用的 PC 版本相同,并且做得很好。眨眼,代码就在那里。没有什么花哨的东西,就是好!

【讨论】:

  • 要清楚并重复上述内容:是的,这也是您在 zxing 项目中可以做到的方式。真的在任何应用程序中。
【解决方案3】:

@Erwinus,这是代码。我希望现在清楚为什么它是您在以前的 cmets 中已经完全给出的东西。更多的功课和更少的指责使 SO 成为一个快乐的地方。

mCameraParams = camera.getParameters();
if (mCameraParams.getSupportedColorEffects().contains(Camera.Parameters.EFFECT_NEGATIVE) {
  mCameraParams.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
}
mCamera.setParameters(mCameraParams);

【讨论】:

  • 我已经知道了。他仍然不想说它在哪个文件中,这就是我想知道的!相机对象在哪里?你读过cmets吗?为什么给我这个答案这么难?更多的功课??????
  • 我如何知道要在您的应用中编辑哪个文件?在我的应用程序中,它的 CameraConfigurationManager.java。您没有搜索使用 Camera.Parameters 的来源吗?作为一个新手没关系——这是我见过的最不称职的问题之一——但态度很奇怪。我会把它剪掉。
  • 没关系............你是ZXing的创造者吧?阅读我的问题的第一行:“我想在一个 android 项目中使用 zxing。我已经下载了代码和示例应用程序......”那么它在示例中的哪里?我正在使用你的图书馆.....和你的示例应用程序;-)
  • 您不应该复制和粘贴 Android 客户端;请编写您自己的应用程序。它不是一个“例子”。如果你复制了其中的一部分,好吧:我已经给你指出了CameraConfigurationManager.java。没有在你的键盘上打字,我无法进一步帮助你。很抱歉我回答了这个问题。
  • 感谢您的回答,无需说对不起。我不是在复制您的应用程序,而是在尝试学习,仅此而已,这就是为什么我使用您的示例来弄清楚它是如何工作的。当我知道它是如何工作的时,我设置了一个新项目。它在问题的第一行:“我想使用......”。 lib中有很多文件,不知道在哪里看。谢谢,这就是我想知道的。但从没想过一个问题会这么难,这对我来说是一种奇怪的经历。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多