From 10f41ef157317aec3dfc54c445465662d8502469 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Wed, 8 Nov 2017 14:46:56 +0000 Subject: [PATCH] Log network usage at shutdown. --- .../briarproject/briar/android/AppModule.java | 10 +++++ .../briar/android/NetworkUsageLogger.java | 40 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java index c5b09f2443..4d5dad242d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java @@ -38,6 +38,8 @@ public class AppModule { static class EagerSingletons { @Inject AndroidNotificationManager androidNotificationManager; + @Inject + NetworkUsageLogger networkUsageLogger; } private final Application application; @@ -173,4 +175,12 @@ public class AppModule { ScreenFilterMonitorImpl screenFilterMonitor) { return screenFilterMonitor; } + + @Provides + NetworkUsageLogger provideNetworkUsageLogger( + LifecycleManager lifecycleManager) { + NetworkUsageLogger networkUsageLogger = new NetworkUsageLogger(); + lifecycleManager.registerService(networkUsageLogger); + return networkUsageLogger; + } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java new file mode 100644 index 0000000000..dcf500cbf6 --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java @@ -0,0 +1,40 @@ +package org.briarproject.briar.android; + +import android.net.TrafficStats; +import android.os.Process; + +import org.briarproject.bramble.api.lifecycle.Service; +import org.briarproject.bramble.api.lifecycle.ServiceException; + +import java.util.logging.Logger; + +import static java.util.logging.Level.INFO; + +class NetworkUsageLogger implements Service { + + private static final Logger LOG = + Logger.getLogger(NetworkUsageLogger.class.getName()); + + private volatile long startTime, rxBytes, txBytes; + + @Override + public void startService() throws ServiceException { + startTime = System.currentTimeMillis(); + int uid = Process.myUid(); + rxBytes = TrafficStats.getUidRxBytes(uid); + txBytes = TrafficStats.getUidTxBytes(uid); + } + + @Override + public void stopService() throws ServiceException { + if (LOG.isLoggable(INFO)) { + long sessionDuration = System.currentTimeMillis() - startTime; + int uid = Process.myUid(); + long rx = TrafficStats.getUidRxBytes(uid) - rxBytes; + long tx = TrafficStats.getUidTxBytes(uid) - txBytes; + LOG.info("Duration " + (sessionDuration / 1000) + " seconds"); + LOG.info("Received " + rx + " bytes"); + LOG.info("Sent " + tx + " bytes"); + } + } +} -- GitLab