| Index: talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java
|
| diff --git a/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java b/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java
|
| deleted file mode 100644
|
| index 69aeda5cbd48a527ba631eb6357cea171c548b5d..0000000000000000000000000000000000000000
|
| --- a/talk/examples/android/src/org/appspot/apprtc/ConnectActivity.java
|
| +++ /dev/null
|
| @@ -1,420 +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.app.Activity;
|
| -import android.app.AlertDialog;
|
| -import android.content.DialogInterface;
|
| -import android.content.Intent;
|
| -import android.content.SharedPreferences;
|
| -import android.net.Uri;
|
| -import android.os.Bundle;
|
| -import android.preference.PreferenceManager;
|
| -import android.util.Log;
|
| -import android.view.KeyEvent;
|
| -import android.view.Menu;
|
| -import android.view.MenuItem;
|
| -import android.view.View;
|
| -import android.view.View.OnClickListener;
|
| -import android.view.inputmethod.EditorInfo;
|
| -import android.webkit.URLUtil;
|
| -import android.widget.AdapterView;
|
| -import android.widget.ArrayAdapter;
|
| -import android.widget.EditText;
|
| -import android.widget.ImageButton;
|
| -import android.widget.ListView;
|
| -import android.widget.TextView;
|
| -
|
| -import org.json.JSONArray;
|
| -import org.json.JSONException;
|
| -
|
| -import java.util.ArrayList;
|
| -import java.util.Random;
|
| -
|
| -/**
|
| - * Handles the initial setup where the user selects which room to join.
|
| - */
|
| -public class ConnectActivity extends Activity {
|
| - private static final String TAG = "ConnectActivity";
|
| - private static final int CONNECTION_REQUEST = 1;
|
| - private static boolean commandLineRun = false;
|
| -
|
| - private ImageButton addRoomButton;
|
| - private ImageButton removeRoomButton;
|
| - private ImageButton connectButton;
|
| - private ImageButton connectLoopbackButton;
|
| - private EditText roomEditText;
|
| - private ListView roomListView;
|
| - private SharedPreferences sharedPref;
|
| - private String keyprefVideoCallEnabled;
|
| - private String keyprefResolution;
|
| - private String keyprefFps;
|
| - private String keyprefVideoBitrateType;
|
| - private String keyprefVideoBitrateValue;
|
| - private String keyprefVideoCodec;
|
| - private String keyprefAudioBitrateType;
|
| - private String keyprefAudioBitrateValue;
|
| - private String keyprefAudioCodec;
|
| - private String keyprefHwCodecAcceleration;
|
| - private String keyprefNoAudioProcessingPipeline;
|
| - private String keyprefCpuUsageDetection;
|
| - private String keyprefDisplayHud;
|
| - private String keyprefRoomServerUrl;
|
| - private String keyprefRoom;
|
| - private String keyprefRoomList;
|
| - private ArrayList<String> roomList;
|
| - private ArrayAdapter<String> adapter;
|
| -
|
| - @Override
|
| - public void onCreate(Bundle savedInstanceState) {
|
| - super.onCreate(savedInstanceState);
|
| -
|
| - // Get setting keys.
|
| - PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
|
| - sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
|
| - keyprefVideoCallEnabled = getString(R.string.pref_videocall_key);
|
| - keyprefResolution = getString(R.string.pref_resolution_key);
|
| - keyprefFps = getString(R.string.pref_fps_key);
|
| - keyprefVideoBitrateType = getString(R.string.pref_startvideobitrate_key);
|
| - keyprefVideoBitrateValue = getString(R.string.pref_startvideobitratevalue_key);
|
| - keyprefVideoCodec = getString(R.string.pref_videocodec_key);
|
| - keyprefHwCodecAcceleration = getString(R.string.pref_hwcodec_key);
|
| - keyprefAudioBitrateType = getString(R.string.pref_startaudiobitrate_key);
|
| - keyprefAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key);
|
| - keyprefAudioCodec = getString(R.string.pref_audiocodec_key);
|
| - keyprefNoAudioProcessingPipeline = getString(R.string.pref_noaudioprocessing_key);
|
| - keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key);
|
| - keyprefDisplayHud = getString(R.string.pref_displayhud_key);
|
| - keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key);
|
| - keyprefRoom = getString(R.string.pref_room_key);
|
| - keyprefRoomList = getString(R.string.pref_room_list_key);
|
| -
|
| - setContentView(R.layout.activity_connect);
|
| -
|
| - 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_DONE) {
|
| - addRoomButton.performClick();
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| - });
|
| - roomEditText.requestFocus();
|
| -
|
| - roomListView = (ListView) findViewById(R.id.room_listview);
|
| - roomListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
| -
|
| - addRoomButton = (ImageButton) findViewById(R.id.add_room_button);
|
| - addRoomButton.setOnClickListener(addRoomListener);
|
| - removeRoomButton = (ImageButton) findViewById(R.id.remove_room_button);
|
| - removeRoomButton.setOnClickListener(removeRoomListener);
|
| - connectButton = (ImageButton) findViewById(R.id.connect_button);
|
| - connectButton.setOnClickListener(connectListener);
|
| - connectLoopbackButton =
|
| - (ImageButton) findViewById(R.id.connect_loopback_button);
|
| - connectLoopbackButton.setOnClickListener(connectListener);
|
| -
|
| - // 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())
|
| - && !commandLineRun) {
|
| - commandLineRun = true;
|
| - boolean loopback = intent.getBooleanExtra(
|
| - CallActivity.EXTRA_LOOPBACK, false);
|
| - int runTimeMs = intent.getIntExtra(
|
| - CallActivity.EXTRA_RUNTIME, 0);
|
| - String room = sharedPref.getString(keyprefRoom, "");
|
| - roomEditText.setText(room);
|
| - connectToRoom(loopback, runTimeMs);
|
| - return;
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public boolean onCreateOptionsMenu(Menu menu) {
|
| - getMenuInflater().inflate(R.menu.connect_menu, menu);
|
| - return true;
|
| - }
|
| -
|
| - @Override
|
| - public boolean onOptionsItemSelected(MenuItem item) {
|
| - // Handle presses on the action bar items.
|
| - if (item.getItemId() == R.id.action_settings) {
|
| - Intent intent = new Intent(this, SettingsActivity.class);
|
| - startActivity(intent);
|
| - return true;
|
| - } else {
|
| - return super.onOptionsItemSelected(item);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void onPause() {
|
| - super.onPause();
|
| - String room = roomEditText.getText().toString();
|
| - String roomListJson = new JSONArray(roomList).toString();
|
| - SharedPreferences.Editor editor = sharedPref.edit();
|
| - editor.putString(keyprefRoom, room);
|
| - editor.putString(keyprefRoomList, roomListJson);
|
| - editor.commit();
|
| - }
|
| -
|
| - @Override
|
| - public void onResume() {
|
| - super.onResume();
|
| - String room = sharedPref.getString(keyprefRoom, "");
|
| - roomEditText.setText(room);
|
| - roomList = new ArrayList<String>();
|
| - String roomListJson = sharedPref.getString(keyprefRoomList, null);
|
| - if (roomListJson != null) {
|
| - try {
|
| - JSONArray jsonArray = new JSONArray(roomListJson);
|
| - for (int i = 0; i < jsonArray.length(); i++) {
|
| - roomList.add(jsonArray.get(i).toString());
|
| - }
|
| - } catch (JSONException e) {
|
| - Log.e(TAG, "Failed to load room list: " + e.toString());
|
| - }
|
| - }
|
| - adapter = new ArrayAdapter<String>(
|
| - this, android.R.layout.simple_list_item_1, roomList);
|
| - roomListView.setAdapter(adapter);
|
| - if (adapter.getCount() > 0) {
|
| - roomListView.requestFocus();
|
| - roomListView.setItemChecked(0, true);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void onActivityResult(
|
| - int requestCode, int resultCode, Intent data) {
|
| - if (requestCode == CONNECTION_REQUEST && commandLineRun) {
|
| - Log.d(TAG, "Return: " + resultCode);
|
| - setResult(resultCode);
|
| - commandLineRun = false;
|
| - finish();
|
| - }
|
| - }
|
| -
|
| - private final OnClickListener connectListener = new OnClickListener() {
|
| - @Override
|
| - public void onClick(View view) {
|
| - boolean loopback = false;
|
| - if (view.getId() == R.id.connect_loopback_button) {
|
| - loopback = true;
|
| - }
|
| - commandLineRun = false;
|
| - connectToRoom(loopback, 0);
|
| - }
|
| - };
|
| -
|
| - private void connectToRoom(boolean loopback, int runTimeMs) {
|
| - // Get room name (random for loopback).
|
| - String roomId;
|
| - if (loopback) {
|
| - roomId = Integer.toString((new Random()).nextInt(100000000));
|
| - } else {
|
| - roomId = getSelectedItem();
|
| - if (roomId == null) {
|
| - roomId = roomEditText.getText().toString();
|
| - }
|
| - }
|
| -
|
| - String roomUrl = sharedPref.getString(
|
| - 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)));
|
| -
|
| - // 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));
|
| -
|
| - // Check HW codec flag.
|
| - boolean hwCodec = sharedPref.getBoolean(keyprefHwCodecAcceleration,
|
| - Boolean.valueOf(getString(R.string.pref_hwcodec_default)));
|
| -
|
| - // Check Disable Audio Processing flag.
|
| - boolean noAudioProcessing = sharedPref.getBoolean(
|
| - keyprefNoAudioProcessingPipeline,
|
| - Boolean.valueOf(getString(R.string.pref_noaudioprocessing_default)));
|
| -
|
| - // 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);
|
| - }
|
| - }
|
| -
|
| - // 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);
|
| - }
|
| - }
|
| -
|
| - // Get video and audio start bitrate.
|
| - int videoStartBitrate = 0;
|
| - String bitrateTypeDefault = getString(
|
| - R.string.pref_startvideobitrate_default);
|
| - String bitrateType = sharedPref.getString(
|
| - keyprefVideoBitrateType, bitrateTypeDefault);
|
| - if (!bitrateType.equals(bitrateTypeDefault)) {
|
| - String bitrateValue = sharedPref.getString(keyprefVideoBitrateValue,
|
| - getString(R.string.pref_startvideobitratevalue_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);
|
| - }
|
| -
|
| - // Test if CpuOveruseDetection should be disabled. By default is on.
|
| - boolean cpuOveruseDetection = sharedPref.getBoolean(
|
| - keyprefCpuUsageDetection,
|
| - Boolean.valueOf(
|
| - getString(R.string.pref_cpu_usage_detection_default)));
|
| -
|
| - // Check statistics display option.
|
| - boolean displayHud = sharedPref.getBoolean(keyprefDisplayHud,
|
| - Boolean.valueOf(getString(R.string.pref_displayhud_default)));
|
| -
|
| - // Start AppRTCDemo activity.
|
| - Log.d(TAG, "Connecting to room " + roomId + " at URL " + roomUrl);
|
| - if (validateUrl(roomUrl)) {
|
| - Uri uri = Uri.parse(roomUrl);
|
| - Intent intent = new Intent(this, CallActivity.class);
|
| - intent.setData(uri);
|
| - intent.putExtra(CallActivity.EXTRA_ROOMID, roomId);
|
| - intent.putExtra(CallActivity.EXTRA_LOOPBACK, loopback);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEO_CALL, videoCallEnabled);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEO_WIDTH, videoWidth);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEO_HEIGHT, videoHeight);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEO_FPS, cameraFps);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEO_BITRATE, videoStartBitrate);
|
| - intent.putExtra(CallActivity.EXTRA_VIDEOCODEC, videoCodec);
|
| - intent.putExtra(CallActivity.EXTRA_HWCODEC_ENABLED, hwCodec);
|
| - intent.putExtra(CallActivity.EXTRA_NOAUDIOPROCESSING_ENABLED,
|
| - noAudioProcessing);
|
| - intent.putExtra(CallActivity.EXTRA_AUDIO_BITRATE, audioStartBitrate);
|
| - intent.putExtra(CallActivity.EXTRA_AUDIOCODEC, audioCodec);
|
| - intent.putExtra(CallActivity.EXTRA_CPUOVERUSE_DETECTION,
|
| - cpuOveruseDetection);
|
| - intent.putExtra(CallActivity.EXTRA_DISPLAY_HUD, displayHud);
|
| - intent.putExtra(CallActivity.EXTRA_CMDLINE, commandLineRun);
|
| - intent.putExtra(CallActivity.EXTRA_RUNTIME, runTimeMs);
|
| -
|
| - startActivityForResult(intent, CONNECTION_REQUEST);
|
| - }
|
| - }
|
| -
|
| - 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;
|
| - }
|
| -
|
| - private final OnClickListener addRoomListener = new OnClickListener() {
|
| - @Override
|
| - public void onClick(View view) {
|
| - String newRoom = roomEditText.getText().toString();
|
| - if (newRoom.length() > 0 && !roomList.contains(newRoom)) {
|
| - adapter.add(newRoom);
|
| - adapter.notifyDataSetChanged();
|
| - }
|
| - }
|
| - };
|
| -
|
| - private final OnClickListener removeRoomListener = new OnClickListener() {
|
| - @Override
|
| - public void onClick(View view) {
|
| - String selectedRoom = getSelectedItem();
|
| - if (selectedRoom != null) {
|
| - adapter.remove(selectedRoom);
|
| - adapter.notifyDataSetChanged();
|
| - }
|
| - }
|
| - };
|
| -
|
| - private String getSelectedItem() {
|
| - int position = AdapterView.INVALID_POSITION;
|
| - if (roomListView.getCheckedItemCount() > 0 && adapter.getCount() > 0) {
|
| - position = roomListView.getCheckedItemPosition();
|
| - if (position >= adapter.getCount()) {
|
| - position = AdapterView.INVALID_POSITION;
|
| - }
|
| - }
|
| - if (position != AdapterView.INVALID_POSITION) {
|
| - return adapter.getItem(position);
|
| - } else {
|
| - return null;
|
| - }
|
| - }
|
| -
|
| -}
|
|
|