如何在没有预览的情况下使用相机Intent拍照?

时间:2016-11-29 06:23:35

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

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

 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制作新应用。我想使用默认的相机应用程序。有人说

  

"即使相机应用本身没有显示确认屏幕,相机应用也无法为其他应用提供禁用确认屏幕的选项。

因此无法显示确认屏幕。"

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

2 个答案:

答案 0 :(得分:1)

这是不可能的。

您无法控制默认相机应用的行为。更糟糕的是,您不知道将使用哪个应用来实现您的ACTION_IMAGE_CAPTURE意图。最终用户有足够的能力安装备用相机应用程序,或者可能安装了假装成相机应用程序的恶意软件(在此上下文中,相机应用程序意味着清单声明它可以执行ACTION_IMAGE_CAPTURE)。但首先,ODM预安装的摄像头应用程序不一定与AOSP摄像头的行为相同。

此类应用可能会遵循ACTION_IMAGE_CAPTURE意向回复的合同,但无法保证。对于预装的相机应用程序无法正确识别附加内容或产生意外结果的情况,SO充满了疑问。

即使结果看起来正确,你的应用也无法知道相机是否实际拍摄了照片。如果相机应用程序选择这样,它可能是来自图库的图像,或者是假图像。

答案 1 :(得分:1)

我使用adb shell

找到了一个很好的解决方案
  

adb shell“am start -a android.media.action.STILL_IMAGE_CAMERA”&&睡1&& adb shell“输入keyevent 27”

请注意,该操作是STILL_IMAGE_CAMERA

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

相关问题