diff --git a/talk/examples/android/AndroidManifest.xml b/talk/examples/android/AndroidManifest.xml
index f898641f8c..cdf674deb5 100644
--- a/talk/examples/android/AndroidManifest.xml
+++ b/talk/examples/android/AndroidManifest.xml
@@ -4,38 +4,40 @@
android:versionCode="1"
android:versionName="1.0">
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/talk/examples/android/res/drawable-hdpi/disconnect.png b/talk/examples/android/res/drawable-hdpi/disconnect.png
new file mode 100644
index 0000000000..be36174c24
Binary files /dev/null and b/talk/examples/android/res/drawable-hdpi/disconnect.png differ
diff --git a/talk/examples/android/res/drawable-hdpi/ic_launcher.png b/talk/examples/android/res/drawable-hdpi/ic_launcher.png
index f3e9d12cc6..f01a31a717 100644
Binary files a/talk/examples/android/res/drawable-hdpi/ic_launcher.png and b/talk/examples/android/res/drawable-hdpi/ic_launcher.png differ
diff --git a/talk/examples/android/res/drawable-ldpi/disconnect.png b/talk/examples/android/res/drawable-ldpi/disconnect.png
new file mode 100644
index 0000000000..be36174c24
Binary files /dev/null and b/talk/examples/android/res/drawable-ldpi/disconnect.png differ
diff --git a/talk/examples/android/res/drawable-mdpi/disconnect.png b/talk/examples/android/res/drawable-mdpi/disconnect.png
new file mode 100644
index 0000000000..be36174c24
Binary files /dev/null and b/talk/examples/android/res/drawable-mdpi/disconnect.png differ
diff --git a/talk/examples/android/res/drawable-mdpi/ic_launcher.png b/talk/examples/android/res/drawable-mdpi/ic_launcher.png
index 9709a1e928..b8b4b0ec4b 100644
Binary files a/talk/examples/android/res/drawable-mdpi/ic_launcher.png and b/talk/examples/android/res/drawable-mdpi/ic_launcher.png differ
diff --git a/talk/examples/android/res/drawable-xhdpi/disconnect.png b/talk/examples/android/res/drawable-xhdpi/disconnect.png
new file mode 100644
index 0000000000..be36174c24
Binary files /dev/null and b/talk/examples/android/res/drawable-xhdpi/disconnect.png differ
diff --git a/talk/examples/android/res/drawable-xhdpi/ic_launcher.png b/talk/examples/android/res/drawable-xhdpi/ic_launcher.png
index db2c4f6900..a3cd45890c 100644
Binary files a/talk/examples/android/res/drawable-xhdpi/ic_launcher.png and b/talk/examples/android/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/talk/examples/android/res/layout/activity_connect.xml b/talk/examples/android/res/layout/activity_connect.xml
new file mode 100644
index 0000000000..e9e7fafdeb
--- /dev/null
+++ b/talk/examples/android/res/layout/activity_connect.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/talk/examples/android/res/layout/activity_fullscreen.xml b/talk/examples/android/res/layout/activity_fullscreen.xml
new file mode 100644
index 0000000000..fc9ee9e28a
--- /dev/null
+++ b/talk/examples/android/res/layout/activity_fullscreen.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/talk/examples/android/res/layout/fragment_menubar.xml b/talk/examples/android/res/layout/fragment_menubar.xml
new file mode 100644
index 0000000000..6d40138c60
--- /dev/null
+++ b/talk/examples/android/res/layout/fragment_menubar.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/talk/examples/android/res/values/strings.xml b/talk/examples/android/res/values/strings.xml
index bac765a3fd..756a7a2fd9 100644
--- a/talk/examples/android/res/values/strings.xml
+++ b/talk/examples/android/res/values/strings.xml
@@ -1,4 +1,19 @@
- AppRTC
+ AppRTC
+ Disconnect Call
+ URL:
+ Room name:
+
+ Please enter a room name. Room names are shared with everyone, so think
+ of something unique and send it to a friend.
+
+ Connect
+ Loopback connection
+ Invalid URL
+ The URL or room name you entered resulted in an invalid URL: %1$s
+
+ Connecting to: %1$s
+ FATAL ERROR: Missing URL to connect to.
+ OK
diff --git a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java
index 4718a01001..32728aa9a0 100644
--- a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java
+++ b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java
@@ -29,19 +29,24 @@ package org.appspot.apprtc;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.res.Configuration;
import android.graphics.Color;
-import android.graphics.Point;
import android.media.AudioManager;
+import android.net.Uri;
+import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
+import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
+import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
@@ -66,13 +71,16 @@ public class AppRTCDemoActivity extends Activity
private PeerConnectionClient pc;
private AppRTCClient appRtcClient = new GAERTCClient(this, this);
private AppRTCSignalingParameters appRtcParameters;
- private AppRTCGLView vsv;
+ private View rootView;
+ private View menuBar;
+ private GLSurfaceView videoView;
private VideoRenderer.Callbacks localRender;
private VideoRenderer.Callbacks remoteRender;
private Toast logToast;
private final LayoutParams hudLayout =
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
private TextView hudView;
+ private TextView roomName;
// Synchronize on quit[0] to avoid teardown-related crashes.
private final Boolean[] quit = new Boolean[] { false };
@@ -80,29 +88,66 @@ public class AppRTCDemoActivity extends Activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Set window styles for fullscreen-window size. Needs to be done before
+ // adding content.
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_FULLSCREEN |
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+
+ setContentView(R.layout.activity_fullscreen);
+
Thread.setDefaultUncaughtExceptionHandler(
new UnhandledExceptionHandler(this));
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ rootView = findViewById(android.R.id.content);
+ menuBar = findViewById(R.id.menubar_fragment);
+ roomName = (TextView) findViewById(R.id.room_name);
+ videoView = (GLSurfaceView) findViewById(R.id.glview);
- Point displaySize = new Point();
- getWindowManager().getDefaultDisplay().getRealSize(displaySize);
-
- vsv = new AppRTCGLView(this, displaySize);
- VideoRendererGui.setView(vsv);
+ VideoRendererGui.setView(videoView);
remoteRender = VideoRendererGui.create(0, 0, 100, 100,
VideoRendererGui.ScalingType.SCALE_ASPECT_FIT);
localRender = VideoRendererGui.create(0, 0, 100, 100,
VideoRendererGui.ScalingType.SCALE_ASPECT_FIT);
- vsv.setOnClickListener(new View.OnClickListener() {
- @Override public void onClick(View v) {
- toggleHUD();
- }
- });
- setContentView(vsv);
- logAndToast("Tap the screen to toggle stats visibility");
+ videoView.setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ int visibility = menuBar.getVisibility() == View.VISIBLE
+ ? View.INVISIBLE : View.VISIBLE;
+ menuBar.setVisibility(visibility);
+ roomName.setVisibility(visibility);
+ if (visibility == View.VISIBLE) {
+ menuBar.bringToFront();
+ roomName.bringToFront();
+ rootView.invalidate();
+ }
+ }
+ });
+
+ ((ImageButton) findViewById(R.id.button_disconnect)).setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ logAndToast("Disconnecting call.");
+ disconnect();
+ }
+ });
+
+ ((ImageButton) findViewById(R.id.button_toggle_debug)).setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ int visibility = hudView.getVisibility() == View.VISIBLE
+ ? View.INVISIBLE : View.VISIBLE;
+ hudView.setVisibility(visibility);
+ }
+ });
hudView = new TextView(this);
hudView.setTextColor(Color.BLACK);
@@ -123,17 +168,40 @@ public class AppRTCDemoActivity extends Activity
audioManager.setSpeakerphoneOn(!isWiredHeadsetOn);
final Intent intent = getIntent();
- if ("android.intent.action.VIEW".equals(intent.getAction())) {
- connectToRoom(intent.getData().toString());
- return;
+ Uri url = intent.getData();
+ if (url != null) {
+ String room = url.getQueryParameter("r");
+ String loopback = url.getQueryParameter("debug");
+ if ((room != null && !room.equals("")) ||
+ (loopback != null && loopback.equals("loopback"))) {
+ logAndToast(getString(R.string.connecting_to, url));
+ appRtcClient.connectToRoom(url.toString());
+ roomName.setText(room);
+ } else {
+ logAndToast("Empty or missing room name!");
+ finish();
+ }
+ } else {
+ logAndToast(getString(R.string.missing_url));
+ Log.wtf(TAG, "Didn't get any URL in intent!");
+ finish();
+ }
+ }
+
+ public static class MenuBarFragment extends Fragment {
+ @Override
+ public View onCreateView(
+ LayoutInflater inflater,
+ ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_menubar, container, false);
}
- showGetRoomUI();
}
@Override
public void onPause() {
super.onPause();
- vsv.onPause();
+ videoView.onPause();
if (pc != null) {
pc.stopVideoSource();
}
@@ -142,59 +210,18 @@ public class AppRTCDemoActivity extends Activity
@Override
public void onResume() {
super.onResume();
- vsv.onResume();
+ videoView.onResume();
if (pc != null) {
pc.startVideoSource();
}
}
- @Override
- public void onConfigurationChanged (Configuration newConfig) {
- Point displaySize = new Point();
- getWindowManager().getDefaultDisplay().getSize(displaySize);
- vsv.updateDisplaySize(displaySize);
- super.onConfigurationChanged(newConfig);
- }
-
@Override
protected void onDestroy() {
- disconnectAndExit();
+ disconnect();
super.onDestroy();
}
- private void showGetRoomUI() {
- final EditText roomInput = new EditText(this);
- roomInput.setText("https://apprtc.appspot.com/?r=");
- roomInput.setSelection(roomInput.getText().length());
- DialogInterface.OnClickListener listener =
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- abortUnless(which == DialogInterface.BUTTON_POSITIVE, "lolwat?");
- dialog.dismiss();
- connectToRoom(roomInput.getText().toString());
- }
- };
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder
- .setMessage("Enter room URL").setView(roomInput)
- .setPositiveButton("Go!", listener).show();
- }
-
- private void connectToRoom(String roomUrl) {
- logAndToast("Connecting to room...");
- appRtcClient.connectToRoom(roomUrl);
- }
-
- // Toggle visibility of the heads-up display.
- private void toggleHUD() {
- if (hudView.getVisibility() == View.VISIBLE) {
- hudView.setVisibility(View.INVISIBLE);
- } else {
- hudView.setVisibility(View.VISIBLE);
- }
- }
-
// Update the heads-up display with information from |reports|.
private void updateHUD(StatsReport[] reports) {
StringBuilder builder = new StringBuilder();
@@ -243,7 +270,7 @@ public class AppRTCDemoActivity extends Activity
}
// Disconnect from remote resources, dispose of local resources, and exit.
- private void disconnectAndExit() {
+ private void disconnect() {
synchronized (quit[0]) {
if (quit[0]) {
return;
@@ -300,7 +327,7 @@ public class AppRTCDemoActivity extends Activity
}
final Runnable runnableThis = this;
if (hudView.getVisibility() == View.INVISIBLE) {
- vsv.postDelayed(runnableThis, 1000);
+ videoView.postDelayed(runnableThis, 1000);
return;
}
boolean success = finalPC.getStats(new StatsObserver() {
@@ -313,7 +340,7 @@ public class AppRTCDemoActivity extends Activity
for (StatsReport report : reports) {
Log.d(TAG, "Stats: " + report.toString());
}
- vsv.postDelayed(runnableThis, 1000);
+ videoView.postDelayed(runnableThis, 1000);
}
}, null);
if (!success) {
@@ -322,7 +349,7 @@ public class AppRTCDemoActivity extends Activity
}
}
};
- vsv.postDelayed(repeatedStatsLogger, 1000);
+ videoView.postDelayed(repeatedStatsLogger, 1000);
}
logAndToast("Waiting for remote connection...");
@@ -358,13 +385,13 @@ public class AppRTCDemoActivity extends Activity
@Override
public void onChannelClose() {
logAndToast("Remote end hung up; dropping PeerConnection");
- disconnectAndExit();
+ disconnect();
}
@Override
public void onChannelError(int code, String description) {
logAndToast("Channel error: " + code + ". " + description);
- disconnectAndExit();
+ disconnect();
}
// -----Implementation of PeerConnectionClient.PeerConnectionEvents.---------
diff --git a/talk/examples/android/src/org/appspot/apprtc/AppRTCGLView.java b/talk/examples/android/src/org/appspot/apprtc/AppRTCGLView.java
deleted file mode 100644
index e622ab9044..0000000000
--- a/talk/examples/android/src/org/appspot/apprtc/AppRTCGLView.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * libjingle
- * Copyright 2014, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.appspot.apprtc;
-
-import android.content.Context;
-import android.graphics.Point;
-import android.opengl.GLSurfaceView;
-
-public class AppRTCGLView extends GLSurfaceView {
- private Point screenDimensions;
-
- public AppRTCGLView(Context c, Point screenDimensions) {
- super(c);
- this.screenDimensions = screenDimensions;
- }
-
- public void updateDisplaySize(Point screenDimensions) {
- this.screenDimensions = screenDimensions;
- }
-
- @Override
- protected void onMeasure(int unusedX, int unusedY) {
- // Go big or go home!
- setMeasuredDimension(screenDimensions.x, screenDimensions.y);
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- setSystemUiVisibility(SYSTEM_UI_FLAG_HIDE_NAVIGATION |
- SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
- }
-}
diff --git a/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java b/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java
new file mode 100644
index 0000000000..e02104e8ee
--- /dev/null
+++ b/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java
@@ -0,0 +1,131 @@
+/*
+ * libjingle
+ * Copyright 2014, Google Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.appspot.apprtc;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.inputmethod.EditorInfo;
+import android.webkit.URLUtil;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.TextView;
+
+/**
+ * Handles the initial setup where the user selects which room to join.
+ */
+public class ConnectActivity extends Activity {
+
+ private static final String TAG = "ConnectActivity";
+ public static final String CONNECT_URL_EXTRA = "connect_url";
+ private Button connectButton;
+ private EditText urlEditText;
+ private EditText roomEditText;
+ private CheckBox loopbackCheckBox;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // If an implicit VIEW intent is launching the app, go directly to that URL.
+ final Intent intent = getIntent();
+ if ("android.intent.action.VIEW".equals(intent.getAction())) {
+ connectToRoom(intent.getData().toString());
+ return;
+ }
+
+ setContentView(R.layout.activity_connect);
+
+ urlEditText = (EditText) findViewById(R.id.url_edittext);
+
+ loopbackCheckBox = (CheckBox) findViewById(R.id.check_loopback);
+ loopbackCheckBox.setChecked(false);
+
+ roomEditText = (EditText) findViewById(R.id.room_edittext);
+ roomEditText.setOnEditorActionListener(
+ new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(
+ TextView textView, int i, KeyEvent keyEvent) {
+ if (i == EditorInfo.IME_ACTION_GO) {
+ connectButton.performClick();
+ return true;
+ }
+ return false;
+ }
+ });
+ roomEditText.requestFocus();
+
+ connectButton = (Button) findViewById(R.id.connect_button);
+ connectButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ String url = urlEditText.getText().toString();
+ if (loopbackCheckBox.isChecked()) {
+ url += "/?debug=loopback";
+ } else {
+ url += "/?r=" + roomEditText.getText();
+ }
+ // TODO(kjellander): Add support for custom parameters to the URL.
+ connectToRoom(url);
+ }
+ });
+ }
+
+ private void connectToRoom(String roomUrl) {
+ if (validateUrl(roomUrl)) {
+ Uri url = Uri.parse(roomUrl);
+ Intent intent = new Intent(this, AppRTCDemoActivity.class);
+ intent.setData(url);
+ startActivity(intent);
+ }
+ }
+
+ private boolean validateUrl(String url) {
+ if (URLUtil.isHttpsUrl(url) || URLUtil.isHttpUrl(url))
+ return true;
+
+ new AlertDialog.Builder(this)
+ .setTitle(getText(R.string.invalid_url_title))
+ .setMessage(getString(R.string.invalid_url_text, url))
+ .setCancelable(false)
+ .setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ }).create().show();
+ return false;
+ }
+}
diff --git a/talk/libjingle_examples.gyp b/talk/libjingle_examples.gyp
index 085da39073..ff49a8e933 100755
--- a/talk/libjingle_examples.gyp
+++ b/talk/libjingle_examples.gyp
@@ -318,13 +318,20 @@
'examples/android/jni/Android.mk',
'examples/android/project.properties',
'examples/android/res/drawable-hdpi/ic_launcher.png',
+ 'examples/android/res/drawable-hdpi/disconnect.png',
'examples/android/res/drawable-ldpi/ic_launcher.png',
+ 'examples/android/res/drawable-ldpi/disconnect.png',
'examples/android/res/drawable-mdpi/ic_launcher.png',
+ 'examples/android/res/drawable-mdpi/disconnect.png',
'examples/android/res/drawable-xhdpi/ic_launcher.png',
+ 'examples/android/res/drawable-xhdpi/disconnect.png',
+ 'examples/android/res/layout/activity_connect.xml',
+ 'examples/android/res/layout/activity_fullscreen.xml',
+ 'examples/android/res/layout/fragment_menubar.xml',
'examples/android/res/values/strings.xml',
'examples/android/src/org/appspot/apprtc/AppRTCClient.java',
'examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java',
- 'examples/android/src/org/appspot/apprtc/AppRTCGLView.java',
+ 'examples/android/src/org/appspot/apprtc/ConnectActivity.java',
'examples/android/src/org/appspot/apprtc/GAEChannelClient.java',
'examples/android/src/org/appspot/apprtc/GAERTCClient.java',
'examples/android/src/org/appspot/apprtc/PeerConnectionClient.java',