java - Android系统上如何通过phonegap访问SDCARD中的图片

标签 java android html cordova phonegap-plugins

我创建了一个 canvas(html5) 元素来让用户在其上绘图,绘图后,他们可以保存(一个按钮)它: canvas.toDataURL("image/png"); 将是 执行后,编码后的 base64 dataURL 字符串将存储到文件中。但我需要让用户查看他的画。


问题是:当用户在文本文件中保存许多故事字符串并且文件系统读取它时,内存将会泄漏。
PhoneGap 提示:java.lang.OutOfMemoryError,因为用户保存了太多的 dataURL 字符串。由于所有这些都必须重新加载到数组中,因此会发生错误。

我想如果我将用户的绘图保存为 image 格式(.jpg)而不是 base64 dataURL,它会起作用吗?

  1. 它能解决内存泄漏问题吗?
  2. 如何检索存储在以下路径中的图像:sdcard/story/pics/
    如果我只想访问录制的文件,我可以这样写:

    var record= new Media(src,onSuccess, onError); src 可以是:story/rec/something.mp3 但我无法像这样访问图像。

  3. 该解决方案也应该适用于 iOS,因为我必须将该应用部署到 iPad。
    开发环境:
    PhoneGap 1.8.0
    安卓4.0.3

最佳答案

我在处理二进制文件时遇到了类似的问题,坏消息是您无法将二进制数据写入文件系统,因为二进制数据无法通过桥传输到 native 代码中。

我最终编写了一个插件来进行二进制操作(或者更确切地说是三个插件,一个用于 iOS,另一个用于 Android,第三个用于 BlackBerry)。

我不确定是什么导致了内存泄漏,但我建议一次只在内存中保存一幅图画,除非您允许在图像之间进行复制和粘贴,在这种情况下,我会将应用程序限制为两个图像立即内存。

无论泄漏是什么,都会严重耗尽所有可用内存,因为大多数现代 Android 设备上都有相当多的内存。

关于java - Android系统上如何通过phonegap访问SDCARD中的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553233/

相关文章:

java - ConcurrentHashMap<Integer, ArrayList<Object>> 线程安全吗?

java 正则表达式 数字、字母、大写、小写

html - IE8 忽略 margin-top 知道为什么吗?

html - 更改最后一个表中的限制

javascript - 创建 jsFiddle/jsbin.com 样式代码编辑器的工具?

Java Maven Mojo : Complex Map Attribute

java - 如何解决 Java 中的 Web 服务安全问题

android - 无法安装 AVD 设备未找到错误

android - 如何创建一个 Android 应用程序来通过 Wi-Fi 控制 Arduino?

android - 如何使用 VideoSupportFragment 在 TV Leanback 应用程序中捕获触摸事件以显示视频控件?