diff --git a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
index 867499c982..8da9dc7dd6 100644
--- a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
+++ b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
@@ -364,8 +364,10 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
new RoomConnectionParameters(roomUri.toString(), roomId, loopback, urlParameters);
// Create CPU monitor
- cpuMonitor = new CpuMonitor(this);
- hudFragment.setCpuMonitor(cpuMonitor);
+ if (cpuMonitor.isSupported()) {
+ cpuMonitor = new CpuMonitor(this);
+ hudFragment.setCpuMonitor(cpuMonitor);
+ }
// Send intent arguments to fragments.
callFragment.setArguments(intent.getExtras());
@@ -502,7 +504,9 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
if (peerConnectionClient != null && !screencaptureEnabled) {
peerConnectionClient.stopVideoSource();
}
- cpuMonitor.pause();
+ if (cpuMonitor != null) {
+ cpuMonitor.pause();
+ }
}
@Override
@@ -513,7 +517,9 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
if (peerConnectionClient != null && !screencaptureEnabled) {
peerConnectionClient.startVideoSource();
}
- cpuMonitor.resume();
+ if (cpuMonitor != null) {
+ cpuMonitor.resume();
+ }
}
@Override
diff --git a/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java b/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
index 48543c5102..4a7ab9ecae 100644
--- a/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
+++ b/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
@@ -10,10 +10,12 @@
package org.appspot.apprtc;
+import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
+import android.os.Build;
import android.os.SystemClock;
import android.util.Log;
import java.io.BufferedReader;
@@ -71,6 +73,7 @@ import java.util.concurrent.TimeUnit;
* correct value, and then returns to back to correct reading. Both when
* jumping up and back down we might create faulty CPU load readings.
*/
+@TargetApi(Build.VERSION_CODES.KITKAT)
class CpuMonitor {
private static final String TAG = "CpuMonitor";
private static final int MOVING_AVERAGE_SAMPLES = 5;
@@ -153,7 +156,16 @@ class CpuMonitor {
}
}
+ public static boolean isSupported() {
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
+ && Build.VERSION.SDK_INT < Build.VERSION_CODES.N;
+ }
+
public CpuMonitor(Context context) {
+ if (!isSupported()) {
+ throw new RuntimeException("CpuMonitor is not supported on this Android version.");
+ }
+
Log.d(TAG, "CpuMonitor ctor.");
appContext = context.getApplicationContext();
userCpuUsage = new MovingAverage(MOVING_AVERAGE_SAMPLES);
diff --git a/sdk/android/src/java/org/webrtc/EglBase14.java b/sdk/android/src/java/org/webrtc/EglBase14.java
index 8f71bd0789..ed5e9543ba 100644
--- a/sdk/android/src/java/org/webrtc/EglBase14.java
+++ b/sdk/android/src/java/org/webrtc/EglBase14.java
@@ -18,6 +18,7 @@ import android.opengl.EGLContext;
import android.opengl.EGLDisplay;
import android.opengl.EGLExt;
import android.opengl.EGLSurface;
+import android.os.Build;
import android.view.Surface;
/**
@@ -49,10 +50,10 @@ class EglBase14 extends EglBase {
@Override
@SuppressWarnings("deprecation")
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
public long getNativeEglContext() {
- return CURRENT_SDK_VERSION >= android.os.Build.VERSION_CODES.LOLLIPOP
- ? egl14Context.getNativeHandle()
- : egl14Context.getHandle();
+ return CURRENT_SDK_VERSION >= Build.VERSION_CODES.LOLLIPOP ? egl14Context.getNativeHandle()
+ : egl14Context.getHandle();
}
public Context(android.opengl.EGLContext eglContext) {
diff --git a/tools_webrtc/android/suppressions.xml b/tools_webrtc/android/suppressions.xml
index d051a56130..452b75510e 100644
--- a/tools_webrtc/android/suppressions.xml
+++ b/tools_webrtc/android/suppressions.xml
@@ -6,17 +6,12 @@
-
-
-
-
-