1
0
Fork 0
mirror of https://github.com/M66B/NetGuard.git synced 2025-02-22 14:21:01 +00:00

Show mobile network type in action bar

This commit is contained in:
M66B 2015-11-08 19:29:09 +01:00
parent aefa8900fe
commit c681727177
4 changed files with 41 additions and 10 deletions

View file

@ -47,6 +47,8 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SwitchCompat;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
@ -78,6 +80,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
private ImageView ivInteractive;
private ImageView ivNetwork;
private ImageView ivMetered;
private TextView tvGeneration;
private SwipeRefreshLayout swipeRefresh;
private RuleAdapter adapter = null;
private MenuItem menuSearch = null;
@ -120,6 +123,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
ivInteractive = (ImageView) actionView.findViewById(R.id.ivInteractive);
ivNetwork = (ImageView) actionView.findViewById(R.id.ivNetwork);
ivMetered = (ImageView) actionView.findViewById(R.id.ivMetered);
tvGeneration = (TextView) actionView.findViewById(R.id.tvGeneration);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setCustomView(actionView);
@ -221,6 +225,10 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
intentFilter.addDataScheme("package");
registerReceiver(packageChangedReceiver, intentFilter);
// Listen for data connection state changes
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(phoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
// Connect to billing
if (Util.hasValidFingerprint(TAG, this)) {
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
@ -275,6 +283,9 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
unregisterReceiver(connectivityChangedReceiver);
unregisterReceiver(packageChangedReceiver);
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
if (IABService != null) {
unbindService(IABConnection);
IABService = null;
@ -410,6 +421,17 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
}
};
private PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state, int networkType) {
Log.i(TAG, "Data connection changed state=" + state + " network type=" + networkType);
if (state == TelephonyManager.DATA_CONNECTED)
tvGeneration.setText(Util.getNetworkGeneration(networkType));
else
tvGeneration.setText("");
}
};
private ServiceConnection IABConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {

View file

@ -302,14 +302,14 @@ public class SinkholeService extends VpnService {
public void onDataConnectionStateChanged(int state, int networkType) {
Log.i(TAG, "Data connection changed state=" + state + " network type=" + networkType);
if (state == TelephonyManager.DATA_CONNECTED) {
String networkGeneration = Util.getNetworkGeneration(networkType);
if (!last_generation.equals(networkGeneration)) {
// Network generation changed
last_generation = networkGeneration;
Log.i(TAG, "New network generation=" + last_generation);
String networkGeneration = (state == TelephonyManager.DATA_CONNECTED ? Util.getNetworkGeneration(networkType) : "");
if (!last_generation.equals(networkGeneration)) {
// Network generation changed
last_generation = networkGeneration;
Log.i(TAG, "New network generation=" + last_generation);
// Check if reload needed
// Check if reload needed
if (state == TelephonyManager.DATA_CONNECTED) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SinkholeService.this);
if (!prefs.getBoolean("metered_2g", true) ||
!prefs.getBoolean("metered_3g", true) ||
@ -360,6 +360,7 @@ public class SinkholeService extends VpnService {
ifPackage.addDataScheme("package");
registerReceiver(packageAddedReceiver, ifPackage);
// Listen for data connection state changes
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(phoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
}

View file

@ -109,7 +109,7 @@ public class Util {
if (ni != null && ni.getType() == ConnectivityManager.TYPE_MOBILE)
return getNetworkGeneration(ni.getSubtype());
else
return "?";
return "";
}
public static boolean isMetered(Context context) {

View file

@ -34,7 +34,7 @@
android:layout_height="16dp"
android:layout_marginStart="4dp"
android:src="@drawable/network"
android:visibility="gone" />
android:visibility="invisible" />
<ImageView
android:id="@+id/ivMetered"
@ -42,6 +42,14 @@
android:layout_height="16dp"
android:layout_marginStart="4dp"
android:src="@drawable/metered"
android:visibility="gone" />
android:visibility="invisible" />
<TextView
android:id="@+id/tvGeneration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>