Move socket initialization code out of pbap service's main thread
Socket initialization need the preparation from stack and a domain socket
connection. All this takes time and not proper to be run in the main thread.
bug 7258324
Change-Id: Ic46601602556c2949f18d446016188d874099874
diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java
index 08ba36b..48b740c 100755
--- a/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -437,7 +437,7 @@
}
private void debugLog(String msg) {
- if (DBG) Log.e(TAG, msg);
+ if (DBG) Log.d(TAG, msg);
}
private void infoLog(String msg) {
diff --git a/src/com/android/bluetooth/pbap/BluetoothPbapService.java b/src/com/android/bluetooth/pbap/BluetoothPbapService.java
index dde971f..53810aa 100755
--- a/src/com/android/bluetooth/pbap/BluetoothPbapService.java
+++ b/src/com/android/bluetooth/pbap/BluetoothPbapService.java
@@ -316,12 +316,6 @@
private void startRfcommSocketListener() {
if (VERBOSE) Log.v(TAG, "Pbap Service startRfcommSocketListener");
- if (mServerSocket == null) {
- if (!initSocket()) {
- closeService();
- return;
- }
- }
if (mAcceptThread == null) {
mAcceptThread = new SocketAcceptThread();
mAcceptThread.setName("BluetoothPbapAcceptThread");
@@ -340,7 +334,8 @@
try {
// It is mandatory for PSE to support initiation of bonding and
// encryption.
- mServerSocket = mAdapter.listenUsingEncryptedRfcommWithServiceRecord("OBEX Phonebook Access Server", BluetoothUuid.PBAP_PSE.getUuid());
+ mServerSocket = mAdapter.listenUsingEncryptedRfcommWithServiceRecord
+ ("OBEX Phonebook Access Server", BluetoothUuid.PBAP_PSE.getUuid());
} catch (IOException e) {
Log.e(TAG, "Error create RfcommServerSocket " + e.toString());
@@ -521,6 +516,13 @@
@Override
public void run() {
+ if (mServerSocket == null) {
+ if (!initSocket()) {
+ closeService();
+ return;
+ }
+ }
+
while (!stopped) {
try {
if (VERBOSE) Log.v(TAG, "Accepting socket connection...");