Skip to content

Commit 3eadd99

Browse files
author
Antonis
committed
Fixed #660: Export webrtc getStats functionality through our API
1 parent 2771ab9 commit 3eadd99

File tree

7 files changed

+431
-21
lines changed

7 files changed

+431
-21
lines changed

Examples/restcomm-olympus/.idea/codeStyleSettings.xml

Lines changed: 228 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Examples/restcomm-olympus/app/app.iml

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,20 @@
6262
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
6363
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6464
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
65-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
66-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
67-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
68-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
7265
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
7366
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
7467
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
7568
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
7669
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
7770
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
7871
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
72+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
73+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
74+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
7979
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
8080
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8181
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -130,10 +130,5 @@
130130
<orderEntry type="library" exported="" name="animated-vector-drawable-25.3.1" level="project" />
131131
<orderEntry type="library" exported="" name="libwebrtc-1.0.0-beta5-16765" level="project" />
132132
<orderEntry type="module" module-name="restcomm.android.sdk" exported="" />
133-
<orderEntry type="library" exported="" name="android-jain-sip-ri-1.2.293" level="project" />
134-
<orderEntry type="library" exported="" name="core-1.54.0.0" level="project" />
135-
<orderEntry type="library" exported="" name="prov-1.54.0.0" level="project" />
136-
<orderEntry type="library" exported="" name="log4j-1.2.17" level="project" />
137-
<orderEntry type="library" exported="" name="pkix-1.54.0.0" level="project" />
138133
</component>
139134
</module>

Examples/restcomm-olympus/app/src/androidTest/java/org/restcomm/android/olympus/IntegrationTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ public void run() {
208208
assertThat(((RCDevice)context.get("device")).getState()).isEqualTo(RCDevice.DeviceState.OFFLINE);
209209
assertThat(context.get("status-code")).isEqualTo(0);
210210

211+
// Even though we don't use a HandlerThread now and use the Main Looper thread that is separate from the testing thread, let's keep this
212+
// code in case we want to change the threading logic later
211213
//clientHandlerThread.quit();
212214

213215
InstrumentationRegistry.getTargetContext().unbindService(this);
@@ -682,4 +684,12 @@ public void onServiceDisconnected(ComponentName name)
682684
Log.i(TAG, "%% onServiceDisconnected");
683685
}
684686

687+
/*
688+
@Override
689+
public void onStatsGathered(RCConnection connection) {
690+
691+
}
692+
*/
693+
694+
685695
}

Examples/restcomm-olympus/app/src/main/java/org/restcomm/android/olympus/CallActivity.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
import java.util.HashMap;
5454
import java.util.ListIterator;
5555

56+
import org.json.JSONException;
57+
import org.json.JSONObject;
5658
import org.restcomm.android.sdk.RCConnection;
5759
import org.restcomm.android.sdk.RCConnectionListener;
5860
import org.restcomm.android.sdk.RCDevice;
@@ -61,7 +63,6 @@
6163

6264
public class CallActivity extends AppCompatActivity implements RCConnectionListener, View.OnClickListener,
6365
KeypadFragment.OnFragmentInteractionListener, ServiceConnection {
64-
6566
private RCConnection connection, pendingConnection;
6667
SharedPreferences prefs;
6768
private static final String TAG = "CallActivity";
@@ -602,6 +603,17 @@ public void onDisconnected(RCConnection connection) {
602603
Log.i(TAG, "RCConnection disconnected");
603604
lblStatus.setText("Disconnected");
604605

606+
// When onDisconnect() is called, WebRTC PeerConnection stats are also gathered and
607+
// can be retrieved using connection.getStats()
608+
/*
609+
try {
610+
JSONObject statsJson = new JSONObject(connection.getStats());
611+
Log.i(TAG, "Stats: " + statsJson.toString(3));
612+
} catch (JSONException e) {
613+
e.printStackTrace();
614+
}
615+
*/
616+
605617
btnMuteAudio.setVisibility(View.INVISIBLE);
606618
btnMuteVideo.setVisibility(View.INVISIBLE);
607619

@@ -651,6 +663,12 @@ public void onError(RCConnection connection, int errorCode, String errorText)
651663
pendingConnection = null;
652664
}
653665

666+
public void onStatsGathered(RCConnection connection)
667+
{
668+
669+
}
670+
671+
654672
public void onDigitSent(RCConnection connection, int statusCode, String statusText)
655673
{
656674

restcomm.android.sdk/src/main/java/org/restcomm/android/sdk/MediaClient/PeerConnectionClient.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,10 +750,10 @@ public boolean isHDVideo()
750750
return videoWidth * videoHeight >= 1280 * 720;
751751
}
752752

753-
private void getStats()
753+
public boolean getStats()
754754
{
755755
if (peerConnection == null || isError) {
756-
return;
756+
return false;
757757
}
758758
boolean success = peerConnection.getStats(new StatsObserver() {
759759
@Override
@@ -764,7 +764,9 @@ public void onComplete(final StatsReport[] reports)
764764
}, null);
765765
if (!success) {
766766
Log.e(TAG, "getStats() returns false!");
767+
return false;
767768
}
769+
return true;
768770
}
769771

770772
public void enableStatsEvents(boolean enable, int periodMs)

0 commit comments

Comments
 (0)