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を表示する方法を説明してください。
RunOnUiThread()を使用して、他のスレッドからのビューを更新する必要があります。
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);
ビュー関連のジョブを実行しているときは、常にGUIスレッドから実行してください。 the thread that created the view hierarchy
。
したがって、これを実現するにはHandlers
を使用します。
例外CallFromWrongThreadException
は、UIスレッドではなく、許可されていないスレッドからUIを更新しようとしたことを意味します。
したがって、問題は、イメージを作成するためのコードが間違っているということではなく、間違った場所でそれを行っているということです。あなたが例えばAsyncTask
のバックグラウンドで画像をフェッチしている場合は、setImageBitMap()
ではなくpostExecute()
でdoInBackground()
を実行する必要があります。
より多くのコードを見なければ、私たちはあなたをこれ以上助けることはできません。