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%,该文档可能是针对开发者今天可能需要使用的内容。