웹에서 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();
}
}
그럼 마이크 동작 잘 됨!
'AOS - Kotlin' 카테고리의 다른 글
[android/kotlin] play game 로그인 하기 (0) | 2024.09.30 |
---|---|
[android] 애드몹 전면 광고 스킵 버튼 뜨지 않는 문제 (0) | 2024.05.13 |
[android/kotlin] Media Store 이용해 파일 저장 (0) | 2024.04.05 |
[android/kotlin] base64 string > pdf 변환 후 파일 저장 (0) | 2024.04.05 |
[android/kotlin] handler 데이터 여러개 전달하기 (0) | 2024.04.05 |