Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:如何在不存储文件的情况下从相机获取图像?_Android_Camera_Storage_Ram - Fatal编程技术网

Android 安卓:如何在不存储文件的情况下从相机获取图像?

Android 安卓:如何在不存储文件的情况下从相机获取图像?,android,camera,storage,ram,Android,Camera,Storage,Ram,我正在使用系统的活动从相机获取图像 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST); 当用户接受照片时,我使用此回调 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityRes

我正在使用系统的活动从相机获取图像

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST);
当用户接受照片时,我使用此回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST && resultCode == RESULT_OK) {
            Bitmap bp = (Bitmap) data.getExtras().get("data");
            /*
             * DO SOMETHING WITH IMAGE ...
             */
            getContentResolver().delete(data.getData(), null, null);
        }
    }
}
最后一行删除系统存储的文件。 它可以工作,但是否可以避免使用大容量存储(具有相应的
使用权限
)?我想从RAM中获取图像,对其进行处理,然后返回方法,将所有内容留给垃圾收集器。
我不希望照片在处理过程中从gallery中可见。

如果在启动camera intent时未提供文件uri作为图像的位置,则系统将不会保存图像。与此配置一样,您的映像已存储在内存中,一旦失去对它的引用,将不再使用(垃圾收集)

如何在不存储文件的情况下从相机获取图像

直接使用摄像头API(
android.hardware.camera
android.hardware.camera2.


现在,您正在将相机工作委托给第三方应用程序。在大约15亿台安卓设备上有数百个预装摄像头应用程序,在Play Store和其他地方还有数百(也许数千)个。用户可以选择使用其中任何一个来处理您的
startActivityForResult()
调用。这些应用程序的功能很大程度上取决于它们。如果他们除了返回
“数据”
缩略图之外还希望将图像保存到磁盘,这是他们的选择,而不是您的选择。

不需要uri,系统会生成带有时间戳的uri并存储文件。如果我删除最后一行并转到gallery,我可以看到应用程序中拍摄的相同图像,谢谢。那么,我最后一次机会是使用APIPlease在我的应用程序中制作一个自定义摄像头,其中哪一个是我专用的?@user3290180:
android.hardware.camera2.
仅在android 5.0及更高版本上可用。如果您的
minSdkVersion
为21或更高,请使用它。否则,您将需要使用
android.hardware.Camera
。但请记住,如果您直接访问摄像头,您必须获得
android.permission.Camera
权限。所以你必须选择…@user3290180:Google过早地将事物标记为不推荐的方式。如果
minSdkVersion
小于21,则只能使用不推荐使用的API。鉴于安卓5.0+设备目前约占市场的10%,该文档可能是针对开发者今天可能需要使用的内容。