| Index: webrtc/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java
|
| diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java
|
| index 5a84c446299703cd30180865894945678649489b..2b9d51c845774dbf29488f2e67e64352f5e3ed7a 100644
|
| --- a/webrtc/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java
|
| +++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java
|
| @@ -144,8 +144,10 @@ public class ConnectActivity extends Activity {
|
| if ("android.intent.action.VIEW".equals(intent.getAction()) && !commandLineRun) {
|
| boolean loopback = intent.getBooleanExtra(CallActivity.EXTRA_LOOPBACK, false);
|
| int runTimeMs = intent.getIntExtra(CallActivity.EXTRA_RUNTIME, 0);
|
| + boolean useValuesFromIntent = intent.getBooleanExtra(
|
| + CallActivity.EXTRA_USE_VALUES_FROM_INTENT, false);
|
| String room = sharedPref.getString(keyprefRoom, "");
|
| - connectToRoom(room, true, loopback, runTimeMs);
|
| + connectToRoom(room, true, loopback, useValuesFromIntent, runTimeMs);
|
| }
|
| }
|
|
|
| @@ -190,7 +192,7 @@ public class ConnectActivity extends Activity {
|
| startActivity(intent);
|
| return true;
|
| } else if (item.getItemId() == R.id.action_loopback) {
|
| - connectToRoom(null, false, true, 0);
|
| + connectToRoom(null, false, true, false, 0);
|
| return true;
|
| } else {
|
| return super.onOptionsItemSelected(item);
|
| @@ -243,8 +245,43 @@ public class ConnectActivity extends Activity {
|
| }
|
| }
|
|
|
| + /**
|
| + * Get a value from the shared preference or from the intent, if it does not
|
| + * exist the default is used.
|
| + */
|
| + private String sharedPrefGetString(int attributeId, String intentName,
|
| + int defaultId, boolean useFromIntent) {
|
| + String defaultValue = getString(defaultId);
|
| + if (useFromIntent) {
|
| + String value = getIntent().getStringExtra(intentName);
|
| + if (value != null) {
|
| + return value;
|
| + }
|
| + return defaultValue;
|
| + } else {
|
| + String attributeName = getString(attributeId);
|
| + return sharedPref.getString(attributeName, defaultValue);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Get a value from the shared preference or from the intent, if it does not
|
| + * exist the default is used.
|
| + */
|
| + private boolean sharedPrefGetBoolean(int attributeId, String intentName,
|
| + int defaultId, boolean useFromIntent) {
|
| + boolean defaultValue = Boolean.valueOf(getString(defaultId));
|
| + if (useFromIntent) {
|
| + return getIntent().getBooleanExtra(intentName, defaultValue);
|
| + } else {
|
| + String attributeName = getString(attributeId);
|
| + return sharedPref.getBoolean(attributeName, defaultValue);
|
| + }
|
| + }
|
| +
|
| private void connectToRoom(
|
| - String roomId, boolean commandLineRun, boolean loopback, int runTimeMs) {
|
| + String roomId, boolean commandLineRun, boolean loopback,
|
| + boolean useValuesFromIntent, int runTimeMs) {
|
| this.commandLineRun = commandLineRun;
|
|
|
| // roomId is random for loopback.
|
| @@ -256,112 +293,188 @@ public class ConnectActivity extends Activity {
|
| keyprefRoomServerUrl, getString(R.string.pref_room_server_url_default));
|
|
|
| // Video call enabled flag.
|
| - boolean videoCallEnabled = sharedPref.getBoolean(
|
| - keyprefVideoCallEnabled, Boolean.valueOf(getString(R.string.pref_videocall_default)));
|
| + boolean videoCallEnabled = sharedPrefGetBoolean(
|
| + R.string.pref_videocall_key,
|
| + CallActivity.EXTRA_VIDEO_CALL,
|
| + R.string.pref_videocall_default,
|
| + useValuesFromIntent);
|
|
|
| // Use Camera2 option.
|
| - boolean useCamera2 = sharedPref.getBoolean(
|
| - keyprefCamera2, Boolean.valueOf(getString(R.string.pref_camera2_default)));
|
| + boolean useCamera2 = sharedPrefGetBoolean(
|
| + R.string.pref_camera2_key,
|
| + CallActivity.EXTRA_CAMERA2,
|
| + R.string.pref_camera2_default,
|
| + useValuesFromIntent);
|
|
|
| // Get default codecs.
|
| - String videoCodec =
|
| - sharedPref.getString(keyprefVideoCodec, getString(R.string.pref_videocodec_default));
|
| - String audioCodec =
|
| - sharedPref.getString(keyprefAudioCodec, getString(R.string.pref_audiocodec_default));
|
| + String videoCodec = sharedPrefGetString(
|
| + R.string.pref_videocodec_key,
|
| + CallActivity.EXTRA_VIDEOCODEC,
|
| + R.string.pref_videocodec_default,
|
| + useValuesFromIntent);
|
| + String audioCodec = sharedPrefGetString(
|
| + R.string.pref_audiocodec_key,
|
| + CallActivity.EXTRA_AUDIOCODEC,
|
| + R.string.pref_audiocodec_default,
|
| + useValuesFromIntent);
|
|
|
| // Check HW codec flag.
|
| - boolean hwCodec = sharedPref.getBoolean(
|
| - keyprefHwCodecAcceleration, Boolean.valueOf(getString(R.string.pref_hwcodec_default)));
|
| + boolean hwCodec = sharedPrefGetBoolean(
|
| + R.string.pref_hwcodec_key,
|
| + CallActivity.EXTRA_HWCODEC_ENABLED,
|
| + R.string.pref_hwcodec_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Capture to texture.
|
| - boolean captureToTexture = sharedPref.getBoolean(keyprefCaptureToTexture,
|
| - Boolean.valueOf(getString(R.string.pref_capturetotexture_default)));
|
| + boolean captureToTexture = sharedPrefGetBoolean(
|
| + R.string.pref_capturetotexture_key,
|
| + CallActivity.EXTRA_CAPTURETOTEXTURE_ENABLED,
|
| + R.string.pref_capturetotexture_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Disable Audio Processing flag.
|
| - boolean noAudioProcessing = sharedPref.getBoolean(keyprefNoAudioProcessingPipeline,
|
| - Boolean.valueOf(getString(R.string.pref_noaudioprocessing_default)));
|
| + boolean noAudioProcessing = sharedPrefGetBoolean(
|
| + R.string.pref_noaudioprocessing_key,
|
| + CallActivity.EXTRA_NOAUDIOPROCESSING_ENABLED,
|
| + R.string.pref_noaudioprocessing_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Disable Audio Processing flag.
|
| - boolean aecDump = sharedPref.getBoolean(
|
| - keyprefAecDump, Boolean.valueOf(getString(R.string.pref_aecdump_default)));
|
| + boolean aecDump = sharedPrefGetBoolean(
|
| + R.string.pref_aecdump_key,
|
| + CallActivity.EXTRA_AECDUMP_ENABLED,
|
| + R.string.pref_aecdump_default,
|
| + useValuesFromIntent);
|
|
|
| // Check OpenSL ES enabled flag.
|
| - boolean useOpenSLES = sharedPref.getBoolean(
|
| - keyprefOpenSLES, Boolean.valueOf(getString(R.string.pref_opensles_default)));
|
| + boolean useOpenSLES = sharedPrefGetBoolean(
|
| + R.string.pref_opensles_key,
|
| + CallActivity.EXTRA_OPENSLES_ENABLED,
|
| + R.string.pref_opensles_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Disable built-in AEC flag.
|
| - boolean disableBuiltInAEC = sharedPref.getBoolean(keyprefDisableBuiltInAec,
|
| - Boolean.valueOf(getString(R.string.pref_disable_built_in_aec_default)));
|
| + boolean disableBuiltInAEC = sharedPrefGetBoolean(
|
| + R.string.pref_disable_built_in_aec_key,
|
| + CallActivity.EXTRA_DISABLE_BUILT_IN_AEC,
|
| + R.string.pref_disable_built_in_aec_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Disable built-in AGC flag.
|
| - boolean disableBuiltInAGC = sharedPref.getBoolean(keyprefDisableBuiltInAgc,
|
| - Boolean.valueOf(getString(R.string.pref_disable_built_in_agc_default)));
|
| + boolean disableBuiltInAGC = sharedPrefGetBoolean(
|
| + R.string.pref_disable_built_in_agc_key,
|
| + CallActivity.EXTRA_DISABLE_BUILT_IN_AGC,
|
| + R.string.pref_disable_built_in_agc_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Disable built-in NS flag.
|
| - boolean disableBuiltInNS = sharedPref.getBoolean(keyprefDisableBuiltInNs,
|
| - Boolean.valueOf(getString(R.string.pref_disable_built_in_ns_default)));
|
| + boolean disableBuiltInNS = sharedPrefGetBoolean(
|
| + R.string.pref_disable_built_in_ns_key,
|
| + CallActivity.EXTRA_DISABLE_BUILT_IN_NS,
|
| + R.string.pref_disable_built_in_ns_default,
|
| + useValuesFromIntent);
|
|
|
| // Check Enable level control.
|
| - boolean enableLevelControl = sharedPref.getBoolean(keyprefEnableLevelControl,
|
| - Boolean.valueOf(getString(R.string.pref_enable_level_control_key)));
|
| + boolean enableLevelControl = sharedPrefGetBoolean(
|
| + R.string.pref_enable_level_control_key,
|
| + CallActivity.EXTRA_ENABLE_LEVEL_CONTROL,
|
| + R.string.pref_enable_level_control_key,
|
| + useValuesFromIntent);
|
|
|
| // Get video resolution from settings.
|
| int videoWidth = 0;
|
| int videoHeight = 0;
|
| - String resolution =
|
| - sharedPref.getString(keyprefResolution, getString(R.string.pref_resolution_default));
|
| - String[] dimensions = resolution.split("[ x]+");
|
| - if (dimensions.length == 2) {
|
| - try {
|
| - videoWidth = Integer.parseInt(dimensions[0]);
|
| - videoHeight = Integer.parseInt(dimensions[1]);
|
| - } catch (NumberFormatException e) {
|
| - videoWidth = 0;
|
| - videoHeight = 0;
|
| - Log.e(TAG, "Wrong video resolution setting: " + resolution);
|
| + if (useValuesFromIntent) {
|
| + videoWidth = getIntent().getIntExtra(CallActivity.EXTRA_VIDEO_WIDTH, 0);
|
| + videoHeight = getIntent().getIntExtra(CallActivity.EXTRA_VIDEO_HEIGHT, 0);
|
| + }
|
| + if (videoWidth == 0 && videoHeight == 0) {
|
| + String resolution = sharedPref.getString(
|
| + keyprefResolution,
|
| + getString(R.string.pref_resolution_default));
|
| + String[] dimensions = resolution.split("[ x]+");
|
| + if (dimensions.length == 2) {
|
| + try {
|
| + videoWidth = Integer.parseInt(dimensions[0]);
|
| + videoHeight = Integer.parseInt(dimensions[1]);
|
| + } catch (NumberFormatException e) {
|
| + videoWidth = 0;
|
| + videoHeight = 0;
|
| + Log.e(TAG, "Wrong video resolution setting: " + resolution);
|
| + }
|
| }
|
| }
|
|
|
| // Get camera fps from settings.
|
| int cameraFps = 0;
|
| - String fps = sharedPref.getString(keyprefFps, getString(R.string.pref_fps_default));
|
| - String[] fpsValues = fps.split("[ x]+");
|
| - if (fpsValues.length == 2) {
|
| - try {
|
| - cameraFps = Integer.parseInt(fpsValues[0]);
|
| - } catch (NumberFormatException e) {
|
| - Log.e(TAG, "Wrong camera fps setting: " + fps);
|
| + if (useValuesFromIntent) {
|
| + cameraFps = getIntent().getIntExtra(CallActivity.EXTRA_VIDEO_FPS, 0);
|
| + }
|
| + if (cameraFps == 0) {
|
| + String fps = sharedPref.getString(keyprefFps,
|
| + getString(R.string.pref_fps_default));
|
| + String[] fpsValues = fps.split("[ x]+");
|
| + if (fpsValues.length == 2) {
|
| + try {
|
| + cameraFps = Integer.parseInt(fpsValues[0]);
|
| + } catch (NumberFormatException e) {
|
| + cameraFps = 0;
|
| + Log.e(TAG, "Wrong camera fps setting: " + fps);
|
| + }
|
| }
|
| }
|
|
|
| // Check capture quality slider flag.
|
| - boolean captureQualitySlider = sharedPref.getBoolean(keyprefCaptureQualitySlider,
|
| - Boolean.valueOf(getString(R.string.pref_capturequalityslider_default)));
|
| + boolean captureQualitySlider = sharedPrefGetBoolean(
|
| + R.string.pref_capturequalityslider_key,
|
| + CallActivity.EXTRA_VIDEO_CAPTUREQUALITYSLIDER_ENABLED,
|
| + R.string.pref_capturequalityslider_default,
|
| + useValuesFromIntent);
|
|
|
| // Get video and audio start bitrate.
|
| int videoStartBitrate = 0;
|
| - String bitrateTypeDefault = getString(R.string.pref_maxvideobitrate_default);
|
| - String bitrateType = sharedPref.getString(keyprefVideoBitrateType, bitrateTypeDefault);
|
| - if (!bitrateType.equals(bitrateTypeDefault)) {
|
| - String bitrateValue = sharedPref.getString(
|
| - keyprefVideoBitrateValue, getString(R.string.pref_maxvideobitratevalue_default));
|
| - videoStartBitrate = Integer.parseInt(bitrateValue);
|
| + if (useValuesFromIntent) {
|
| + videoStartBitrate = getIntent().getIntExtra(CallActivity.EXTRA_VIDEO_BITRATE, 0);
|
| }
|
| + if (videoStartBitrate == 0) {
|
| + String bitrateTypeDefault = getString(
|
| + R.string.pref_maxvideobitrate_default);
|
| + String bitrateType = sharedPref.getString(
|
| + keyprefVideoBitrateType, bitrateTypeDefault);
|
| + if (!bitrateType.equals(bitrateTypeDefault)) {
|
| + String bitrateValue = sharedPref.getString(keyprefVideoBitrateValue,
|
| + getString(R.string.pref_maxvideobitratevalue_default));
|
| + videoStartBitrate = Integer.parseInt(bitrateValue);
|
| + }
|
| + }
|
| +
|
| int audioStartBitrate = 0;
|
| - bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default);
|
| - bitrateType = sharedPref.getString(keyprefAudioBitrateType, bitrateTypeDefault);
|
| - if (!bitrateType.equals(bitrateTypeDefault)) {
|
| - String bitrateValue = sharedPref.getString(
|
| - keyprefAudioBitrateValue, getString(R.string.pref_startaudiobitratevalue_default));
|
| - audioStartBitrate = Integer.parseInt(bitrateValue);
|
| + if (useValuesFromIntent) {
|
| + audioStartBitrate = getIntent().getIntExtra(CallActivity.EXTRA_AUDIO_BITRATE, 0);
|
| + }
|
| + if (audioStartBitrate == 0) {
|
| + String bitrateTypeDefault = getString(R.string.pref_startaudiobitrate_default);
|
| + String bitrateType = sharedPref.getString(
|
| + keyprefAudioBitrateType, bitrateTypeDefault);
|
| + if (!bitrateType.equals(bitrateTypeDefault)) {
|
| + String bitrateValue = sharedPref.getString(keyprefAudioBitrateValue,
|
| + getString(R.string.pref_startaudiobitratevalue_default));
|
| + audioStartBitrate = Integer.parseInt(bitrateValue);
|
| + }
|
| }
|
|
|
| // Check statistics display option.
|
| - boolean displayHud = sharedPref.getBoolean(
|
| - keyprefDisplayHud, Boolean.valueOf(getString(R.string.pref_displayhud_default)));
|
| -
|
| - boolean tracing = sharedPref.getBoolean(
|
| - keyprefTracing, Boolean.valueOf(getString(R.string.pref_tracing_default)));
|
| + boolean displayHud = sharedPrefGetBoolean(
|
| + R.string.pref_displayhud_key,
|
| + CallActivity.EXTRA_DISPLAY_HUD,
|
| + R.string.pref_displayhud_default,
|
| + useValuesFromIntent);
|
| +
|
| + boolean tracing = sharedPrefGetBoolean(
|
| + R.string.pref_tracing_key,
|
| + CallActivity.EXTRA_TRACING,
|
| + R.string.pref_tracing_default,
|
| + useValuesFromIntent);
|
|
|
| // Start AppRTCMobile activity.
|
| Log.d(TAG, "Connecting to room " + roomId + " at URL " + roomUrl);
|
| @@ -395,6 +508,38 @@ public class ConnectActivity extends Activity {
|
| intent.putExtra(CallActivity.EXTRA_CMDLINE, commandLineRun);
|
| intent.putExtra(CallActivity.EXTRA_RUNTIME, runTimeMs);
|
|
|
| + if (useValuesFromIntent) {
|
| + if (getIntent().hasExtra(CallActivity.EXTRA_VIDEO_FILE_AS_CAMERA)) {
|
| + String videoFileAsCamera = getIntent().getStringExtra(
|
| + CallActivity.EXTRA_VIDEO_FILE_AS_CAMERA);
|
| + intent.putExtra(CallActivity.EXTRA_VIDEO_FILE_AS_CAMERA,
|
| + videoFileAsCamera);
|
| + }
|
| +
|
| + if (getIntent().hasExtra(CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE)) {
|
| + String saveRemoteVideoToFile = getIntent().getStringExtra(
|
| + CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE);
|
| + intent.putExtra(CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE,
|
| + saveRemoteVideoToFile);
|
| + }
|
| +
|
| + if (getIntent().hasExtra(
|
| + CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_WIDTH)) {
|
| + int videoOutWidth = getIntent().getIntExtra(
|
| + CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_WIDTH, 0);
|
| + intent.putExtra(CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_WIDTH,
|
| + videoOutWidth);
|
| + }
|
| +
|
| + if (getIntent().hasExtra(
|
| + CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT)) {
|
| + int videoOutHeight = getIntent().getIntExtra(
|
| + CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT, 0);
|
| + intent.putExtra(CallActivity.EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT,
|
| + videoOutHeight);
|
| + }
|
| + }
|
| +
|
| startActivityForResult(intent, CONNECTION_REQUEST);
|
| }
|
| }
|
| @@ -424,7 +569,7 @@ public class ConnectActivity extends Activity {
|
| @Override
|
| public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
| String roomId = ((TextView) view).getText().toString();
|
| - connectToRoom(roomId, false, false, 0);
|
| + connectToRoom(roomId, false, false, false, 0);
|
| }
|
| };
|
|
|
| @@ -442,7 +587,7 @@ public class ConnectActivity extends Activity {
|
| private final OnClickListener connectListener = new OnClickListener() {
|
| @Override
|
| public void onClick(View view) {
|
| - connectToRoom(roomEditText.getText().toString(), false, false, 0);
|
| + connectToRoom(roomEditText.getText().toString(), false, false, false, 0);
|
| }
|
| };
|
| }
|
|
|