我想实现类似于Whatsapp的行为,用户可以上传图片。我试图在我的应用程序中打开图像,但如果图像太大,则会出现内存不足错误。如何从J2ME的platformRequest()获取信息/数据?
为了解决这个问题,我使用platformRequest()
方法打开转发要在手机的本机图像查看器中打开的图像。
但是,我想知道它是如何修改手机的本机图像查看器,添加一个“选择”按钮,用户选择他想要上传的图像。这些信息如何发送回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图像,而一个新的设备会给我错误的图像大于10MBs。
你测试过[WhatsApp](http://en.wikipedia.org/wiki/WhatsApp)如何处理大图片吗?此外,您是否考虑过在服务器上调整图像大小的选项,_before_发送至手机? – gnat
我已经在服务器端调整大小,但问题是,如果发送用户试图打开一个大图像,以便他可以将其发送到服务器,应用程序崩溃内存不足。我在WhatsApp中测试了相同的图像,也测试了相同的图像,并且没有人提出这个问题。 –
有趣。请编辑答案,以显示您在用户打开图像时使用的代码 - 您获得OOME的代码。从我在wikipedia上看到的看起来,他们可能会使用Symbian特定的API,而不是通用的Java ME MIDP – gnat