Merge "Protect self from async change of BluetoothPan" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9310f85dc7
@@ -48,6 +48,7 @@ import android.webkit.WebView;
|
|||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -78,7 +79,7 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
private String[] mWifiRegexs;
|
private String[] mWifiRegexs;
|
||||||
|
|
||||||
private String[] mBluetoothRegexs;
|
private String[] mBluetoothRegexs;
|
||||||
private BluetoothPan mBluetoothPan;
|
private AtomicReference<BluetoothPan> mBluetoothPan;
|
||||||
|
|
||||||
private static final String WIFI_AP_SSID_AND_SECURITY = "wifi_ap_ssid_and_security";
|
private static final String WIFI_AP_SSID_AND_SECURITY = "wifi_ap_ssid_and_security";
|
||||||
private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
|
private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
|
||||||
@@ -151,7 +152,8 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
if (!bluetoothAvailable) {
|
if (!bluetoothAvailable) {
|
||||||
getPreferenceScreen().removePreference(mBluetoothTether);
|
getPreferenceScreen().removePreference(mBluetoothTether);
|
||||||
} else {
|
} else {
|
||||||
if (mBluetoothPan != null && mBluetoothPan.isTetheringOn()) {
|
BluetoothPan pan = mBluetoothPan.get();
|
||||||
|
if (pan != null && pan.isTetheringOn()) {
|
||||||
mBluetoothTether.setChecked(true);
|
mBluetoothTether.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
mBluetoothTether.setChecked(false);
|
mBluetoothTether.setChecked(false);
|
||||||
@@ -188,10 +190,10 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
private BluetoothProfile.ServiceListener mProfileServiceListener =
|
private BluetoothProfile.ServiceListener mProfileServiceListener =
|
||||||
new BluetoothProfile.ServiceListener() {
|
new BluetoothProfile.ServiceListener() {
|
||||||
public void onServiceConnected(int profile, BluetoothProfile proxy) {
|
public void onServiceConnected(int profile, BluetoothProfile proxy) {
|
||||||
mBluetoothPan = (BluetoothPan) proxy;
|
mBluetoothPan.set((BluetoothPan) proxy);
|
||||||
}
|
}
|
||||||
public void onServiceDisconnected(int profile) {
|
public void onServiceDisconnected(int profile) {
|
||||||
mBluetoothPan = null;
|
mBluetoothPan.set(null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -235,8 +237,9 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
switch (intent
|
switch (intent
|
||||||
.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
|
.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
|
||||||
case BluetoothAdapter.STATE_ON:
|
case BluetoothAdapter.STATE_ON:
|
||||||
if(mBluetoothPan != null) {
|
BluetoothPan bluetoothPan = mBluetoothPan.get();
|
||||||
mBluetoothPan.setBluetoothTethering(true);
|
if (bluetoothPan != null) {
|
||||||
|
bluetoothPan.setBluetoothTethering(true);
|
||||||
mBluetoothEnableForTether = false;
|
mBluetoothEnableForTether = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -389,26 +392,31 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
} else if (btState == BluetoothAdapter.STATE_TURNING_ON) {
|
} else if (btState == BluetoothAdapter.STATE_TURNING_ON) {
|
||||||
mBluetoothTether.setEnabled(false);
|
mBluetoothTether.setEnabled(false);
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_turning_on);
|
mBluetoothTether.setSummary(R.string.bluetooth_turning_on);
|
||||||
} else if (btState == BluetoothAdapter.STATE_ON &&
|
|
||||||
mBluetoothPan != null && mBluetoothPan.isTetheringOn()) {
|
|
||||||
mBluetoothTether.setChecked(true);
|
|
||||||
mBluetoothTether.setEnabled(true);
|
|
||||||
int bluetoothTethered = mBluetoothPan.getConnectedDevices().size();
|
|
||||||
if (bluetoothTethered > 1) {
|
|
||||||
String summary = getString(
|
|
||||||
R.string.bluetooth_tethering_devices_connected_subtext, bluetoothTethered);
|
|
||||||
mBluetoothTether.setSummary(summary);
|
|
||||||
} else if (bluetoothTethered == 1) {
|
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_device_connected_subtext);
|
|
||||||
} else if (bluetoothErrored) {
|
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_errored_subtext);
|
|
||||||
} else {
|
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_available_subtext);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
mBluetoothTether.setEnabled(true);
|
BluetoothPan bluetoothPan = mBluetoothPan.get();
|
||||||
mBluetoothTether.setChecked(false);
|
if (btState == BluetoothAdapter.STATE_ON && bluetoothPan != null &&
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_off_subtext);
|
bluetoothPan.isTetheringOn()) {
|
||||||
|
mBluetoothTether.setChecked(true);
|
||||||
|
mBluetoothTether.setEnabled(true);
|
||||||
|
int bluetoothTethered = bluetoothPan.getConnectedDevices().size();
|
||||||
|
if (bluetoothTethered > 1) {
|
||||||
|
String summary = getString(
|
||||||
|
R.string.bluetooth_tethering_devices_connected_subtext,
|
||||||
|
bluetoothTethered);
|
||||||
|
mBluetoothTether.setSummary(summary);
|
||||||
|
} else if (bluetoothTethered == 1) {
|
||||||
|
mBluetoothTether.setSummary(
|
||||||
|
R.string.bluetooth_tethering_device_connected_subtext);
|
||||||
|
} else if (bluetoothErrored) {
|
||||||
|
mBluetoothTether.setSummary(R.string.bluetooth_tethering_errored_subtext);
|
||||||
|
} else {
|
||||||
|
mBluetoothTether.setSummary(R.string.bluetooth_tethering_available_subtext);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mBluetoothTether.setEnabled(true);
|
||||||
|
mBluetoothTether.setChecked(false);
|
||||||
|
mBluetoothTether.setSummary(R.string.bluetooth_tethering_off_subtext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,7 +484,8 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
mBluetoothTether.setSummary(R.string.bluetooth_turning_on);
|
mBluetoothTether.setSummary(R.string.bluetooth_turning_on);
|
||||||
mBluetoothTether.setEnabled(false);
|
mBluetoothTether.setEnabled(false);
|
||||||
} else {
|
} else {
|
||||||
mBluetoothPan.setBluetoothTethering(true);
|
BluetoothPan bluetoothPan = mBluetoothPan.get();
|
||||||
|
if (bluetoothPan != null) bluetoothPan.setBluetoothTethering(true);
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_available_subtext);
|
mBluetoothTether.setSummary(R.string.bluetooth_tethering_available_subtext);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -528,7 +537,8 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
errored = true;
|
errored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mBluetoothPan.setBluetoothTethering(false);
|
BluetoothPan bluetoothPan = mBluetoothPan.get();
|
||||||
|
if (bluetoothPan != null) bluetoothPan.setBluetoothTethering(false);
|
||||||
if (errored) {
|
if (errored) {
|
||||||
mBluetoothTether.setSummary(R.string.bluetooth_tethering_errored_subtext);
|
mBluetoothTether.setSummary(R.string.bluetooth_tethering_errored_subtext);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user