Android 向内置摄像头应用程序发送命令

Android 向内置摄像头应用程序发送命令,android,image,api,android-activity,camera,Android,Image,Api,Android Activity,Camera,如何向内置(默认)照相机应用程序发送拍照命令 假设摄像头应用程序正在前台运行。现在,我不想点击屏幕上的摄像头按钮,而是希望我的后台服务让摄像头应用程序拍照。如何做到这一点? 我理解向摄像头应用程序发送意图的可能性,但这需要点击屏幕上的按钮来拍照,或者创建我自己的自定义摄像头应用程序,然后可以进行控制。但我正在寻找一种方法(合法或黑客)使内置摄像头应用程序接受我的拍照命令 我们的手机带有物理摄像头按钮,按下该按钮可触发某物,并向摄像头应用程序发送信息以拍照。我能从我的后台服务中触发什么吗 如何向内

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

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

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

我们的手机带有物理摄像头按钮,按下该按钮可触发某物,并向摄像头应用程序发送信息以拍照。我能从我的后台服务中触发什么吗

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

有几十个“内置(默认)摄像头应用程序”。设备制造商通常自己发货

我怎样才能做到这一点


不要求任何摄像头应用程序(更不用说“内置”应用程序)支持任何允许第三方应用程序控制摄像头行为的API,更不用说提供您描述的特定访问权限。

您要求控制内置摄像头应用程序的拍照功能,这是不可能的


要实现这类功能,你应该创建自己的摄像头应用程序,它会监听你的命令并相应地进行操作。互联网上有几十个定制摄像头应用程序的教程,其中之一就是。我希望它能对你有所帮助。

如前所述,使用内置应用程序无法实现这一点

但您必须能够使用intent发送捕获:

 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" />

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

检查我的问题,了解我试图实现的目标,以及我如何实现的答案。。您的解决方案需要点击屏幕上的按钮。我不明白您为什么要这样做。如果要忽略默认照相机应用程序,为什么要使用它?如果你只想自动拍照,为什么还要麻烦使用照相机应用程序呢?因为我想将图片存储在默认相机应用程序存储图片的库中。我不想创建我自己的相机应用程序。你可以使用UIAutomation脚本和代码。我不需要完全控制摄像头应用程序,我只需要它的一张图片。@abbas:那没关系。任何人都不必为您的服务提供API来执行此操作。@abbas:编写您自己的相机应用程序。但我必须使用默认应用程序。@abbas:向向您提供此堆栈溢出问题的人提供URL。但这将启动内置相机活动,并要求点击屏幕上的相机按钮来拍照。再次,它只是启动照相机活动,除非你点击按钮,否则不会拍照。我想知道那些带有“物理”照相机按钮的手机是如何向照相机应用程序传递拍照信息的。这种通信能被截获或黑客攻击吗?
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");
  }
}