我想实现类似于 Whatsapp 的行为,用户可以在其中上传图像。我尝试在我的应用程序中打开图像,但如果图像太大,我会出现内存不足的错误。
为了解决这个问题,我正在使用该方法打开转发要在手机的本机图像查看器中打开的图像platformRequest()
。
但是,我想知道 Whatsapp 是如何修改手机的本机图像查看器以添加一个“选择”按钮,用户可以使用该按钮选择他想要上传的图像。该信息如何发送回 J2ME 应用程序以及如何调整图像大小?
编辑:我以两种不同的方式尝试了这个,这两种方式都给了我 OOME。
一开始,我尝试了更直接的方法:
FileConnection fc = (FileConnection) Connector.open("file://localhost/" + currDirName + fileName);
if (!fc.exists()) {
throw new IOException("File does not exists");
}
InputStream fis = fc.openInputStream();
Image im = Image.createImage(fis);
fis.close();
当这不起作用时,我尝试了一种更“手动”的方法,但这也给了我一个错误。
FileConnection fc = (FileConnection) Connector.open("file://localhost/" + currDirName + fileName);
if (!fc.exists()) {
throw new IOException("File does not exists");
}
InputStream fis = fc.openInputStream();
ByteArrayOutputStream file = new ByteArrayOutputStream();
int c;
byte[] data = new byte[1024];
while ((c = fis.read(data)) != -1) {
file.write(data, 0, c);
}
byte[] fileData = null;
fileData = file.toByteArray();
fis.close();
fc.close();
file.close();
Image im = Image.createImage(fileData, 0, fileData.length);
当我调用 createImage 方法时,两种情况都会出现内存不足错误。这因设备而异。E72 给我 3MB 图像的错误,而较新的设备会给我超过 10MB 的图像错误。