Unity Android 동영상 어플 녹화 권한 관련
Unity Android 동영상 어플 녹화 권한 관련
최근 아는 분의 요청으로 안드로이드폰에서 동영상 녹화 관련 어플 테스트를 진행하게 되었다.
스마트폰에서 동영상을 녹화하는 방식은 뭐 여러 가지가 있을 수 있겠지만 아는 것은 2가지이다.
첫 번째는 카메라 어플을 통한 방식의 녹화,
두 번째는 화면을 캡처하는 방식의 녹화
첫 번째의 경우 에셋스토어에서 Native Camera로 찾으면 여러 개가 나온다.
하지만 내가 테스트하고자 하는 것은 카메라 전환이 아닌 어플내에서의 동영상 녹화 방식이다. 따라서 Native Camera로 전환되어서는 안 된다.
따라서 시도하는 방법은 두 번째의 방식으로 하게 되었다.
원래 원했던 것은 카메라에 접근하는 방식이 더 맞는데, Unity 자체만으로 하기에 실력이 너무 부족하다. (아니면 자체적 지원이 안 되는 것일 수도 있다.)
그래서 찾는 것이 Screen Recorder이다.
이를 통해 간한단 테스트용으로 만들었는데, 다음과 같은 문제가 생겼다.
아마도 개인정보 보호 때문에 권한이 강화된 것 같다.
동영상으로 확인해 보면 다음과 같다. (대상 기기 Galaxy S21)
오프라인으로 작동하고, 동작 확인용으로 테스트하는 것이어서 모든 권한이 적용되어도 상관없는 것이기 때문이고, 일일이 "시작하기" 버튼을 눌러야 할 필요가 없어서 녹화 버튼을 누를 시 그 즉시 녹화가 되어야 한다.
권한의 원인은 MEDIA_PROJECTION 때문이다. 이를 허용해 주어야 한다.
따라서 이에 대한 해결책은 역시 권한을 주는 것인데, 생각보다 높은 권한이 요구되어서 단순히 manifest에서 주는 것만으로는 해결이 안 된다.
기본적으로 빌드하기 위해서는 API를 다음과 같이 맞춰준다.
Minmum API Level : 21
Target API Level : 29 ~ 30
그리고 adb를 통해서 권한을 변경해 줘야 한다고 한다. PC와 안드로이드 스마트폰을 연결한 후 CMD에서 명령어를 준다.
당연히 스마트폰은 개발자 모드와 USB 디버그 모드를 활성화해야 한다.
권한 명령어는 다음과 같다.
*권한 가져오기
adb shell appops get [패키지명] PROJECT_MEDIA
*권한 허용
adb shell appops set [패키지명] PROJECT_MEDIA allow
*권한 해제
adb shell appops set [패키지명] PROJECT_MEDIA ignore
이후에는 스마트폰의 애플리케이션에서 수동으로 권한을 설정해 준다.
설정 > 애플리케이션 > [어플이름] > 권한 > 마이크 및 사진 및 동영상을 허용으로 변경
현재까지 된 사항은 Android 13 까지이다. 14 이상? 부터는 추가적으로 다시 해줘야 한다고 하는데 일단 권한요청 없이 되긴 한다.
Android나 JAVA쪽을 모르니 삽질을 너무 많이 하게 된다.
적용된 기기는 Galaxy Note10 Lite( Android 13 ), Galaxy S21( Android 14 )로 잘 된다.
그래서 결과는 다음과 같이 권한에 대한 요청없이 바로 녹화가 된다.