将命令发送到内置相机应用程序

时间:2014-10-20 01:46:36

标签: android image api android-activity camera

如何将拍照命令发送到内置(默认)相机应用程序?

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

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

我们的这些手机配有物理相机按钮,按此按钮会触发某些内容并向相机应用程序传达消息以拍照。我可以以某种方式从我的后台服务中触发某些东西吗?

3 个答案:

答案 0 :(得分:6)

  

如何将拍照命令发送到内置(默认)相机应用程序?

有许多"内置(默认)相机应用程序"。设备制造商通常自己发货。

  

我怎样才能做到这一点?

不需要任何相机应用程序,更不用说内置的#34;一,支持任何类型的API,允许第三方应用程序控制相机行为,更不用说提供您描述的特定访问。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

你无法通过内置的应用程序实现这一点,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()函数。这应该有效