안녕하세요. 개발자 여러분들. 밤 늦게까지 불철주야 코딩에 여념이 없으시리라 (__)



IP 카메라로 영상을 받아 띄워주는 어플을 만들어보는 도중 질문이 있어 글을 올리게 되었습니다.



1 ) 첫번째 로그인 화면에서 아이디와 비밀번호를 체크합니다.


2 ) 아이디와 비밀번호가 맞으면 새로운 인텐트로 넘어갑니다.


3 ) SurfaceView에서 만든 IP 카메라 영상을 띄웁니다.


 3.1 ) 카메라 영상을 보여주는 액티비티는 두개의 클래스로 이루어져 있습니다.

      

 3.2 ) 영상을 띄우는 surfaceview, 그리고 버튼을 나타내주는 RelativeLayout( 액티비티 상속받은 안드로이드 클래스 )입니다.



3번 문제에 봉착했는데요, 그림에서 보이시는 것과 같이 인텐트를 전달할 때 버튼을 만들어놓은 RelativeLayout은 인텐트가 넘어가


버튼은 나타나는데, 그 Layout에서 나타내주는 카메라 영상이 나오지 않네요.


물론 액티비티를 전환하는 방식( 로그인 시스템 )을 택하기전에는 영상과 버튼이 잘 나왔습니다.



두 가지를 서로 참조하는 방법이 있을까요?


주요 소스 참조합니다.


1) 버튼을 나타내주는 클래스입니다.

private Dangebot_View mv; // 영상을 띄워주는 클래스의 인스턴스를 만듭니다.


mv = new Dangebot_View(this);


setContentView(R.layout.sub); // sub.xml 파일은 버튼을 나타내는 UI가 작성되어있습니다.


FrameLayout frame = (FrameLayout)findViewById(R.id.surfaceframe);

frame.addView(mv); // MjpegView객체를 발생시킨 인스턴스를 frame.addView인자로 넘겨줍니다. 이 소스로 인해 영상이 나타납니다.


2) 카메라 영상을 나타내주는 클래스입니다. surfaceHolder와 콜백함수를 사용했습니다.


쓰레드를 돌려 run 메소드에서 영상을 뿌립니다.


Bitmap bm = mIn.readMjpegFrame(); // redMjpegFrame메소드는 바이트 단위로 영상을 만들어줍니다.


canvas.drawBitmap(bm, null, destRect, p); // 만들어진 인스턴스를 drawBitmap 인자로 전달해 최종적으로 영상을 뿌립니다.


캔버스 바탕이기 때문에 더블버퍼링으로 영상을 전달했습니다.