2011-02-08 5 views
4

안드로이드에서 라이브 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 

안드로이드 레이아웃에이 ByteArray를 표시하는 방법을 설명해주십시오 예외를 getiing M :

나는 이미지를 표시하려면 다음 코드를 사용하고 있습니다.

답변

2

runOnUiThread()를 사용하여 다른 스레드에서보기를 업데이트해야합니다.

1

관련 작업을 수행 할 때 항상 GUI 스레드에서 수행하십시오. the thread that created the view hierarchy.

이렇게하려면 Handlers을 사용하십시오.

1

예외 CallFromWrongThreadException은 UI 스레드가 아니고 허용되지 않는 스레드에서 UI를 업데이트하려고 시도했음을 의미합니다.

그래서 이미지를 만드는 코드가 잘못되었지만 잘못된 위치에서 코드를 작성하는 것이 문제가 아닙니다. 예 : AsyncTask에 백그라운드에서 이미지를 가져 오는 중이라면 이 아닌에 setImageBitMap()이 필요합니다.

더 많은 코드를 보지 않고 더 이상 당신을 도울 수 없습니다.

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); 
관련 문제