1

웹캠에서 캡처 한 프레임을 UDP 소켓을 통해 안드로이드 응용 프로그램으로 보내고 실시간 스트림으로 표시되도록 표시하고 싶습니다. Android 앱에서 이미지를 수신 할 수 있지만 이미지 하나만 표시 할 수 있습니다. 스트림이 아닙니다. 내가 한 것은 다음과 같습니다.UDP 이미지 스트리밍 안드로이드

public class getImage extends AsyncTask<String, Bitmap, Bitmap> { 
protected void onProgressUpdate(Bitmap... values) { 
    Log.i("onProgressUpdate", "done"); 
    imageDisplay.setImageBitmap(values[0]); //imageDisplay is an ImageView on UI 
    imageDisplay.invalidate(); 
}//end of onProgressUpdate 


protected Bitmap doInBackground(String... params) { 
//receive an image over socket 
publishProgress(bitmapimage); //update on UI 
return bitmapimage; 

}//end of getImage 


public void ConnectionButton(View v) { 
Connect = (Button) findViewById(R.id.Connect); 
//while(true) { 
    try { 
      clientsocket = new DatagramSocket(9999); 

     } catch (IOException e) { 
      Log.i("Connection", "exception while creating socket"); 
     } 

    try { 
      getImage obj = new getImage(); 
      receivedImage = obj.execute("9999").get(); //receive image and over stream 
      //obj.onProgressUpdate(receivedImage); 

     } 
    catch(Exception e){ 
    e.printStackTrace(); 
} 
    //}//endof while 
}//end of ConnectionButton 

연결 단추를 반복해서 누르면 이미지가 스트림으로 표시됩니다. onProgress 업데이트를 시도했지만 이미지를 업데이트하는 데 드는 시간이 매우 길었습니다. 이러한 수신 된 이미지를 실시간 스트림으로 응용 프로그램에 표시하려면 어떻게합니까?

+0

잘 모르겠지만 데이터 그램 소켓에서받은 패킷이 직렬화되지 않았다고 생각합니다. 그 사건을 고려 했니? –

+0

직렬화되지 않은 경우에도 두 번 이상 수신되어야합니다. 나는 거의 UI에서 업데이트를 얻지 못한다. –

+0

소켓에서받은 하나의 이미지를 반환하기 위해'onPostExecute' 함수를 오버로드 시켰습니다. 'doInBackground()'에서'publishProgress()'에 대한 나의 호출을 삭제했습니다. 마지막 단계는 AsyncTask를 확장 한 클래스 객체를 다시 초기화하고 onPostExecute()에서 실행하는 것입니다. 도움이되기를 바랍니다. 다른 누구도 동일한 문제에 직면하고 있습니다. –

답변

0

AsyncTask 개체는 한 번만 실행할 수 있으므로 스트림을받을 수 없습니다. 그러나 나는 그것을 따라 가면서 성취했다.

소켓에서받은 단일 이미지를 반환하기 위해 onPostExecute()을 오버로드했습니다. publishProgress()에 전화를 걸러 내신 후 doInBackground()에 있습니다. 그리고 마지막 단계는 AsyncTask를 확장 한 클래스 객체를 다시 초기화하고 onPostExecute()에서 실행합니다. 즉, onPostExecute()에 새 객체를 만들고 asyncobject.execute().get() 객체를 만듭니다. 그것이 도움이되기를 바랍니다, 다른 누구도 같은 문제에 직면 해 있습니다.