2011-02-08 53 views
4

我正在製作一個應用程序,讓我從Android中的Live IP Camera獲取Mjpg圖像。如何在Android中顯示位圖圖像

問題是,因爲當我得到形式爲ByteArray的圖像。我如何顯示Image

我用下面的代碼來顯示圖像:

ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
Bitmap bmp = BitmapFactory.decodeByteArray(buffer, start, a); 
imageView.setImageBitmap(bmp); 

但I M getiing異常

android.view.ViewRoot CallFromWrongThreadException 

請解釋如何顯示在Android佈局的ByteArray。

回答

2

您應該使用runOnUiThread()更新來自其他線程的視圖。

1

當你正在做一些視圖相關的工作總是從GUI線程即它做。 the thread that created the view hierarchy

所以用Handlers來實現這個。

1

例外CallFromWrongThreadException意味着您嘗試從不是UI線程的線程更新UI,而這是不允許的。

所以你的問題不是你的代碼來創建圖像是錯誤的,但你是在錯誤的地方做它。 如果您在AsyncTask的背景中獲取圖像時,您需要setImageBitMap(),postExecute()而不是doInBackground()

沒有看到更多的代碼,我們不能幫助你更多。

5
ImageView tv1; 
tv1= (ImageView) findViewById(R.id.image); 
InputStream si1 = asset.open("image/" + cat_arr1[i] + ".png"); 
Bitmap bitmap1 = BitmapFactory.decodeStream(si1); 
tv1.setImageBitmap(bitmap1);