Merge "Bluetooth: Expose L2CAP API to support OPP 1.2"
am: 79eb213a98
Change-Id: I5f82a0c40c64fca0701abba44693b2892209acf3
This commit is contained in:
@@ -1858,6 +1858,35 @@ public final class BluetoothAdapter {
|
|||||||
return listenUsingL2capOn(port, false, false);
|
return listenUsingL2capOn(port, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct an insecure L2CAP server socket.
|
||||||
|
* Call #accept to retrieve connections to this socket.
|
||||||
|
* <p>To auto assign a port without creating a SDP record use
|
||||||
|
* {@link SOCKET_CHANNEL_AUTO_STATIC_NO_SDP} as port number.
|
||||||
|
* @param port the PSM to listen on
|
||||||
|
* @return An L2CAP BluetoothServerSocket
|
||||||
|
* @throws IOException On error, for example Bluetooth not available, or
|
||||||
|
* insufficient permissions.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public BluetoothServerSocket listenUsingInsecureL2capOn(int port) throws IOException {
|
||||||
|
BluetoothServerSocket socket = new BluetoothServerSocket(
|
||||||
|
BluetoothSocket.TYPE_L2CAP, false, false, port, false, false);
|
||||||
|
int errno = socket.mSocket.bindListen();
|
||||||
|
if(port == SOCKET_CHANNEL_AUTO_STATIC_NO_SDP) {
|
||||||
|
socket.setChannel(socket.mSocket.getPort());
|
||||||
|
}
|
||||||
|
if (errno != 0) {
|
||||||
|
//TODO(BT): Throw the same exception error code
|
||||||
|
// that the previous code was using.
|
||||||
|
//socket.mSocket.throwErrnoNative(errno);
|
||||||
|
throw new IOException("Error: " + errno);
|
||||||
|
}
|
||||||
|
return socket;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the local Out of Band Pairing Data
|
* Read the local Out of Band Pairing Data
|
||||||
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
|
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
|
||||||
|
|||||||
@@ -1411,6 +1411,27 @@ public final class BluetoothDevice implements Parcelable {
|
|||||||
null);
|
null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an L2cap {@link BluetoothSocket} ready to start an insecure
|
||||||
|
* outgoing connection to this remote device on given channel.
|
||||||
|
* <p>The remote device will be not authenticated and communication on this
|
||||||
|
* socket will not be encrypted.
|
||||||
|
* <p>Use {@link BluetoothSocket#connect} to initiate the outgoing
|
||||||
|
* connection.
|
||||||
|
* <p>Valid L2CAP PSM channels are in range 1 to 2^16.
|
||||||
|
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
|
||||||
|
*
|
||||||
|
* @param channel L2cap PSM/channel to connect to
|
||||||
|
* @return a RFCOMM BluetoothServerSocket ready for an outgoing connection
|
||||||
|
* @throws IOException on error, for example Bluetooth not available, or
|
||||||
|
* insufficient permissions
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public BluetoothSocket createInsecureL2capSocket(int channel) throws IOException {
|
||||||
|
return new BluetoothSocket(BluetoothSocket.TYPE_L2CAP, -1, false, false, this, channel,
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an RFCOMM {@link BluetoothSocket} ready to start a secure
|
* Create an RFCOMM {@link BluetoothSocket} ready to start a secure
|
||||||
* outgoing connection to this remote device using SDP lookup of uuid.
|
* outgoing connection to this remote device using SDP lookup of uuid.
|
||||||
|
|||||||
Reference in New Issue
Block a user