본문 바로가기

AOS - Kotlin

[android/kotlin] 웹뷰 내 마이크 실행

반응형
SMALL

웹에서 mdn web speech api를 이용해 음성인식 구현되어져 있는 상태

 

안드로이드 앱 내 웹뷰에서도 동작 구현되도록 하려면

 

1.  AndroidManifest.xml에 마이크 권한 추가

    <uses-permission android:name="android.permission.RECORD_AUDIO" />

 

2. webChromeClient 에 onPermissionRequest 함수 추가

    @Override
    public void onPermissionRequest(final PermissionRequest request) {
        for (String resource : request.getResources()) {
            if (PermissionRequest.RESOURCE_AUDIO_CAPTURE.equals(resource)) {
                // 마이크 권한을 요청
                if (ActivityCompat.checkSelfPermission(context,Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
                    // 권한이 이미 승인된 경우
                    request.grant(new String[]{PermissionRequest.RESOURCE_AUDIO_CAPTURE});
                } else {
                    // 권한이 없는 경우 권한 요청
                    ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_AUDIO_PERMISSION);
                }
                return;
            }
        }
        // 요청된 리소스가 없으면 거부
        request.deny();
    }

 

3. onRequestPermissionsResult 에 추가

        if(requestCode == REQUEST_AUDIO_PERMISSION){
            if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 권한이 허용됨
                webView.reload();
            }
        }

 

 

 

 

그럼 마이크 동작 잘 됨!

반응형
LIST