diff --git a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java index 02ebe5b7d9..ac60be201a 100644 --- a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java +++ b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java @@ -140,6 +140,11 @@ class WebRtcAudioRecord { private int InitRecording(int sampleRate, int channels) { Logd("InitRecording(sampleRate=" + sampleRate + ", channels=" + channels + ")"); + if (!WebRtcAudioUtils.hasPermission( + context, android.Manifest.permission.RECORD_AUDIO)) { + Loge("RECORD_AUDIO permission is missing"); + return -1; + } final int bytesPerFrame = channels * (BITS_PER_SAMPLE / 8); final int framesPerBuffer = sampleRate / BUFFERS_PER_SECOND; byteBuffer = byteBuffer.allocateDirect(bytesPerFrame * framesPerBuffer); diff --git a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java index 8daa6709cf..0f666a0faa 100644 --- a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java +++ b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java @@ -10,11 +10,14 @@ package org.webrtc.voiceengine; +import android.content.Context; +import android.content.pm.PackageManager; import android.media.audiofx.AcousticEchoCanceler; import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect.Descriptor; import android.media.AudioManager; import android.os.Build; +import android.os.Process; import android.util.Log; import java.lang.Thread; @@ -96,4 +99,12 @@ public final class WebRtcAudioUtils { + "Model: " + Build.MODEL + ", " + "Product: " + Build.PRODUCT); } + + // Checks if the process has as specified permission or not. + public static boolean hasPermission(Context context, String permission) { + return context.checkPermission( + permission, + Process.myPid(), + Process.myUid()) == PackageManager.PERMISSION_GRANTED; + } }