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");
}
}