From 9a22e180caf3f07466d73b6014981d270419dc83 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 31 May 2013 16:57:05 +0200 Subject: Fix screen off --HG-- extra : rebase_source : ed2b5eae3e70ad9a5bdc40b85f49c5336d346d9a --- .../blinkt/openvpn/core/DeviceStateReceiver.java | 235 ++++++++++----------- 1 file changed, 116 insertions(+), 119 deletions(-) (limited to 'src/de/blinkt/openvpn/core/DeviceStateReceiver.java') diff --git a/src/de/blinkt/openvpn/core/DeviceStateReceiver.java b/src/de/blinkt/openvpn/core/DeviceStateReceiver.java index b27ea00f..f20e3617 100644 --- a/src/de/blinkt/openvpn/core/DeviceStateReceiver.java +++ b/src/de/blinkt/openvpn/core/DeviceStateReceiver.java @@ -15,56 +15,56 @@ import de.blinkt.openvpn.core.OpenVPN.ByteCountListener; import java.util.LinkedList; public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountListener { - private int lastNetwork=-1; - private OpenVPNMangement mManangement; + private int lastNetwork=-1; + private OpenVPNMangement mManangement; - // Window time in s - private final int TRAFFIC_WINDOW = 60; - // Data traffic limit in bytes - private final long TRAFFIC_LIMIT = 64 * 1024; + // Window time in s + private final int TRAFFIC_WINDOW = 60; + // Data traffic limit in bytes + private final long TRAFFIC_LIMIT = 64 * 1024; - connectState network= connectState.DISCONNECTED; - connectState screen = connectState.SHOULDBECONNECTED; + connectState network= connectState.DISCONNECTED; + connectState screen = connectState.SHOULDBECONNECTED; - private String lastStateMsg=null; + private String lastStateMsg=null; - enum connectState { - SHOULDBECONNECTED, - PENDINGDISCONNECT, - DISCONNECTED - } + enum connectState { + SHOULDBECONNECTED, + PENDINGDISCONNECT, + DISCONNECTED + } - static class Datapoint { - private Datapoint(long t, long d) - { - timestamp = t; - data = d; - } + static class Datapoint { + private Datapoint(long t, long d) + { + timestamp = t; + data = d; + } - long timestamp; - long data; - } + long timestamp; + long data; + } - LinkedList trafficdata = new LinkedList(); + LinkedList trafficdata = new LinkedList(); - @Override - public void updateByteCount(long in, long out, long diffin, long diffout) { - Log.i("OpenVPN", String.format("State: %s %s",network.name(), screen.name())); + @Override + public void updateByteCount(long in, long out, long diffin, long diffout) { + Log.i("OpenVPN", String.format("State: %s %s",network.name(), screen.name())); - if (screen!=connectState.PENDINGDISCONNECT) - return; + if (screen!=connectState.PENDINGDISCONNECT) + return; - long total = diffin + diffout; - trafficdata.add(new Datapoint(System.currentTimeMillis(),total)); + long total = diffin + diffout; + trafficdata.add(new Datapoint(System.currentTimeMillis(),total)); - while(trafficdata.getFirst().timestamp <= (System.currentTimeMillis() - TRAFFIC_WINDOW*1000)) { - trafficdata.removeFirst(); - } + while(trafficdata.getFirst().timestamp <= (System.currentTimeMillis() - TRAFFIC_WINDOW*1000)) { + trafficdata.removeFirst(); + } - long windowtraffic = 0; - for (Datapoint dp: trafficdata) - windowtraffic += dp.data; + long windowtraffic = 0; + for (Datapoint dp: trafficdata) + windowtraffic += dp.data; if(windowtraffic < TRAFFIC_LIMIT) { screen = connectState.DISCONNECTED; @@ -73,23 +73,19 @@ public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountL mManangement.pause(); } - Log.i("OpenVPN", String.format("State: %s %s total %d last %d time %d",network.name(), screen.name(),windowtraffic/1024, - total, - System.currentTimeMillis()/1024)); - - } + } - public DeviceStateReceiver(OpenVPNMangement magnagement) { - super(); - mManangement = magnagement; - } + public DeviceStateReceiver(OpenVPNMangement magnagement) { + super(); + mManangement = magnagement; + } - @Override - public void onReceive(Context context, Intent intent) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + @Override + public void onReceive(Context context, Intent intent) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { @@ -97,46 +93,47 @@ public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountL } else if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { boolean screenoff = prefs.getBoolean("screenoff", false); - if(screenoff) + if(screenoff) { if(!ProfileManager.getLastConnectedVpn().mPersistTun) OpenVPN.logError(R.string.screen_nopersistenttun); - screen = connectState.PENDINGDISCONNECT; - fillTrafficData(); - if (network == connectState.DISCONNECTED) - screen = connectState.DISCONNECTED; + screen = connectState.PENDINGDISCONNECT; + fillTrafficData(); + if (network == connectState.DISCONNECTED) + screen = connectState.DISCONNECTED; + } } else if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) { - // Network was disabled because screen off - if (screen == connectState.DISCONNECTED && network == connectState.SHOULDBECONNECTED) { - mManangement.resume(); + // Network was disabled because screen off + if (screen == connectState.DISCONNECTED && network == connectState.SHOULDBECONNECTED) { + mManangement.resume(); - } - screen = connectState.SHOULDBECONNECTED; + } + screen = connectState.SHOULDBECONNECTED; - } - } + } + } - private void fillTrafficData() { - trafficdata.add(new Datapoint(System.currentTimeMillis(), TRAFFIC_LIMIT)); - } + private void fillTrafficData() { + trafficdata.add(new Datapoint(System.currentTimeMillis(), TRAFFIC_LIMIT)); + } - public void networkStateChange(Context context) { - NetworkInfo networkInfo = getCurrentNetworkInfo(context); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean sendusr1 = prefs.getBoolean("netchangereconnect", true); + public void networkStateChange(Context context) { + NetworkInfo networkInfo = getCurrentNetworkInfo(context); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean sendusr1 = prefs.getBoolean("netchangereconnect", true); - String netstatestring; - if(networkInfo==null) { - netstatestring = "not connected"; + String netstatestring; + if(networkInfo==null) { + netstatestring = "not connected"; } else { - String subtype = networkInfo.getSubtypeName(); - if(subtype==null) - subtype = ""; - String extrainfo = networkInfo.getExtraInfo(); - if(extrainfo==null) - extrainfo=""; + String subtype = networkInfo.getSubtypeName(); + if(subtype==null) + subtype = ""; + String extrainfo = networkInfo.getExtraInfo(); + if(extrainfo==null) + extrainfo=""; /* if(networkInfo.getType()==android.net.ConnectivityManager.TYPE_WIFI) { @@ -149,53 +146,53 @@ public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountL - netstatestring = String.format("%2$s %4$s to %1$s %3$s",networkInfo.getTypeName(), - networkInfo.getDetailedState(),extrainfo,subtype ); - } + netstatestring = String.format("%2$s %4$s to %1$s %3$s",networkInfo.getTypeName(), + networkInfo.getDetailedState(),extrainfo,subtype ); + } - if(networkInfo!=null && networkInfo.getState() == State.CONNECTED) { - int newnet = networkInfo.getType(); - network = connectState.SHOULDBECONNECTED; - - if(sendusr1 && lastNetwork!=newnet) { - if (screen == connectState.PENDINGDISCONNECT) - screen = connectState.DISCONNECTED; - - if (lastNetwork==-1){ - if (screen == connectState.SHOULDBECONNECTED) - mManangement.resume(); - }else{ - if (screen == connectState.SHOULDBECONNECTED) - mManangement.reconnect(); - } - - - lastNetwork = newnet; - } - } else if (networkInfo==null) { - // Not connected, stop openvpn, set last connected network to no network - lastNetwork=-1; - if(sendusr1) { - mManangement.pause(); - network = connectState.DISCONNECTED; - - // Set screen state to be disconnected if it want to disconnect - if (screen == connectState.PENDINGDISCONNECT) - screen = connectState.DISCONNECTED; - } - } + if(networkInfo!=null && networkInfo.getState() == State.CONNECTED) { + int newnet = networkInfo.getType(); + network = connectState.SHOULDBECONNECTED; + + if(sendusr1 && lastNetwork!=newnet) { + if (screen == connectState.PENDINGDISCONNECT) + screen = connectState.DISCONNECTED; + + if (lastNetwork==-1){ + if (screen == connectState.SHOULDBECONNECTED) + mManangement.resume(); + }else{ + if (screen == connectState.SHOULDBECONNECTED) + mManangement.reconnect(); + } + + + lastNetwork = newnet; + } + } else if (networkInfo==null) { + // Not connected, stop openvpn, set last connected network to no network + lastNetwork=-1; + if(sendusr1) { + mManangement.pause(); + network = connectState.DISCONNECTED; + + // Set screen state to be disconnected if it want to disconnect + if (screen == connectState.PENDINGDISCONNECT) + screen = connectState.DISCONNECTED; + } + } - if(!netstatestring.equals(lastStateMsg)) - OpenVPN.logInfo(R.string.netstatus, netstatestring); - lastStateMsg=netstatestring; + if(!netstatestring.equals(lastStateMsg)) + OpenVPN.logInfo(R.string.netstatus, netstatestring); + lastStateMsg=netstatestring; - } + } - private NetworkInfo getCurrentNetworkInfo(Context context) { - ConnectivityManager conn = (ConnectivityManager) - context.getSystemService(Context.CONNECTIVITY_SERVICE); + private NetworkInfo getCurrentNetworkInfo(Context context) { + ConnectivityManager conn = (ConnectivityManager) + context.getSystemService(Context.CONNECTIVITY_SERVICE); return conn.getActiveNetworkInfo(); - } + } } -- cgit v1.2.3