web-dev-qa-db-ja.com

Android)でビットマップ画像を表示する方法

AndroidのライブIPカメラからMjpg画像を取得するアプリケーションを作成しています。

問題は、画像をByteArrayの形式で取得したときからです。 Imageを表示するにはどうすればよいですか?

次のコードを使用して画像を表示しています。

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

しかし、私は例外を取得しています

Android.view.ViewRoot CallFromWrongThreadException

Androidレイアウトでbytearrayを表示する方法を説明してください。

11
Shah

RunOnUiThread()を使用して、他のスレッドからのビューを更新する必要があります。

3
adnorid
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);
11
Yogesh Tiwari

ビュー関連のジョブを実行しているときは、常にGUIスレッドから実行してください。 the thread that created the view hierarchy

したがって、これを実現するにはHandlersを使用します。

1
Tanmay Mandal

例外CallFromWrongThreadExceptionは、UIスレッドではなく、許可されていないスレッドからUIを更新しようとしたことを意味します。

したがって、問題は、イメージを作成するためのコードが間違っているということではなく、間違った場所でそれを行っているということです。あなたが例えばAsyncTaskのバックグラウンドで画像をフェッチしている場合は、setImageBitMap()ではなくpostExecute()doInBackground()を実行する必要があります。

より多くのコードを見なければ、私たちはあなたをこれ以上助けることはできません。

1
Heiko Rupp