BluetoothServerSocketpublic final class BluetoothServerSocket extends Object implements CloseableA listening Bluetooth socket.
The interface for Bluetooth Sockets is similar to that of TCP sockets:
{@link java.net.Socket} and {@link java.net.ServerSocket}. On the server
side, use a {@link BluetoothServerSocket} to create a listening server
socket. When a connection is accepted by the {@link BluetoothServerSocket},
it will return a new {@link BluetoothSocket} to manage the connection.
On the client side, use a single {@link BluetoothSocket} to both initiate
an outgoing connection and to manage the connection.
The most common type of Bluetooth socket is RFCOMM, which is the type
supported by the Android APIs. RFCOMM is a connection-oriented, streaming
transport over Bluetooth. It is also known as the Serial Port Profile (SPP).
To create a listening {@link BluetoothServerSocket} that's ready for
incoming connections, use
{@link BluetoothAdapter#listenUsingRfcommWithServiceRecord
BluetoothAdapter.listenUsingRfcommWithServiceRecord()}. Then call
{@link #accept()} to listen for incoming connection requests. This call
will block until a connection is established, at which point, it will return
a {@link BluetoothSocket} to manage the connection. Once the {@link
BluetoothSocket} is acquired, it's a good idea to call {@link #close()} on
the {@link BluetoothServerSocket} when it's no longer needed for accepting
connections. Closing the {@link BluetoothServerSocket} will not
close the returned {@link BluetoothSocket}.
{@link BluetoothServerSocket} is thread
safe. In particular, {@link #close} will always immediately abort ongoing
operations and close the server socket.
Note:
Requires the {@link android.Manifest.permission#BLUETOOTH} permission.
Developer Guides
For more information about using Bluetooth, read the
Bluetooth developer guide.
{@see BluetoothSocket} |
Fields Summary |
---|
final BluetoothSocket | mSocket | private android.os.Handler | mHandler | private int | mMessage | private final int | mChannel |
Constructors Summary |
---|
BluetoothServerSocket(int type, boolean auth, boolean encrypt, int port)Construct a socket for incoming connections.
mChannel = port;
mSocket = new BluetoothSocket(type, -1, auth, encrypt, null, port, null);
| BluetoothServerSocket(int type, boolean auth, boolean encrypt, android.os.ParcelUuid uuid)Construct a socket for incoming connections.
mSocket = new BluetoothSocket(type, -1, auth, encrypt, null, -1, uuid);
mChannel = mSocket.getPort();
|
Methods Summary |
---|
public BluetoothSocket | accept()Block until a connection is established.
Returns a connected {@link BluetoothSocket} on successful connection.
Once this call returns, it can be called again to accept subsequent
incoming connections.
{@link #close} can be used to abort this call from another thread.
return accept(-1);
| public BluetoothSocket | accept(int timeout)Block until a connection is established, with timeout.
Returns a connected {@link BluetoothSocket} on successful connection.
Once this call returns, it can be called again to accept subsequent
incoming connections.
{@link #close} can be used to abort this call from another thread.
return mSocket.accept(timeout);
| public void | close()Immediately close this socket, and release all associated resources.
Causes blocked calls on this socket in other threads to immediately
throw an IOException.
Closing the {@link BluetoothServerSocket} will not
close any {@link BluetoothSocket} received from {@link #accept()}.
synchronized (this) {
if (mHandler != null) {
mHandler.obtainMessage(mMessage).sendToTarget();
}
}
mSocket.close();
| public int | getChannel()Returns the channel on which this socket is bound.
return mChannel;
| synchronized void | setCloseHandler(android.os.Handler handler, int message)
mHandler = handler;
mMessage = message;
| void | setServiceName(java.lang.String ServiceName)
mSocket.setServiceName(ServiceName);
|
|