2009-09-14 7 views
3

J'utilise le Blackberry JDE (simulateur 9000), et je me demande si je peux afficher une image sur le Web.Blackberry App, afficher des images à partir du Web

Actuellement, je vois des tutoriels qui utilisent Bitmap.getBitmapResource pour afficher des images qui sont locales à l'application BlackBerry, mais en regardant l'API, je ne vois aucun support pour donner une URL web.

Existe-t-il d'autres classes d'images Blackberry que je peux consulter? Ou cette fonctionnalité n'est-elle pas prise en charge?

Répondre

4

Vous pouvez télécharger l'image en utilisant HTTPConnection et InputStream, créer EncodedImage à partir du flux, puis l'afficher.

Voir coderholic - Blackberry WebBitmapField

BTW, vous pouvez utiliser IOUtilities.streamToBytes() méthode pour lire des octets de InputStream directement!

+0

Mais, étant donné que currenly toutes les façons d'afficher quelque chose sur un écran impliquent une classe « terrain » ... et il n'y a qu'un champ bitmap ... que cela signifie pour afficher le EncodedImage j'aurais écrire mon propre champ? Ou existe-t-il une autre façon d'afficher une image? Si oui, qu'est-ce que c'est? – Jenny

+0

Si vous lisez un article lié, cela est correct pour setImage (EncodedImage) en BitmapField. Mais si vous le souhaitez, vous pouvez faire graphics.drawImage() sur paint() dans n'importe quelle classe qui déploie Field, ex. dans MainScreen ou HorizontalFieldManager. –

+0

Mais c'est une nouvelle fonctionnalité pour diffuser des données pour l'image à partir du Web, alors je vous suggère d'implémenter une extension à BitmapField, de sorte que vous serez capable de l'utiliser plusieurs fois. –

0

Si vous voulez code qui fait de faire exactement ce (bien que ce poste est vieux, donc je suppose que tu ne le fais plus)

Here

1

Voici un exemple de code pour votre problème:

HttpConnection httpConn = null; 
    InputStream inputStream = null; 
    int ResponseCode = HttpConnection.HTTP_OK; 
    byte[] ResponseData = null; 

    try { 
     httpConn = (HttpConnection) Connector.open(url, Connector.READ, true); 

     ResponseCode = httpConn.getResponseCode(); 
     if (ResponseCode == HttpConnection.HTTP_OK) { 
      inputStream = httpConn.openInputStream();    
      ResponseData = IOUtilities.streamToBytes(inputStream); 
     } 
    } 
    catch(IOException e){ 
     throw new IOException("HTTP response code: " 
       + ResponseCode); 
    } 
    finally { 
     try { 
      inputStream.close(); 
      inputStream = null; 
      httpConn.close(); 
      httpConn = null; 
     } 
     catch(Exception e){} 
    } 
    return ResponseData; 
Questions connexes