Loading core/java/android/bluetooth/BluetoothAdapter.java +19 −12 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.ParcelUuid; import android.os.RemoteException; Loading Loading @@ -348,6 +349,8 @@ public final class BluetoothAdapter { private final IBluetooth mService; private Handler mServiceRecordHandler; /** * Get a handle to the default local Bluetooth adapter. * <p>Currently Android only supports one Bluetooth adapter, but the API Loading Loading @@ -376,6 +379,7 @@ public final class BluetoothAdapter { throw new IllegalArgumentException("service is null"); } mService = service; mServiceRecordHandler = null; } /** Loading Loading @@ -1011,7 +1015,21 @@ public final class BluetoothAdapter { } catch (IOException e) {} throw new IOException("Not able to register SDP record for " + name); } socket.setCloseHandler(mHandler, handle); if (mServiceRecordHandler == null) { mServiceRecordHandler = new Handler(Looper.getMainLooper()) { public void handleMessage(Message msg) { /* handle socket closing */ int handle = msg.what; try { if (DBG) Log.d(TAG, "Removing service record " + Integer.toHexString(handle)); mService.removeServiceRecord(handle); } catch (RemoteException e) {Log.e(TAG, "", e);} } }; } socket.setCloseHandler(mServiceRecordHandler, handle); return socket; } Loading Loading @@ -1243,17 +1261,6 @@ public final class BluetoothAdapter { return Collections.unmodifiableSet(devices); } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { /* handle socket closing */ int handle = msg.what; try { if (DBG) Log.d(TAG, "Removing service record " + Integer.toHexString(handle)); mService.removeServiceRecord(handle); } catch (RemoteException e) {Log.e(TAG, "", e);} } }; /** * Validate a Bluetooth address, such as "00:43:A8:23:10:F0" * <p>Alphabetic characters must be uppercase to be valid. Loading core/java/android/server/BluetoothService.java +8 −1 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class BluetoothService extends IBluetooth.Stub { private static final int MESSAGE_UUID_INTENT = 1; private static final int MESSAGE_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 2; private static final int MESSAGE_REMOVE_SERVICE_RECORD = 3; private static final int RFCOMM_RECORD_REAPER = 10; private static final int STATE_CHANGE_REAPER = 11; Loading Loading @@ -537,6 +538,10 @@ public class BluetoothService extends IBluetooth.Stub { } if (attempt > 0) mBondState.clearPinAttempts(address); break; case MESSAGE_REMOVE_SERVICE_RECORD: Pair<Integer, Integer> pair = (Pair<Integer, Integer>) msg.obj; checkAndRemoveRecord(pair.first, pair.second); break; } } }; Loading Loading @@ -1542,7 +1547,9 @@ public class BluetoothService extends IBluetooth.Stub { public void removeServiceRecord(int handle) { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); checkAndRemoveRecord(handle, Binder.getCallingPid()); Message message = mHandler.obtainMessage(MESSAGE_REMOVE_SERVICE_RECORD); message.obj = new Pair<Integer, Integer>(handle, Binder.getCallingPid()); mHandler.sendMessage(message); } private synchronized void checkAndRemoveRecord(int handle, int pid) { Loading Loading
core/java/android/bluetooth/BluetoothAdapter.java +19 −12 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.ParcelUuid; import android.os.RemoteException; Loading Loading @@ -348,6 +349,8 @@ public final class BluetoothAdapter { private final IBluetooth mService; private Handler mServiceRecordHandler; /** * Get a handle to the default local Bluetooth adapter. * <p>Currently Android only supports one Bluetooth adapter, but the API Loading Loading @@ -376,6 +379,7 @@ public final class BluetoothAdapter { throw new IllegalArgumentException("service is null"); } mService = service; mServiceRecordHandler = null; } /** Loading Loading @@ -1011,7 +1015,21 @@ public final class BluetoothAdapter { } catch (IOException e) {} throw new IOException("Not able to register SDP record for " + name); } socket.setCloseHandler(mHandler, handle); if (mServiceRecordHandler == null) { mServiceRecordHandler = new Handler(Looper.getMainLooper()) { public void handleMessage(Message msg) { /* handle socket closing */ int handle = msg.what; try { if (DBG) Log.d(TAG, "Removing service record " + Integer.toHexString(handle)); mService.removeServiceRecord(handle); } catch (RemoteException e) {Log.e(TAG, "", e);} } }; } socket.setCloseHandler(mServiceRecordHandler, handle); return socket; } Loading Loading @@ -1243,17 +1261,6 @@ public final class BluetoothAdapter { return Collections.unmodifiableSet(devices); } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { /* handle socket closing */ int handle = msg.what; try { if (DBG) Log.d(TAG, "Removing service record " + Integer.toHexString(handle)); mService.removeServiceRecord(handle); } catch (RemoteException e) {Log.e(TAG, "", e);} } }; /** * Validate a Bluetooth address, such as "00:43:A8:23:10:F0" * <p>Alphabetic characters must be uppercase to be valid. Loading
core/java/android/server/BluetoothService.java +8 −1 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class BluetoothService extends IBluetooth.Stub { private static final int MESSAGE_UUID_INTENT = 1; private static final int MESSAGE_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 2; private static final int MESSAGE_REMOVE_SERVICE_RECORD = 3; private static final int RFCOMM_RECORD_REAPER = 10; private static final int STATE_CHANGE_REAPER = 11; Loading Loading @@ -537,6 +538,10 @@ public class BluetoothService extends IBluetooth.Stub { } if (attempt > 0) mBondState.clearPinAttempts(address); break; case MESSAGE_REMOVE_SERVICE_RECORD: Pair<Integer, Integer> pair = (Pair<Integer, Integer>) msg.obj; checkAndRemoveRecord(pair.first, pair.second); break; } } }; Loading Loading @@ -1542,7 +1547,9 @@ public class BluetoothService extends IBluetooth.Stub { public void removeServiceRecord(int handle) { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); checkAndRemoveRecord(handle, Binder.getCallingPid()); Message message = mHandler.obtainMessage(MESSAGE_REMOVE_SERVICE_RECORD); message.obj = new Pair<Integer, Integer>(handle, Binder.getCallingPid()); mHandler.sendMessage(message); } private synchronized void checkAndRemoveRecord(int handle, int pid) { Loading