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

카메라 제어 - 2개의 쓰레드 [closed]

0 추천
안녕하세요?

제가 구현한 코드 입니다.

- 녹화 버튼을 누름

- 현재 시간 확인하여 파일 이름으로 설정

- 파일 길이 최대 10초로 설정

- 녹화 시작 하고, 10초가 되면 파일 저장

- 다시 현재 시간 확인하여 파일 이름으로 설정, 녹화, 10초가 되면 파일 저장(반복)

- 정지 버튼을 누르면 녹화 정지

 

그런데 생기는 파일 이름을 보면 10:10:10 이후에 10:10:12 가 만들어 집니다.

아마 파일 저장, 생성, 재 시작에 자원이 2초 정도 사용 되므로 다시 시작되는 간격이 10초가 아니고 12초 정도가 되는 것 같습니다

저는 순차적으로 코드가 진행하니 그런 것 같은데 이를 해결 하려면 어떤 방법이 있는지요?

 

제 짧은 생각으로는

10초 이전에 다른 쓰레드를 시작 (다른 동영상을 녹화 시작) 하는 방법이 있지 않을가 싶은데

그럼 2개의 쓰레드가 카메라 1개를 동시에 제어 가능 한지요? 그건 불가능 하지 않은가 싶습니다만......

 

감사합니다.
질문을 종료한 이유: 쓰레드로 접근 하는 것이 많는 것 같고, 접근 방법에 대한 아이디어 얻었으니 일단 종료합니다.
원래자유 (470 포인트) 님이 2022년 2월 23일 질문
원래자유님이 2022년 2월 23일 closed

1개의 답변

0 추천
 
채택된 답변
카메라를 제어하려면 어차피 SurfaceView에 접근해야 할 것 같고, 이건 메인쓰레에서만 가능합니다. 그리고 현재상태로는 두번째 녹화가 정확히 10초뒤에 시작하지 못하는 것은 말씀하신 부분과 관련이 있을 것 같으므로, 이 부분을 손보시는게 나을 것 같습니다.

파일을 생성/저장하는 부분은 IO 처리이므로 백그라운드에서 처리하는게 좋습니다. 이렇게 하시면 아무래도 다시 녹화가 시작되는 간격이 많이 줄 것 같은데요.
spark (226,420 포인트) 님이 2022년 2월 23일 답변
원래자유님이 2022년 2월 23일 채택됨
감사합니다.

교재에서 본 것 같기는 하지만 쓰레드 구현은 아직 잘 못하는 데 쓰레드 관련 부분 공부 해 보겠습니다.
아래 링크를 보시면 자바를 사용할 경우 유용하게 사용할 수 있는 쓰레딩 기법이 나옵니다.

https://github.com/Loriot-n/NetworkBoundResource/blob/master/AppExecutors.kt

코틀린은 코루틴 쓰면 되구요.

원래는 구글 샘플에 소개되었던 코드인데, 해당 리포 소유자가 쓰레딩 부분만 빼내서 별도 리포에 옮겨 놓은 것 같네요. 참고하시면 좋을 것 같습니다.
...