IP 카메라를 이용하여 SurfaceView에 실시간 영상을 입력 받았습니다.
여기에 버튼을 추가하여 AVR로 따로 보드를 만들어 모터제어를 하여, 카메라의 상하 좌우를 제어할려고 합니다.
SurfaceView는 처음 써봐서 XML에 레이아웃을 만들어 버튼을 추가하여도 실제 액티비티에는 안뜨더군요.
액티비티 클래스나 메인 클래스에서 findViewById로 아이디를 찾아서 버튼이벤트를 등록해도, 실제 화면에서 보이질 않으니 방법이 없어요.
한 줄 요약 : 첨부한 파일에 아래쪽에 상하좌우 버튼을 달려고 하는데, SurfaceView라 보이지 않습니다. 어떻게 하면 좋을까요? ^^;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
질문/답변 해결 입니다.
아래 첨부파일은 해결된 후의 사진입니다.
프레임 레이아웃을 하나만 사용 하셧나요?
레이아웃을 프레임 레이아웃 하나만 쓰시고 거기에 addView로 SurfaceView를 붙이셧다면 버튼은
아마도 SurfaceView 밑쪽에 붙어 있을겁니다..
프레임 레이아웃 안에 두개의 프레임 레이아웃을 붙이시고 밑쪽 레이아웃에 surfaceView를 add 해보세요
<FrameLayout>
<FrameLayout>
버튼 영역
</FrameLayout>
<FrameLayout>
카메라를 붙일영역
</FrameLayout>
<FrameLayout>
버튼이 추가되어 카메라 화면과 같이 뜨는 경우는
<FrameLayout>
네임스페이스 추가.
<FrameLayout
네임 스페이스 추가.
카메라View..
</FrameLayout>
<Button
.....
</Button>
이 경우 입니다.




자문 자답입니다 -,-
mv = new MjpegView(this); // Mjpeg SurfaceView에 뿌리는 메소드입니다. 객체를 발생시킵니다.
SurfaceView vw = new SurfaceView(this); //사용자정의surfaceview
FrameLayout frame = (FrameLayout)findViewById(R.id.surfaceframe);
frame.addView(mv); // MjpegView객체를 발생시킨 인스턴스를 frame.addView인자로 넘겨줍니다.
결론적으로는 Default 액티비티 뷰에 main.xml을 뿌리고 프레임 레이아웃의 아이디를 찾아 그 위에 Mjpeg 화면(카메라 화면)을 뿌리는 것 같습니다~..
근데 2차적인 문제는 카메라 영상과 버튼을 서로 다른 차원입니다 -,- 버튼을 제가 원하는 위치에 달았다고 해도 device의 종류에 따라
절대적인 위치가 변하게 될 것 같습니다. 영상과 버튼이 서로 참조하지를 못하기 때문에(맞는지 모르겠습니다.) layout의 속성인 부모 컨테이너를 참조하여 아래에 배치하는 명령어도 안 먹힐 것 같고................