Android小部件在远程视图更新时从模拟器消失

时间:2010-09-12 23:38:59

标签: php mysql android widget blob

我的MySQL数据库表包含一个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. 将Inputstream对象中的BLOB数据存储到字节数组

    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. 将字节数组转换为位图,并将Android小部件的ImageView设置为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;
  4. 一旦运行,我不知道为什么小部件甚至没有出现在模拟器上 甚至无法将小部件添加到屏幕上。我究竟做错了什么?非常感谢任何帮助。

    哦,这是我的小部件布局。

    <?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 个答案:

答案 0 :(得分:1)

遇到问题 - Bitmap返回Null,因此小部件初始布局消失了。问题发生在php。

答案 1 :(得分:0)

现在它有效!!!在浏览器和应用程序

新的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();?>