diff --git a/talk/app/webrtc/java/jni/peerconnection_jni.cc b/talk/app/webrtc/java/jni/peerconnection_jni.cc index 364d1963b..a0aa1d4a5 100644 --- a/talk/app/webrtc/java/jni/peerconnection_jni.cc +++ b/talk/app/webrtc/java/jni/peerconnection_jni.cc @@ -1892,11 +1892,14 @@ JOW(jlong, PeerConnectionFactory_nativeCreateObserver)( #ifdef ANDROID JOW(jboolean, PeerConnectionFactory_initializeAndroidGlobals)( - JNIEnv* jni, jclass, jobject context) { + JNIEnv* jni, jclass, jobject context, + jboolean initialize_audio, jboolean initialize_video) { CHECK(g_jvm, "JNI_OnLoad failed to run?"); bool failure = false; - failure |= webrtc::VideoEngine::SetAndroidObjects(g_jvm); - failure |= webrtc::VoiceEngine::SetAndroidObjects(g_jvm, jni, context); + if (initialize_video) + failure |= webrtc::VideoEngine::SetAndroidObjects(g_jvm); + if (initialize_audio) + failure |= webrtc::VoiceEngine::SetAndroidObjects(g_jvm, jni, context); return !failure; } #endif // ANDROID diff --git a/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java b/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java index 0d047800b..441f37ba0 100644 --- a/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java +++ b/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java @@ -43,7 +43,11 @@ public class PeerConnectionFactory { // |context| is an android.content.Context object, but we keep it untyped here // to allow building on non-Android platforms. - public static native boolean initializeAndroidGlobals(Object context); + // Callers may specify either |initializeAudio| or |initializeVideo| as false + // to skip initializing the respective engine (and avoid the need for the + // respective permissions). + public static native boolean initializeAndroidGlobals( + Object context, boolean initializeAudio, boolean initializeVideo); public PeerConnectionFactory() { nativeFactory = nativeCreatePeerConnectionFactory(); diff --git a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java index 28ac53d58..0ab47a962 100644 --- a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java +++ b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java @@ -125,7 +125,8 @@ public class AppRTCDemoActivity extends Activity addContentView(hudView, hudLayout); if (!factoryStaticInitialized) { - abortUnless(PeerConnectionFactory.initializeAndroidGlobals(this), + abortUnless(PeerConnectionFactory.initializeAndroidGlobals( + this, true, true), "Failed to initializeAndroidGlobals"); factoryStaticInitialized = true; }