마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

고수님들.! 두가지 기능(블루투스, 영상처리) 를 어떻게 넣어야 할지 모르겠습니다.ㅠㅠ

0 추천

두가지 기능(블루투스, 영상처리) 를 어떻게 넣어야 할지 모르겠습니다.ㅠㅠ

 

현재 카메라를 통해 들어오는 영상 프레임을 openCV를 이용해서 프로세싱한 후에

여기서 얻은 int값 2개를 bluetooth를 이용해서 다른 device에 전송해주는 동작을 계속해서 반복하려 하는데요

(opencv 프로세싱 -> 블루투스 전송 -> opencv 프로세싱 -> 블루투스 전송 -> opencv 프로세싱 -> 블루투스 전송....)

 

현재 opencv와 블루투스는 각각 개별적으로 아래와 같이 구현 완료 하였는데요

1. 카메라를 통해들어오는 영상 프레임을 openCV를 이용해 프로세싱 후 원하는 값2개를 매 프레임마다 추출

 

2. 블루투스를 통해 데이터를 write하여 다른 device로 전송

 

이 두개를 어떻게 합쳐야 할지 잘 모르겠습니다. ㅠ

 

블루투스도 main activity의 onCreate 에서 device 연결을하고

opencv 프로세싱도 main activity의 onCreate에서 아래와 같은 명렬어를 수행하고

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

setContentView(R.layout.color_blob_detection_surface_view);

mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.color_blob_detection_activity_surface_view);
mOpenCvCameraView.setCvCameraViewListener(this);

바로 'public Mat onCameraFrame(CvCameraViewFrame inputFrame)' 동작으로 들어가서 매 프레임 마다 처리를 하는데요

onCreate에 블루투스 설정과 위의 코드를 한번에 넣으면 안될거같고 일단 블루투스 연결을 하고 이동작을 취해야 할 것 같은데요

 

이부분을 어떻게 나눠서 처리해야 할 지 모르겠습니다.

아직 자바와 안드로이드를 접한지 얼마 안되서 이부분을 엑티비티를 서로 나눠서 실행하면 될거같은데 잘 모르겠네요.ㅠ

 

1. 우선 엑티비티를 나눠야 한다면 어떠한 방식으로 나눠야 하는지

2. 나누게 된다면 블루투스 데이터 전송에서 ConnectedThread  메서드의 In/Out 변수를 데이터를 한번 보내고 다시 처음부터 설정하고 이과정을 반복해야 하는 건가요?

(opencv 프로세싱 -> 블루투스 device 연결 -> In/Out 소켓 연결 -> 데이터 전송 ->

opencv 프로세싱 -> 블루투스 device 연결 -> In/Out 소켓 연결 -> 데이터 전송 -> .....)

 

이러한 부분들을 어떻게 처리해야 할까요...??

제 설명이 많이 부족하다면 소스코드라도 올려드리겠습니다.

 

고수님들 제발 도움을 부탁드립니다.

parkch12 (120 포인트) 님이 2015년 11월 6일 질문

1개의 답변

0 추천
블루투스 관련 부분을 따로 Class로 빼서 wirte를 만들어놓으시고

블루투스 객체 생성 및 연결 -> OpenCV프로세싱 -> 매프레임 마다 블루투스 객체.write

이런식으로 하시면 될거같은데,
익명사용자 님이 2015년 11월 6일 답변
bluetooth를 따로 클레스로 만들게 먼저 main activity단계에서 블루투스 장치를 찾아서 연결하는 동작들을 해야하는데 이부분은 어떻게 실행시켜야 할까요..??
main activity의 oncreate 단계 전에 이러한 연결과정들을 끝내도록 할 수 있을까요??
requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        setContentView(R.layout.color_blob_detection_surface_view);

        mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.color_blob_detection_activity_surface_view);
        mOpenCvCameraView.setCvCameraViewListener(this);

이부분이 opencv의 oncreate 부분이고

        setContentView(R.layout.main);
        btn_Connect = (Button) findViewById(R.id.btn_connect);
        txt_Result = (TextView) findViewById(R.id.txt_result);

        btn_Connect.setOnClickListener(bluetooth_click);

        if(btService == null) {
            btService = new BluetoothService(this, mHandler);
        }

이부분이 블루투스의 oncreate부분인데요

블루투스의 경우 일단 하나의 layout을 띄우고 여기서 연결할 장치를 찾아서 선택하면 'setOnClickListener' 를 통해 연결하게 되는데요

이 연결 동작이 모두 끝나고 opencv의 위의 onCreate부분의 함수를 실행 하도록 할 수 있을까요??

그러니깐 main activity에서 블루투스가 모두 연결되기 전에 다른 부분들이 모두 실행되지 않고 가만히 있도록 할 수 있나요?
...