2011-05-21 3 views
1

J'ai ce travail très bien dans notre application iPhone, mais j'ai des problèmes avec Android. J'utilise les mêmes URL/données dans les deux applications. Lorsque je définis mon image dans ma ListView sur l'image bitmap qui provient des octets, l'image n'apparaît pas. Les données sont là. Voici le code où je cède la vue:Android octets à bitmap

if (camera.snapshot != null) 
    { 
     bMap = BitmapFactory.decodeByteArray(camera.snapshot, 0, camera.snapshot.length); 
     image.setImageBitmap(bMap); 
    } 

C'est là que je convertir les données de chaîne en octets:

camera.snapshot = responseData.getBytes(); 

Les images sont des fichiers PNG. Ils viennent environ 4 fois la taille dont j'ai besoin pour l'image listview mais je pense qu'ils s'adapteraient parfaitement aux limites que j'ai définies pour ImageView.

Sur iPhone, j'utilise simplement NSData, puis j'utilise une méthode prédéfinie dans ImageView pour la transformer en image. Cela fonctionne parfaitement! Qu'est-ce que j'oublie ici?

Répondre

0

Vous aurez probablement besoin d'utiliser la version 4 arguments de decodeByteArray: voir http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeByteArray%28byte[],%20int,% 20int, % 20android.graphics.BitmapFactory.Options% 29.

Les options dépendent du type d'image PNG, ce qui peut nécessiter des tests. Pour un PNG générique, peut-être quelque chose comme ça?

BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inDither = true; 
opt.inPreferredConfig = Bitmap.Config.ARGB_8888; 

Vous pouvez voir http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html et http://developer.android.com/reference/android/graphics/Bitmap.Config.html pour plus de détails.

0

Tout va bien ici. Donc, vous devez déboguer pour essayer de trouver où est le problème. C'est-à-dire Camera.snapshot = null? c'est-à-dire que vous pourriez ne pas obtenir les données correctement. Ou il pourrait également y avoir un problème dans les mises en page pour montrer l'imageview. Essayez de définir une image prédéfinie à imageview et voir si elle est affichée. De cette façon, vous seriez en mesure de suivre le problème.

+0

J'ai fait ces choses. J'ai en fait une image par défaut en place dans la vue. Et l'instantané n'est pas nul. :( – spentak