FileDocCategorySizeDatePackage
BluetoothServerSocket.javaAPI DocAndroid 5.1 API6499Thu Mar 12 22:22:10 GMT 2015android.bluetooth

BluetoothServerSocket

public final class BluetoothServerSocket extends Object implements Closeable
A 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.

param
type type of socket
param
auth require the remote device to be authenticated
param
encrypt require the connection to be encrypted
param
port remote port
throws
IOException On error, for example Bluetooth not available, or insufficient privileges

        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.

param
type type of socket
param
auth require the remote device to be authenticated
param
encrypt require the connection to be encrypted
param
uuid uuid
throws
IOException On error, for example Bluetooth not available, or insufficient privileges

        mSocket = new BluetoothSocket(type, -1, auth, encrypt, null, -1, uuid);
        mChannel = mSocket.getPort();
    
Methods Summary
public BluetoothSocketaccept()
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
a connected {@link BluetoothSocket}
throws
IOException on error, for example this call was aborted, or timeout

        return accept(-1);
    
public BluetoothSocketaccept(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
a connected {@link BluetoothSocket}
throws
IOException on error, for example this call was aborted, or timeout

        return mSocket.accept(timeout);
    
public voidclose()
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 intgetChannel()
Returns the channel on which this socket is bound.

hide

        return mChannel;
    
synchronized voidsetCloseHandler(android.os.Handler handler, int message)

        mHandler = handler;
        mMessage = message;
    
voidsetServiceName(java.lang.String ServiceName)

        mSocket.setServiceName(ServiceName);