Blackberry: immagine .jpg visualizzazione Scaricare e
-
27-09-2019 - |
Domanda
Sto cercando di tirare un immagine .jpg fuori di un server, e visualizzarlo come e EncodedImage
in un ZoomScreen
. Perché questo .jpg potrebbe essere molto grande voglio salvare il jpg in un file e leggerlo da lì in modo che io non ho il tutto seduti in memoria.
Il problema che sto affrontando è che Connector.open ( "http.url.com/file.jpg") o è gettando un IOException
con il messaggio "Bad Socket Id", oppure sta gettando un ClassCastException
quando tento per aprire un FileConnection
all'URL. Ecco un esempio di quello che ho provato:
try {
FileConnection fileIn = (FileConnection)Connector.open(fileURL);
FileConnection fileOut = (FileConnection)Connector.open(fileDest);
if(!fileOut.exists())
fileOut.create();
InputStream is = fileIn.openInputStream();
OutputStream os = fileOut.openOutputStream();
while(fileIn.canRead() && fileOut.canWrite()){
os.write(is.read());
}
is.close();
os.close();
fileIn.close();
fileOut.close();
EncodedImage image = EncodedImage.getEncodedImageResource(fileDest);
UiApplication.getUiApplication().pushScreen(new ZoomScreen(image));
} catch (Exception e) {
e.printStackTrace();
}
mi sto maggior parte di questo da RIM, ma mi manca qualcosa. So che l'url è corretto perché io uso lo stesso formato quando ho flusso audio dallo stesso server. L'eccezione è stato gettato sulla prima linea, quando si tenta di connettersi al server.
Qualcuno ha esperienza con questo?
Soluzione
capito.
try {
HttpConnection conn = (HttpConnection) Connector.open(fileURL);
InputStream fileIn = conn.openInputStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
for(int i = fileIn.read(); i > -1; i = fileIn.read()){
os.write(i);
}
byte[] data = os.toByteArray();
EncodedImage image = EncodedImage.createEncodedImage(data, 0, data.length);
UiApplication.getUiApplication().pushScreen(new ZoomScreen(image));
} catch (Exception e) {
e.printStackTrace();
}
Spero che altre persone troveranno questo utile.
Altri suggerimenti
public void run(){
try{
StreamConnection streamC = (StreamConnection) Connector.open(url+";deviceside=true");
InputStream in = streamC.openInputStream();
byte[] data = new byte[4096];
data = IOUtilities.streamToBytes(in);
in.close();
EncodedImage eImage = EncodedImage.createEncodedImage(data, 0, data.length);
}
catch(Exception e)
{
e.printStackTrace();
}