Android виджет исчезает из эмулятора при обновлении удаленных просмотров - PullRequest
1 голос
/ 13 сентября 2010

Моя таблица MySQL DB содержит BLOB-изображение с ключом image_id. Я пытаюсь сделать следующее.

1.HttpPost ("http://example.com/RetrieveImage.php") из приложения для Android с идентификатором image_id в парах значений имени.

PHP-скрипт выглядит следующим образом:

<?php
mysql_connect("host","userid","password");
mysql_select_db("database");
$q=mysql_query("SELECT image FROM testblob WHERE image_id =".$_REQUEST['image_id']."");
$e=mysql_fetch_assoc($q);
print($e);
mysql_close();
?>
  1. httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    InputStream is = entity.getContent(); 
    response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
  2. Сохранить данные BLOB в объекте Inputstream в байтовом массиве

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buf = new byte[10240];
            int n = 0;
            try {
                while ((n=is.read(buf))>=0)
                {
                baos.write(buf, 0, n);
                }
    is.close();
    byte[] bytes = baos.toByteArray();
  3. Преобразование байтового массива в растровое изображение и установка ImageView виджета Android на Image

    Bitmap bitmap;
    RemoteViews updateViews = null;
    bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    updateViews = new RemoteViews(context.getPackageName(), R.layout.tuwidget);
    updateViews.setImageViewBitmap(R.id.tuwidget_img_btn, bitmap);
    return updateViews;

После запуска я не знаю, почему виджет даже не отображается на эмуляторе и даже не могу добавить виджет на экран. Что я делаю неправильно? Любая помощь очень ценится.

О, вот мой макет виджета.

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tuwidget"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/tuwidget_img_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ImageView>
</AbsoluteLayout>

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Возникла проблема - растровое изображение возвращало значение Null, поэтому первоначальный макет виджета исчез. Проблема была в php.

0 голосов
/ 27 января 2011

Теперь это работает !!! в браузере и приложении

новый php:

<?php
mysql_connect("host","login","password");
mysql_select_db("dbname");
$q=mysql_query("SELECT picture FROM tablename WHERE id>='".$_REQUEST['id']."'");

$e=mysql_fetch_row($q);
header('Content-Length: '.strlen($e[0]));
header('Content-type: image/jpg');
echo $e[0];
mysql_close();?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...