Отображение статического изображения Google Map в BlackBerry 5.0 - PullRequest
3 голосов
/ 23 января 2011

У меня действительно интересная проблема, которую нужно решить:

Я получаю статическое изображение карты Google с URL-адресом вроде this .

I 'Мы пробовали несколько способов получить эту информацию: выборка «удаленного ресурса» как ByteArrayOutputStream, сохранение изображения на SD-карте симулятора, и т. д.… но каждый волнуется раз, когда я получаю IlegalArgumentException .

Я всегда получаю ответ HTTP http 200 и правильный тип MIME ("image / png"), но в любом случае: получить изображение и преобразовать его в растровое изображение или сохранитьизображение на SD и чтение его позже;Я получаю один и тот же результат ... файл всегда поврежден.

Я действительно считаю, что это проблема кодирования или метод чтения (похожий на этот):

public static Bitmap downloadImage(InputStream inStream){
  byte[] buffer = new byte[256];
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  while (inStream.read(buffer) != -1){
    baos.write(buffer);
  }
  baos.flush();
  baos.close();

  byte[] imageData = baos.toByteArray();
  Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, imageData.length, 1);
  //Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, -1, 1);
  return bi;
}

Единственныйна ум приходит изображение imageData.lenght (в ответе длина контента: 6005), но я действительно не могу понять это.Любая помощь приветствуется ...

Ответы [ 2 ]

3 голосов
/ 24 января 2011

попробуйте так:

InputStream input = httpConn.openInputStream();
byte[] xmlBytes = new byte[256];
int len = 0;
int size = 0;
StringBuffer raw = new StringBuffer();
while (-1 != (len = input.read(xmlBytes))) 
{
    raw.append(new String(xmlBytes, 0, len));
    size += len;
}
value = raw.toString();
byte[] dataArray = value.getBytes(); 
EncodedImage bitmap;
bitmap = EncodedImage.createEncodedImage(dataArray, 0,dataArray.length);
final Bitmap googleImage = bitmap.getBitmap();
2 голосов
/ 08 февраля 2011

Ответ Свати хорош.Этого же можно добиться с помощью меньшего количества строк кода:

InputStream input = httpConn.openInputStream();
byte[] dataArray = net.rim.device.api.io.IOUtilities.streamToBytes(input);
Bitmap googleImage = Bitmap.createBitmapFromBytes(dataArray, 0, -1, 1);
...