Merge "Playback of test videos for TestCallVideoProvider." into lmp-dev
diff --git a/tests/res/raw/outgoing_video.mp4 b/tests/res/raw/outgoing_video.mp4
new file mode 100644
index 0000000..3e4f1cb
--- /dev/null
+++ b/tests/res/raw/outgoing_video.mp4
Binary files differ
diff --git a/tests/res/raw/test_video.mp4 b/tests/res/raw/test_video.mp4
new file mode 100644
index 0000000..1a454b3
--- /dev/null
+++ b/tests/res/raw/test_video.mp4
Binary files differ
diff --git a/tests/src/com/android/telecomm/testapps/TestCallVideoProvider.java b/tests/src/com/android/telecomm/testapps/TestCallVideoProvider.java
index 484871e..ccceedf 100644
--- a/tests/src/com/android/telecomm/testapps/TestCallVideoProvider.java
+++ b/tests/src/com/android/telecomm/testapps/TestCallVideoProvider.java
@@ -17,6 +17,7 @@
package com.android.telecomm.testapps;
import android.content.Context;
+import android.media.MediaPlayer;
import android.os.RemoteException;
import android.telecomm.CallCameraCapabilities;
import android.telecomm.CallVideoClient;
@@ -29,6 +30,8 @@
import java.util.Random;
+import com.android.telecomm.tests.R;
+
/**
* Implements the CallVideoProvider.
*/
@@ -36,9 +39,16 @@
private RemoteCallVideoClient mCallVideoClient;
private CallCameraCapabilities mCapabilities;
private Random random;
-
+ private Surface mDisplaySurface;
+ private Surface mPreviewSurface;
+ private Context mContext;
+ /** Used to play incoming video during a call. */
+ private MediaPlayer mIncomingMediaPlayer;
+ /** Used to play outgoing video during a call. */
+ private MediaPlayer mOutgoingMediaPlayer;
public TestCallVideoProvider(Context context) {
+ mContext = context;
mCapabilities = new CallCameraCapabilities(false /* zoomSupported */, 0 /* maxZoom */);
random = new Random();
}
@@ -58,12 +68,40 @@
@Override
public void onSetPreviewSurface(Surface surface) {
- log("Set preview surface");
+ log("Set preview surface " + (surface == null ? "unset" : "set"));
+ mPreviewSurface = surface;
+
+ if (mPreviewSurface != null) {
+ if (mOutgoingMediaPlayer == null) {
+ mOutgoingMediaPlayer = createMediaPlayer(mPreviewSurface, R.raw.outgoing_video);
+ }
+ mOutgoingMediaPlayer.setSurface(mPreviewSurface);
+ if (!mOutgoingMediaPlayer.isPlaying()) {
+ mOutgoingMediaPlayer.start();
+ }
+ } else {
+ mOutgoingMediaPlayer.stop();
+ mOutgoingMediaPlayer.setSurface(null);
+ }
}
@Override
public void onSetDisplaySurface(Surface surface) {
- log("Set display surface");
+ log("Set display surface " + (surface == null ? "unset" : "set"));
+ mDisplaySurface = surface;
+
+ if (mDisplaySurface != null) {
+ if (mIncomingMediaPlayer == null) {
+ mIncomingMediaPlayer = createMediaPlayer(mDisplaySurface, R.raw.test_video);
+ }
+ mIncomingMediaPlayer.setSurface(mDisplaySurface);
+ if (!mIncomingMediaPlayer.isPlaying()) {
+ mIncomingMediaPlayer.start();
+ }
+ } else {
+ mIncomingMediaPlayer.stop();
+ mIncomingMediaPlayer.setSurface(null);
+ }
}
@Override
@@ -151,4 +189,18 @@
private static void log(String msg) {
Log.w("TestCallVideoProvider", "[TestCallServiceProvider] " + msg);
}
+
+ /**
+ * Creates a media player to play a video resource on a surface.
+ * @param surface The surface.
+ * @param videoResource The video resource.
+ * @return The {@code MediaPlayer}.
+ */
+ private MediaPlayer createMediaPlayer(Surface surface, int videoResource) {
+ MediaPlayer mediaPlayer = MediaPlayer.create(mContext.getApplicationContext(),
+ videoResource);
+ mediaPlayer.setSurface(surface);
+ mediaPlayer.setLooping(true);
+ return mediaPlayer;
+ }
}