【问题标题】:How to take picture without preview using camera Intent?如何使用相机意图在没有预览的情况下拍照?
【发布时间】:2016-11-29 06:23:35
【问题描述】:

我正在使用相机意图通过以下代码在服务中拍照

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
 try {
      getApplication().startActivity(intent);
  } catch (final ActivityNotFoundException e) {
    e.printStackTrace();
  } catch (final Exception e) {
    e.printStackTrace();
  }

可以拍照;但是,每次它显示预览 GUI(具有捕获的图片、保存和丢弃按钮)时。我想忽略这一步,就像默认的捕获相机(捕获并保存而不预览)。我该如何修改代码?谢谢大家

请注意:我不想使用 camera2API 制作新应用。我想使用默认的相机应用程序。有人说

“即使相机应用程序本身不显示确认屏幕,相机应用程序也不会为其他应用程序提供禁用确认屏幕的选项。

因此,不显示确认画面是不可能的。"

过去看起来很糟糕。我使用的是安卓 5.0。现在可以吗?

【问题讨论】:

  • 没有。我不想使用 camera2API
  • 这是不可能的。而且应该是不可能的,因为没有人希望没有相机许可的应用在后台拍照。
  • 自动接受流程怎么样?这意味着它的默认值是保存选项
  • since nobody wants an app without camera permission to take photos in background。你的意思是:since nobody wants an app with camera permission to take photos in background。 @Vlad Matvienko

标签: android android-intent android-camera android-camera-intent


【解决方案1】:

这是不可能的。

您无法控制默认相机应用的行为。更糟糕的是,您不知道将使用哪个应用程序来实现您的ACTION_IMAGE_CAPTURE 意图。最终用户有权安装替代相机应用程序,或者可能安装了伪装成相机应用程序的恶意软件(在这种情况下,作为相机应用程序意味着清单声明它可以执行ACTION_IMAGE_CAPTURE)。但首先,ODM 预安装的相机应用程序的行为方式不一定与 AOSP 相机相同。

此类应用可能会遵循ACTION_IMAGE_CAPTURE 意图响应的合同,但不能保证。 SO 充满了关于预装相机应用程序无法正确识别附加功能或产生意外结果的情况的问题。

即使结果看起来正确,您的应用也无法知道照片是否真的是由相机拍摄的。如果相机应用选择这样做,它可能是图库中的图像或假图像。

【讨论】:

  • 感谢Alex Cohn,为了控制拍照,我使用命令行su", "-c","input keyevent "+KeyEvent.KEYCODE_CAMERA成功了。您知道自动保存图像的任何关键事件吗?我在根设备(ADB Shell)中运行
  • 我通过添加 Action intent.setAction("android.media.action.STILL_IMAGE_CAMERA"); 找到了解决方案,它在我的 S5 手机上运行良好。我不确定其他手机。
【解决方案2】:

我用 adb shell 找到了一个很好的解决方案

adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA" && sleep 1 && adb shell "input keyevent 27"

注意动作是 STILL_IMAGE_CAMERA

参考Android 4.4 won't allow me to save a picture when captured using adb commands

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多