Java 有没有办法在设备内存(RAM)上存储~1GB的最大容量?
我目前正在开发dashcam应用程序,我试图在特定的时间范围内存储图像,或者在图像太旧时删除它们,或者从中创建视频 但是,我经常遇到存储问题。我的计划是将位图缓存在设备内存中,因为最糟糕的情况是每秒60个图像,压缩位图需要一些时间,所以我只想在必要时这样做。就像从单个图像生成视频一样 我想保留NAND闪存存储的使用寿命。所以我的计划是在系统内存中保存一个位图列表,当我想要生成视频时,只收集、压缩并保存到存储器中 Sotl;dr:除了在存储中写入和删除临时数据外,有没有其他方法可以在android上保存约1GB的临时数据 所以我已经尝试了一些不同的方法:Java 有没有办法在设备内存(RAM)上存储~1GB的最大容量?,java,android,Java,Android,我目前正在开发dashcam应用程序,我试图在特定的时间范围内存储图像,或者在图像太旧时删除它们,或者从中创建视频 但是,我经常遇到存储问题。我的计划是将位图缓存在设备内存中,因为最糟糕的情况是每秒60个图像,压缩位图需要一些时间,所以我只想在必要时这样做。就像从单个图像生成视频一样 我想保留NAND闪存存储的使用寿命。所以我的计划是在系统内存中保存一个位图列表,当我想要生成视频时,只收集、压缩并保存到存储器中 Sotl;dr:除了在存储中写入和删除临时数据外,有没有其他方法可以在android
- 将其保存到存储(首先只是为了调试,但在找不到问题的解决方案后,我仍然使用此部分)
- 我还做了一些关于在android中保存到RAM的研究。似乎你不能存储超过1MB的数据,甚至连尝试都远远不够。
- 我还考虑过使用位图回收。
然而,我对这段代码的理解还不够透彻,甚至无法猜测这是否适用于我
//This is what I'm using at the moment private void storeImage(Bitmap bitmap){ String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root + "/savedImages"); directory = myDir; image_save_path_test = root + "savedImages"; Log.d("Directory",image_save_path_test); if(!myDir.exists()) { myDir.mkdirs(); } Random rng = new Random(); int n = 10000; n = rng.nextInt(n); String fname = "Image-" + n + ".jpg"; File file = new File(myDir, fname); if(file.exists()) { file.delete(); } try { FileOutputStream out = new FileOutputStream(file); image.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); }}
对于市场上的手机,我将更多地关注我想要生成和分析/分发的BMP和视频的具体内容(分辨率、GOP大小…),而不是如何压缩BMP或如何保护NAND的细节。感谢您的快速回答。那么,我将继续使用当前的解决方案。但是你对cam的反馈是什么意思?你建议只录制视频文件吗?因为我读了一些关于捕获请求的时间不可靠性的文章。这是我与BMP合作的唯一原因。我只是想澄清一下。我正在使用相机来获得预览,并将其显示在textureView上。为了获得平滑的帧定时,我每x毫秒复制一次textureView的bmp。