tcp를 통해 비트 맵을 전송하는 작은 클라이언트 - 서버 애플리케이션을 작성했습니다. 서버 부분은 매력처럼 작동하지만 클라이언트 측에서는받은 비트 맵을 표시하는 방법을 모르겠습니다. 클라이언트 백엔드는 새 사진에 액티비티의 메소드가 수신 될 때마다 호출하며 비트 맵을 최대 25fps로 업데이트하고 표시해야합니다. 가장 좋은 솔루션은 무엇입니까?안드로이드의 빠른 디스플레이 비트 맵
직접보기를 작성했지만 setContentView
을 호출하면 비트 맵이 표시되지 않고 화면이 검은 색으로 유지되어 서버가 닫힐 때까지 한 이미지가 올바르게 표시됩니다.
this.image = (ImageView) findViewById(R.id.imageView1);
및
public void setImage(BufferedImage bufImage) {
if (bufImage.hasBitmap()) {
this.image.setImageBitmap(bufImage.getBitmap());
}
}
이 image.invalidate와 심지어
() 아무것도 할 때까지 일어나지 않는다 (내가 올바른 비트 맵을 유지하는 자신의 BufferedImage 클래스를 썼다) : 난 이런 걸 시도 서버가 연결을 닫습니다.
감사합니다, 나는이 질문을 게시 한 후 거의 두 번째 이런 생각을 했었 : 여기 그렇다면 도움이 스레딩 및 사용자 인터페이스 상호 작용하는 방법에 대한 몇 가지 일반적인 정보입니다. 이제 "백엔드"는 자체 스레드이며 새 비트 맵을 사용하여 UI를 호출하지만 위에서 언급 한 것과 동일한 문제가 있습니다. 표시되는 유일한 그림이 서버를 닫은 두 번째로 표시됩니다. – christian667
코드를 게시 할 수 있습니까? 업데이트 된 버전? 어쩌면 비트 맵이 렌더링되지 않도록하는 다른 방법이있을 수 있습니다. – mikerowehl
이제 AsyncTask 클래스에 시도해 보았습니다 : public class Backend AsyncTask {.... \t protected void Void doInBackground (Void ... arg0) {그림로드, ui 표시}}} 및 ui : public void setImage (BufferedImage bufImage) {if (bufImage.hasBitmap()) {this.image.setImageBitmap (bufImage.getBitmap());}} –
christian667