ImageView以调试模式显示,但不在运行模式下显示

时间:2012-02-26 22:41:11

标签: android

我的情况有点特别....我正在尝试通过tcp获取图像并将其显示在我的设备屏幕中。

请不要让我用另一种方式来获取图像,因为这是我能做到的唯一方法,而这不是我的问题。

当我逐步调试我的程序时,图像显示在我的屏幕上。但是当我在没有调配的情况下运行它时,它就不会出现了。

这是我的main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/textview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello World, MyActivity"
    />
<ImageView
    android:id="@+id/imageview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>
</LinearLayout>

这是我的MyActivity.java:

public class MyActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) // Aquesta funcio es crida al començar, pero tambe cada vegada que es gira la pantalla.
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public void onStart(){
        super.onStart();

        TextView tv = (TextView) findViewById(R.id.textview);

        try {
            Socket s = new Socket("ip-here", port-here);

            DataInputStream ins = new DataInputStream(s.getInputStream());

            int bytesRead = 0;
            byte[] bSize = new byte[10];
            while(bytesRead < 10){
                bytesRead += ins.read(bSize, 0, 10 - bytesRead);
            }
            String sSize = new String(bSize);
            Integer size = Integer.valueOf(sSize);

            byte[] pic = new byte[size];
            bytesRead = 0;
            while(bytesRead < size){
                bytesRead += ins.read(pic, 0, size - bytesRead);
            }

            Bitmap bitmapimage = BitmapFactory.decodeByteArray(pic, 0, bytesRead);
            ImageView image = (ImageView) findViewById(R.id.imageview);
            image.setImageBitmap(bitmapimage);

            tv.setText(sSize + " -> #" + size + "# -> #" + bytesRead + "#");
        } catch (IOException e) {
            e.printStackTrace();
            tv.setText("error de IO");
        }
    }
}

其他信息: TCP服务器发送一个包含图像大小的10字符串(在基数10中)。然后是jpg格式的整个图像。

正如你所看到的,我把一个文本框告诉我发生了什么,这没关系。即使我运行它,它说他得到了整个图像,但它只是没有出现......

我错过了什么吗?也许我不应该将此代码放在onStart()方法中?

谢谢你, 维克托

0 个答案:

没有答案