java.lang.Object | |
↳ | android.bluetooth.BluetoothSocket |
A connected or connecting Bluetooth socket.
The interface for Bluetooth Sockets is similar to that of TCP sockets:
Socket
and
ServerSocket
. On the server
side, use a
BluetoothServerSocket
to create a listening server
socket. When a connection is accepted by the
BluetoothServerSocket
,
it will return a new
BluetoothSocket
to manage the connection.
On the client side, use a single
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
BluetoothSocket
for connecting to a known device, use
BluetoothDevice.createRfcommSocketToServiceRecord()
.
Then call
connect()
to attempt a connection to the remote device.
This call will block until a connection is established or the connection
fails.
To create a
BluetoothSocket
as a server (or "host"), see the
BluetoothServerSocket
documentation.
Once the socket is connected, whether initiated as a client or accepted
as a server, open the IO streams by calling
getInputStream()
and
getOutputStream()
in order to retrieve
InputStream
and
OutputStream
objects, respectively, which are
automatically connected to the socket.
BluetoothSocket
is thread
safe. In particular,
close()
will always immediately abort ongoing
operations and close the socket.
Note:
Requires the
BLUETOOTH
permission.
For more information about using Bluetooth, read the Bluetooth developer guide.
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Closes the object and release any system resources it holds.
|
||||||||||
|
Attempt to connect to a remote device.
|
||||||||||
|
Get the input stream associated with this socket.
|
||||||||||
|
Get the output stream associated with this socket.
|
||||||||||
|
Get the remote device this socket is connecting, or connected, to.
|
||||||||||
|
Get the connection status of this socket, ie, whether there is an active connection with
remote device.
|
[Expand]
Inherited Methods
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
|||||||||||
From interface
java.io.Closeable
|
|||||||||||
From interface
java.lang.AutoCloseable
|
Closes the object and release any system resources it holds.
Although only the first call has any effect, it is safe to call close
multiple times on the same object. This is more lenient than the
overridden
AutoCloseable.close()
, which may be called at most
once.
IOException |
---|
Attempt to connect to a remote device.
This method will block until a connection is made or the connection fails. If this method returns without an exception then this socket is now connected.
Creating new connections to
remote Bluetooth devices should not be attempted while device discovery
is in progress. Device discovery is a heavyweight procedure on the
Bluetooth adapter and will significantly slow a device connection.
Use
cancelDiscovery()
to cancel an ongoing
discovery. Discovery is not managed by the Activity,
but is run as a system service, so an application should always call
cancelDiscovery()
even if it
did not directly request a discovery, just to be sure.
close()
can be used to abort this call from another thread.
IOException | on error, for example connection failure |
---|
Get the input stream associated with this socket.
The input stream will be returned even if the socket is not yet connected, but operations on that stream will throw IOException until the associated socket is connected.
IOException |
---|
Get the output stream associated with this socket.
The output stream will be returned even if the socket is not yet connected, but operations on that stream will throw IOException until the associated socket is connected.
IOException |
---|
Get the remote device this socket is connecting, or connected, to.
Get the connection status of this socket, ie, whether there is an active connection with remote device.