투케이2K

156. (TWOK/WORK) [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 대응 MODIFY_AUDIO_SETTINGS 권한 설정 본문

투케이2K 업무정리

156. (TWOK/WORK) [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 대응 MODIFY_AUDIO_SETTINGS 권한 설정

투케이2K 2025. 5. 12. 13:06

[제 목]

[업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 대응 MODIFY_AUDIO_SETTINGS 권한 설정

 

[내 용]

------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------

- 제목 : [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 대응 MODIFY_AUDIO_SETTINGS 권한 설정

- 테스트 환경 : 삼성 갤럭시 스마트폰

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. 안드로이드 웹뷰 (Webview) 에서 자바스크립트 getUserMedia Audio 사용해 오디오 사용 및 설정 요청 시 

   네이티브 MODIFY_AUDIO_SETTINGS 권한 누락으로 기능 미동작 이슈


2. 안드로이드 Manifest.permission.MODIFY_AUDIO_SETTINGS 설명 : 

  >> 애플리케이션이 글로벌 오디오 설정을 수정할 수 있도록 합니다

  >> API 레벨 1 부터 사용 가능한 권한입니다

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 안드로이드에서 특정 URL 주소 웹뷰 로드 수행 실시 (카메라 스트림 웹페이지)


2. 웹 페이지에서 video, audio 권한을 요청하기 위해 getUserMedia 권한 사용 호출 실시

  const localStream = await navigator.mediaDevices.getUserMedia({ // [휴대폰 카메라 사용 권한 요청]
      video: true,
      audio: true,
  });


3. 안드로이드 웹뷰 webview.setWebChromeClient 부분에서 onPermissionRequest 필요 권한 사용 요청 들어온 목록 확인

  // TODO [웹 권한 허용 처리]
  @Override
  public void onPermissionRequest(final PermissionRequest request) {
      S_Log._W_("[웹 - 권한] PermissionRequest 요청 수행", new String[]{ "PermissionRequest :: " + String.valueOf(Arrays.toString(request.getResources())) });

      // [권한 부여 수행]
      request.grant(request.getResources());
  }


4. 요청 목록에 Manifest.permission.MODIFY_AUDIO_SETTINGS 권한이 포함 되어 있지만, 실제 네이티브 Manifest 권한 선언 파일에 포함 되어 있지 않은 것 확인

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 안드로이드 AndroidManifest.xml 파일에서 오디오 사용해 필요한 Manifest.permission.MODIFY_AUDIO_SETTINGS 권한 추가 실시

  <!-- ============================================================= -->
  <!-- [마이크 사용 퍼미션] -->
  <!-- ============================================================= -->
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------

[안드로이드 퍼미션 확인 사이트]

https://developer.android.com/reference/android/Manifest.permission


[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행 - KVS Stream Video]

https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist


[자바스크립트 video 비디오 태그에 재생 중 인 stream 스트림 을 캔버스 화면 녹화로 저장 실시 - canvas record]

https://blog.naver.com/kkh0977/223250767269?trackingCode=blog_bloghome_searchlist


[WebCam : navigator.mediaDevices.getUserMedia 사용해 웹 카메라 사용 권한 요청 및 video 스트림 영상 출력]

https://blog.naver.com/kkh0977/223028210600?trackingCode=blog_bloghome_searchlist

------------------------------------------------------------------------------
 
반응형
Comments