diff --git a/talk/examples/android/src/org/appspot/apprtc/CallActivity.java b/talk/examples/android/src/org/appspot/apprtc/CallActivity.java index e2ef91e46a..4f3f52bfe6 100644 --- a/talk/examples/android/src/org/appspot/apprtc/CallActivity.java +++ b/talk/examples/android/src/org/appspot/apprtc/CallActivity.java @@ -37,6 +37,7 @@ import android.app.AlertDialog; import android.app.FragmentTransaction; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.Uri; import android.opengl.GLSurfaceView; import android.os.Bundle; @@ -93,6 +94,14 @@ public class CallActivity extends Activity public static final String EXTRA_RUNTIME = "org.appspot.apprtc.RUNTIME"; private static final String TAG = "CallRTCClient"; + + // List of mandatory application permissions. + private static final String[] MANDATORY_PERMISSIONS = { + "android.permission.MODIFY_AUDIO_SETTINGS", + "android.permission.RECORD_AUDIO", + "android.permission.INTERNET" + }; + // Peer connection statistics callback period in ms. private static final int STAT_CALLBACK_PERIOD = 1000; // Local preview screen position before call is connected. @@ -186,6 +195,16 @@ public class CallActivity extends Activity } }); + // Check for mandatory permissions. + for (String permission : MANDATORY_PERMISSIONS) { + if (checkCallingOrSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + logAndToast("Permission " + permission + " is not granted"); + setResult(RESULT_CANCELED); + finish(); + return; + } + } + // Get Intent parameters. final Intent intent = getIntent(); Uri roomUri = intent.getData(); diff --git a/talk/examples/android/src/org/appspot/apprtc/PeerConnectionClient.java b/talk/examples/android/src/org/appspot/apprtc/PeerConnectionClient.java index 739c49eb73..41faab1799 100644 --- a/talk/examples/android/src/org/appspot/apprtc/PeerConnectionClient.java +++ b/talk/examples/android/src/org/appspot/apprtc/PeerConnectionClient.java @@ -418,6 +418,8 @@ public class PeerConnectionClient { // TCP candidates are only useful when connecting to a server that supports // ICE-TCP. rtcConfig.tcpCandidatePolicy = PeerConnection.TcpCandidatePolicy.DISABLED; + rtcConfig.bundlePolicy = PeerConnection.BundlePolicy.MAXBUNDLE; + rtcConfig.rtcpMuxPolicy = PeerConnection.RtcpMuxPolicy.REQUIRE; peerConnection = factory.createPeerConnection( rtcConfig, pcConstraints, pcObserver);