Notice
Recent Posts
Recent Comments
Link
투케이2K
159. (TWOK/WORK) [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 사용 후 액티비티 종료 시 마이크 사용 지속 활성 이슈 본문
투케이2K 업무정리
159. (TWOK/WORK) [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 사용 후 액티비티 종료 시 마이크 사용 지속 활성 이슈
투케이2K 2025. 5. 15. 19:31[제 목]
[업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 사용 후 액티비티 종료 시 마이크 사용 지속 활성 이슈
[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제목 : [업무 이슈] android 안드로이드 웹뷰에서 자바스크립트 getUserMedia Audio 사용 후 액티비티 종료 시 마이크 사용 지속 활성 이슈
- 테스트 환경 : 삼성 갤럭시 스마트폰
- 사전 안드로이드 권한 설정 사항 :
<!-- ============================================================= -->
<!-- [마이크 사용 퍼미션] -->
<!-- ============================================================= -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. 안드로이드 웹뷰 (Webview) 에서 자바스크립트 getUserMedia Audio 사용해 휴대폰 마이크 및 오디오 사용 후
Webview 웹뷰 액티비티 종료 시 해당 기능이 지속적으로 활성 상태 유지 이슈
2. 안드로이드 Manifest.permission.MODIFY_AUDIO_SETTINGS 설명 :
>> 애플리케이션이 글로벌 오디오 설정을 수정할 수 있도록 합니다
>> API 레벨 1 부터 사용 가능한 권한입니다
3. 자바스크립트 getUserMedia 미디어 권한 요청 시 안드로이드 웹뷰 권한 사용 설정 코드 :
>> 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());
}
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
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. 안드로이드에서 마이크 기능 사용 후 웹뷰 액티비티 종료 실시 (onDestroy)
5. 다른 화면으로 전환이되어도 해당 기능이 지속적으로 활성 상태 유지 확인
>> 안드로이드 화면 상단에 초록색 불로 기능이 지속적으로 사용 상태 확인
>> 마이크 기능 사용 시 지속적으로 음성이 출력 되는 현상 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 안드로이드 웹뷰 액티비티 종료 시 Webview.destroy 코드를 추가해 기존에 사용 되는 기능 종료 처리 수행
2. 소스 코드 예시 :
// ------------------------------------------------
// TODO [액티비티 onDestroy]
// ------------------------------------------------
@Override
public void onDestroy(){
super.onDestroy();
// ===============================================================
S_Log._E_(ACTIVITY_NAME + " : onDestroy : 액티비티 종료 상태", null);
// ===============================================================
// [웹뷰 destroy 처리]
if (main_webview != null){
try {
main_webview.destroy();
}
catch (Exception e){
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
[자바스크립트 AWS Kvs WebRTC 디바이스 역할 (master) sdp answer 응답 및 실시간 비디오 스트림 전송 수행]
https://blog.naver.com/kkh0977/223863377974
[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]
https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist
[Aws KVS 비디오 스트림 , 신호 전송 채널 차이점 설명 정리]
https://blog.naver.com/kkh0977/223854439046
[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]
https://blog.naver.com/kkh0977/223858189791
[자바스크립트 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
------------------------------------------------------------------------------
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments