Update Android native API example to use real camera.

For simplicity, camera with index 0 is used. User also has to manually
give the permission to use the camera for the app.

Bug: webrtc:8769
Change-Id: I371f26f94d629411fd299671b4f3202e84556b80
Reviewed-on: https://webrtc-review.googlesource.com/76982
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23284}
diff --git a/examples/androidnativeapi/jni/androidcallclient.cc b/examples/androidnativeapi/jni/androidcallclient.cc
index 657bce2..4da20b9 100644
--- a/examples/androidnativeapi/jni/androidcallclient.cc
+++ b/examples/androidnativeapi/jni/androidcallclient.cc
@@ -20,7 +20,6 @@
 #include "media/engine/internalencoderfactory.h"
 #include "media/engine/webrtcmediaengine.h"
 #include "modules/audio_processing/include/audio_processing.h"
-#include "pc/test/fakeperiodicvideocapturer.h"
 #include "rtc_base/ptr_util.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/video/wrapper.h"
@@ -97,16 +96,8 @@
   local_sink_ = webrtc::JavaToNativeVideoSink(env, local_sink.obj());
   remote_sink_ = webrtc::JavaToNativeVideoSink(env, remote_sink.obj());
 
-  // The fake video source wants to be created on the same thread as it is
-  // destroyed. It is destroyed on the signaling thread so we have to invoke
-  // here.
-  // TODO(sakal): Get picture from camera?
-  video_source_ = pcf_->CreateVideoSource(
-      signaling_thread_
-          ->Invoke<std::unique_ptr<webrtc::FakePeriodicVideoCapturer>>(
-              RTC_FROM_HERE, [&] {
-                return rtc::MakeUnique<webrtc::FakePeriodicVideoCapturer>();
-              }));
+  video_source_ = webrtc::CreateJavaVideoSource(env, signaling_thread_.get(),
+                                                false /* is_screencast */);
 
   CreatePeerConnection();
   Connect();
@@ -138,6 +129,15 @@
   delete this;
 }
 
+webrtc::ScopedJavaLocalRef<jobject>
+AndroidCallClient::GetJavaVideoCapturerObserver(
+    JNIEnv* env,
+    const webrtc::JavaRef<jobject>& cls) {
+  RTC_DCHECK_RUN_ON(&thread_checker_);
+
+  return video_source_->GetJavaVideoCapturerObserver(env);
+}
+
 void AndroidCallClient::CreatePeerConnectionFactory() {
   network_thread_ = rtc::Thread::CreateWithSocketServer();
   network_thread_->SetName("network_thread", nullptr);
@@ -277,10 +277,10 @@
   RTC_LOG(LS_INFO) << "Set local description failure: " << error;
 }
 
-}  // namespace webrtc_examples
-
 static jlong JNI_CallClient_CreateClient(
     JNIEnv* env,
     const webrtc::JavaParamRef<jclass>& cls) {
   return webrtc::NativeToJavaPointer(new webrtc_examples::AndroidCallClient());
 }
+
+}  // namespace webrtc_examples