From f9f3696fb97be54410f596b5e08449ead4599a56 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Tue, 19 Jan 2016 11:10:34 -0200
Subject: [PATCH] run bluetooth adapter enabling/disabling in background thread

also run setting the default preferences in a background thread

Closes #184
---
 .../org/briarproject/android/SettingsActivity.java |  4 ++--
 .../briarproject/android/SplashScreenActivity.java | 14 ++++++++++++--
 .../android/invitation/AddContactActivity.java     |  3 ++-
 .../briarproject/android/util/AndroidUtils.java    | 13 +++++++++++++
 4 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/SettingsActivity.java b/briar-android/src/org/briarproject/android/SettingsActivity.java
index 7c48355a99..8433bc114e 100644
--- a/briar-android/src/org/briarproject/android/SettingsActivity.java
+++ b/briar-android/src/org/briarproject/android/SettingsActivity.java
@@ -17,6 +17,7 @@ import android.widget.TextView;
 
 import org.briarproject.R;
 import org.briarproject.android.panic.PanicPreferencesActivity;
+import org.briarproject.android.util.AndroidUtils;
 import org.briarproject.android.util.FixedVerticalSpace;
 import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
@@ -330,8 +331,7 @@ OnClickListener {
 			bluetoothSetting = !bluetoothSetting;
 			BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
 			if (adapter != null) {
-				if (bluetoothSetting) adapter.enable();
-				else adapter.disable();
+				AndroidUtils.setBluetooth(adapter, bluetoothSetting);
 			}
 			storeBluetoothSetting();
 			displaySettings();
diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
index e74056341b..ffc926b1cf 100644
--- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
@@ -65,8 +65,7 @@ public class SplashScreenActivity extends RoboSplashActivity {
 		logo.setImageResource(R.drawable.briar_logo_large);
 		layout.addView(logo);
 
-		PreferenceManager
-				.setDefaultValues(this, R.xml.panic_preferences, false);
+		setPreferencesDefaults();
 
 		setContentView(layout);
 	}
@@ -111,4 +110,15 @@ public class SplashScreenActivity extends RoboSplashActivity {
 		if (f.isFile()) f.delete();
 		else if (f.isDirectory()) for (File child : f.listFiles()) delete(child);
 	}
+
+	private void setPreferencesDefaults() {
+		new Thread() {
+			@Override
+			public void run() {
+				PreferenceManager
+						.setDefaultValues(SplashScreenActivity.this,
+								R.xml.panic_preferences, false);
+			}
+		}.start();
+	}
 }
diff --git a/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
index 7d2ab13417..ef2fc44d07 100644
--- a/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
+++ b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
@@ -7,6 +7,7 @@ import android.widget.Toast;
 
 import org.briarproject.R;
 import org.briarproject.android.BriarActivity;
+import org.briarproject.android.util.AndroidUtils;
 import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.android.ReferenceManager;
@@ -333,7 +334,7 @@ implements InvitationListener {
 			if (LOG.isLoggable(INFO)) LOG.info("Turning off Bluetooth again");
 
 			BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
-			if (adapter != null) adapter.disable();
+			if (adapter != null) AndroidUtils.setBluetooth(adapter, false);
 		}
 	}
 
diff --git a/briar-android/src/org/briarproject/android/util/AndroidUtils.java b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
index abbafafd37..01d2cbf4b1 100644
--- a/briar-android/src/org/briarproject/android/util/AndroidUtils.java
+++ b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
@@ -1,6 +1,7 @@
 package org.briarproject.android.util;
 
 import android.annotation.SuppressLint;
+import android.bluetooth.BluetoothAdapter;
 import android.os.Build;
 import android.support.design.widget.TextInputLayout;
 
@@ -32,4 +33,16 @@ public class AndroidUtils {
 		} else
 			til.setError(null);
 	}
+
+	public static void setBluetooth(final BluetoothAdapter adapter,
+			final boolean activate) {
+
+		new Thread() {
+			@Override
+			public void run() {
+				if (activate) adapter.enable();
+				else adapter.disable();
+			}
+		}.start();
+	}
 }
-- 
GitLab