【问题标题】:Sending command to the in-built camera app向内置相机应用程序发送命令
【发布时间】:2014-10-20 01:46:36
【问题描述】:

如何向内置(默认)相机应用发送拍照命令?

假设相机应用正在前台运行。现在,我不想点击屏幕上的相机按钮,而是希望我的后台服务要求相机应用程序拍照。如何做到这一点?

我了解向相机应用发送意图的可能性,但这需要点击屏幕上的按钮来拍照,或者创建我自己的自定义相机应用程序 然后可以控制。但我正在寻找一种方法(合法或黑客),让内置相机应用程序接受我的拍照命令。

我们有这些带有物理相机按钮的手机,按下它会触发某事并向相机应用程序传达信息以拍照。我可以从我的后台服务中以某种方式触发该某事吗?

【问题讨论】:

标签: android image api android-activity camera


【解决方案1】:

如何向内置(默认)相机应用发送拍照命令?

有几十个“内置(默认)相机应用”。设备制造商通常会自己发货。

我怎样才能做到这一点?

没有要求任何相机应用程序(更不用说“内置”应用程序)支持允许第三方应用程序控制相机行为的任何类型的 API,更不用说提供您所描述的特定访问权限了。

【讨论】:

  • 我不需要完全控制相机应用,我想要的只是一张照片。
  • @abbas:没关系。没有人必须通过您的服务为您提供 API 来执行此操作。
  • @abbas:编写你自己的相机应用程序。
  • 但我需要使用默认应用。
  • @abbas:向提出要求的人提供此 Stack Overflow 问题的 URL。
【解决方案2】:

您已要求控制内置相机应用程序的拍照功能,这是不可能的!

要实现这种功能,您应该创建自己的相机应用程序,它会听取您的命令并做出相应的行为。互联网上有数十个自定义相机应用程序的教程,其中之一是 this。希望对你有帮助。

【讨论】:

  • 我想知道那些带有“物理”相机按钮的手机是如何向相机应用程序传递信息来拍照的。这种通信会以某种方式被拦截或黑客攻击吗?
【解决方案3】:

正如CommonsWare 所说,您将无法使用内置应用程序实现这一目标。

但您必须能够使用意图来调度捕获:

 static final int REQUEST_IMAGE_CAPTURE = 1;

   private void dispatchTakePictureIntent() {
       Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
          startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
       }
}

为此,您还必须将以下功能添加到您的应用中:

<uses-feature android:name="android.hardware.camera" android:required="true" />

您可以在 android 开发者网站上阅读更多内容。

编辑

public void capture(){

    Uri outputFileUri = Uri.fromFile(newfile);

        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

        startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}


@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);

  if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
      Log.d("CameraDemo", "Pic saved");
  }
}

您可以对后台应用程序中的任何事件调用 Capture() 函数。这应该可以工作

【讨论】:

  • 但这会启动内置相机活动,并且需要点击屏幕上的相机按钮才能拍照。
  • 同样,它只是启动相机活动,除非您点击按钮,否则不会拍照。
猜你喜欢
  • 2013-08-16
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2016-04-28
  • 2016-01-13
  • 1970-01-01
  • 2010-11-14
相关资源
最近更新 更多