Public Final Class
Public Final Class
BluetoothAdapter
extends Object
java.lang.Object
android.bluetooth.BluetoothAdapter
↳
Class Overview
Represents the local device Bluetooth adapter. The BluetoothAdapter lets you perform
fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired)
devices, instantiate a BluetoothDevice using a known MAC address, and create
a BluetoothServerSocket to listen for connection requests from other devices.
See Also
BluetoothDevice
BluetoothServerSocket
Summary
Constants
int SCAN_MODE_CONNECTABLE_DISCOVERABLE Indicates that both inquiry scan and page sca
int SCAN_MODE_NONE Indicates that both inquiry scan and page sca
boolean cancelDiscovery()
Cancel the current device discovery process.
boolean disable()
Turn off the local Bluetooth adapter—do not use without explicit user action to turn of
boolean enable()
Turn on the local Bluetooth adapter—do not use without explicit user action to turn on
String getAddress()
Returns the hardware address of the local Bluetooth adapter.
Set<BluetoothDevice> getBondedDevices()
Return the set of BluetoothDevice objects that are bonded (paired) to the local
synchronized getDefaultAdapter()
static BluetoothAdapte Get a handle to the default local Bluetooth adapter.
r
String getName()
Get the friendly Bluetooth name of the local Bluetooth adapter.
BluetoothDevice getRemoteDevice(String address)
Get a BluetoothDevice object for the given Bluetooth hardware address.
int getScanMode()
Get the current Bluetooth scan mode of the local Bluetooth adapter.
int getState()
Get the current state of the local Bluetooth adapter.
boolean isDiscovering()
Return true if the local Bluetooth adapter is currently in the device discovery process.
boolean isEnabled()
Return true if Bluetooth is currently enabled and ready for use.
BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String name, UUID uuid)
Create a listening, insecure RFCOMM Bluetooth socket with Service Record.
BluetoothServerSocket listenUsingRfcommWithServiceRecord(String name, UUID uuid)
Create a listening, secure RFCOMM Bluetooth socket with Service Record.
boolean setName(String name)
Set the friendly Bluetooth name of the local Bluetooth adapter.
boolean startDiscovery()
Start the remote device discovery process.
[Expand]
Inherited Methods
From class java.lang.Object
Constants
This intent is useful for applications that are only concerned about whether the local adapter is
connected to any profile of any device and are not really concerned about which profile. For example,
an application which displays an icon to display whether Bluetooth is connected or not can use this
intent.
Constant Value: "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED"
Requires BLUETOOTH to receive.
Constant Value: "android.bluetooth.adapter.action.DISCOVERY_FINISHED"
This usually involves an inquiry scan of about 12 seconds, followed by a page scan of each new
device to retrieve its Bluetooth name.
Register for ACTION_FOUND to be notified as remote Bluetooth devices are found.
Device discovery is a heavyweight procedure. New connections to remote Bluetooth devices should
not be attempted while discovery is in progress, and existing connections will experience limited
bandwidth and high latency. Use cancelDiscovery() to cancel an ongoing discovery.
Requires BLUETOOTH to receive.
Constant Value: "android.bluetooth.adapter.action.DISCOVERY_STARTED"
Requires BLUETOOTH to receive.
Constant Value: "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED"
Requires BLUETOOTH
Constant Value: "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE"
This system activity will return once Bluetooth has completed turning on, or the user has decided not
to turn Bluetooth on.
Notification of the result of this activity is posted using the onActivityResult(int,
int,
Intent) callback. The resultCode will be RESULT_OK if Bluetooth has been turned on
or RESULT_CANCELED if the user has rejected the request or an error has occurred.
Requires BLUETOOTH
Constant Value: "android.bluetooth.adapter.action.REQUEST_ENABLE"
Requires BLUETOOTH
Constant Value: "android.bluetooth.adapter.action.SCAN_MODE_CHANGED"
Requires BLUETOOTH to receive.
Constant Value: "android.bluetooth.adapter.action.STATE_CHANGED"
Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)
Constant Value: "android.bluetooth.adapter.extra.CONNECTION_STATE"
Constant Value: "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION"
Constant Value: "android.bluetooth.adapter.extra.LOCAL_NAME"
Constant Value: "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE"
Constant Value: "android.bluetooth.adapter.extra.PREVIOUS_STATE"
Constant Value: "android.bluetooth.adapter.extra.STATE"
Public Methods
public boolean cancelDiscovery ()
Since: API Level 5
Cancel the current device discovery process.
Requires BLUETOOTH_ADMIN.
Because discovery is a heavyweight procedure for the Bluetooth adapter, this method should always
be called before attempting to connect to a remote device with connect(). Discovery is not
managed by the Activity, but is run as a system service, so an application should always call cancel
discovery even if it did not directly request a discovery, just to be sure.
If Bluetooth state is not STATE_ON, this API will return false. After turning on Bluetooth, wait
for ACTION_STATE_CHANGED with STATE_ON to get the updated value.
Returns
Parameters
Returns
Clients should call this when they are no longer using the proxy obtained
from getProfileProxy(Context, BluetoothProfile.ServiceListener,
int). Profile can be one of HEADSET or A2DP
Parameters
public boolean disable ()
Since: API Level 5
Turn off the local Bluetooth adapter—do not use without explicit user action to turn off Bluetooth.
This gracefully shuts down all Bluetooth connections, stops Bluetooth system services, and powers
down the underlying Bluetooth hardware.
This is an asynchronous call: it will return immediately, and clients should listen
for ACTION_STATE_CHANGED to be notified of subsequent adapter state changes. If this call
returns true, then the adapter state will immediately transition
from STATE_ON to STATE_TURNING_OFF, and some time later transition to
either STATE_OFF or STATE_ON. If this call returns false then there was an immediate problem
that will prevent the adapter from being turned off - such as the adapter already being turned off.
Requires the BLUETOOTH_ADMIN permission
Returns
public boolean enable ()
Since: API Level 5
Turn on the local Bluetooth adapter—do not use without explicit user action to turn on Bluetooth.
This powers on the underlying Bluetooth hardware, and starts all Bluetooth system services.
Bluetooth should never be enabled without direct user consent . If you want
to turn on Bluetooth in order to create a wireless connection, you should use
theACTION_REQUEST_ENABLE Intent, which will raise a dialog that requests user
permission to turn on Bluetooth. The enable() method is provided only for applications that
include a user interface for changing system settings, such as a "power manager" app.
This is an asynchronous call: it will return immediately, and clients should listen
for ACTION_STATE_CHANGED to be notified of subsequent adapter state changes. If this call
returns true, then the adapter state will immediately transition
from STATE_OFF to STATE_TURNING_ON, and some time later transition to
either STATE_OFF or STATE_ON. If this call returns false then there was an immediate problem
that will prevent the adapter from being turned on - such as Airplane mode, or the adapter is already
turned on.
Requires the BLUETOOTH_ADMIN permission
Returns
public String getAddress ()
Since: API Level 5
Returns the hardware address of the local Bluetooth adapter.
Requires BLUETOOTH
Returns
public Set<BluetoothDevice> getBondedDevices ()
Since: API Level 5
Return the set of BluetoothDevice objects that are bonded (paired) to the local adapter.
If Bluetooth state is not STATE_ON, this API will return an empty set. After turning on Bluetooth, wait
for ACTION_STATE_CHANGED with STATE_ON to get the updated value.
Requires BLUETOOTH.
Returns
Returns
the default local adapter, or null if Bluetooth is not supported on this hardware platform
public String getName ()
Since: API Level 5
Get the friendly Bluetooth name of the local Bluetooth adapter.
Requires BLUETOOTH
Returns
public boolean getProfileProxy (Context context, BluetoothProfile.ServiceListener listener,
int profile)
Since: API Level 11
Get the profile proxy object associated with the profile.
Parameters
Returns
public BluetoothDevice getRemoteDevice (String address)
Since: API Level 5
Get a BluetoothDevice object for the given Bluetooth hardware address.
Valid Bluetooth hardware addresses must be upper case, in a format such as "00:11:22:33:AA:BB".
The helper checkBluetoothAddress(String) is available to validate a Bluetooth
address.
A BluetoothDevice will always be returned for a valid hardware address, even if this adapter
has never seen that device.
Parameters
addres valid Bluetooth MAC address
s
Throws
public int getScanMode ()
Since: API Level 5
Get the current Bluetooth scan mode of the local Bluetooth adapter.
The Bluetooth scan mode determines if the local adapter is connectable and/or discoverable from
remote Bluetooth devices.
Possible values
are: SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_D
ISCOVERABLE.
If Bluetooth state is not STATE_ON, this API will return SCAN_MODE_NONE. After turning on
Bluetooth, wait for ACTION_STATE_CHANGED with STATE_ON to get the updated value.
Requires BLUETOOTH
Returns
scan mode
public int getState ()
Since: API Level 5
Get the current state of the local Bluetooth adapter.
Requires BLUETOOTH
Returns
public boolean isDiscovering ()
Since: API Level 5
Return true if the local Bluetooth adapter is currently in the device discovery process.
Device discovery is a heavyweight procedure. New connections to remote Bluetooth devices should
not be attempted while discovery is in progress, and existing connections will experience limited
bandwidth and high latency. Use cancelDiscovery() to cancel an ongoing discovery.
Requires BLUETOOTH.
Returns
true if discovering
public boolean isEnabled ()
Since: API Level 5
Return true if Bluetooth is currently enabled and ready for use.
Requires BLUETOOTH
Returns
public BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord (String n
ame, UUID uuid)
Since: API Level 10
Create a listening, insecure RFCOMM Bluetooth socket with Service Record.
The link key will be unauthenticated i.e the communication is vulnerable to Man In the Middle attacks.
For Bluetooth 2.1 devices, the link key will be encrypted, as encryption is mandartory. For legacy
devices (pre Bluetooth 2.1 devices) the link key will not be encrypted.
Use listenUsingRfcommWithServiceRecord(String, UUID), if an encrypted
and authenticated communication channel is desired.
The system will also register a Service Discovery Protocol (SDP) record with the local SDP server
containing the specified UUID, service name, and auto-assigned channel. Remote Bluetooth devices
can use the same UUID to query our SDP server and discover which channel to connect to. This SDP
record will be removed when this socket is closed, or if this application closes unexpectedly.
Requires BLUETOOTH
Parameters
Throws
public BluetoothServerSocket listenUsingRfcommWithServiceRecord (String name, UUI
D uuid)
Since: API Level 5
Create a listening, secure RFCOMM Bluetooth socket with Service Record.
A remote device connecting to this socket will be authenticated and communication on this socket will
be encrypted.
The system will also register a Service Discovery Protocol (SDP) record with the local SDP server
containing the specified UUID, service name, and auto-assigned channel. Remote Bluetooth devices
can use the same UUID to query our SDP server and discover which channel to connect to. This SDP
record will be removed when this socket is closed, or if this application closes unexpectedly.
Requires BLUETOOTH
Parameters
Returns
Throws
public boolean setName (String name)
Since: API Level 5
Set the friendly Bluetooth name of the local Bluetooth adapter.
If Bluetooth state is not STATE_ON, this API will return false. After turning on Bluetooth, wait
for ACTION_STATE_CHANGED with STATE_ON to get the updated value.
Requires BLUETOOTH_ADMIN
Parameters
Returns
public boolean startDiscovery ()
Since: API Level 5
Start the remote device discovery process.
The discovery process usually involves an inquiry scan of about 12 seconds, followed by a page scan
of each new device to retrieve its Bluetooth name.
Device discovery is a heavyweight procedure. New connections to remote Bluetooth devices should
not be attempted while discovery is in progress, and existing connections will experience limited
bandwidth and high latency. 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.
Device discovery will only find remote devices that are currently discoverable (inquiry scan enabled).
Many Bluetooth devices are not discoverable by default, and need to be entered into a special mode.
If Bluetooth state is not STATE_ON, this API will return false. After turning on Bluetooth, wait
for ACTION_STATE_CHANGED with STATE_ON to get the updated value.
Requires BLUETOOTH_ADMIN.
Returns
1. Request a connection to Bluetooth server – Use the Bluetooth Open Connection function
to connect to a service on a Bluetooth server. Set the channel number to zero and specify a
Bluetooth uuid to identify which service to connect to. The Bluetooth Open Connection
function performs an SDP query to make a connection to the first service found with
matching uuid. Internally, the result of an SDP query is an RFCOMM channel number to
connect to. The SDP query is a tool to "translate" uuid to a channel number.
If you know the channel number associated with the service in advance, use the channel
number instead of zero. Specifying a nonzero channel number bypasses the internal SDP
query operation thus reducing the amount of time it takes to connect to the service. If the
channel number is nonzero, LabVIEW ignores the uuid input parameter.
Note: You can use the Bluetooth RFCOMM Service Discovery VI to search for a valid
channel number associated with a service on a remote Bluetooth device. This VI performs an
SDP RFCOMM service discovery resulting in a channel number you can use to connect to
the corresponding service on the remote Bluetooth device.
2. Read and Write data – Use Bluetooth Read and Bluetooth Write functions to exchange
data with the server.
3. Close connection – Use Bluetooth Close Connection function to close connection to the
server.
The block diagram of a typical Bluetooth client application looks similar to Figure 2.
[+] Enlarge Image
Figure 2. Bluetooth Client Application
Refer to the following VIs for examples of creating a simple Bluetooth server and client
applications:
Use the Bluetooth RFCOMM Service Discovery VI to search for available RFCOMM
services on a local/remote Bluetooth device. This function returns a list of available services
along with the associated channel numbers. A channel number in the list can be used as an
input parameter of the Bluetooth Open Connection function to make a connection to the
corresponding service on the remote Bluetooth device.
Figure 3. Bluetooth Discovery Function
Refer to the following VIs for examples of Bluetooth device and service discovery:
The driver recognizes only one active serial channel at a time. You can open the serial
channel as an outbound (client) port or as an inbound (server) port. When you open the port
as an outbound (client) port, the driver prompts you to select a Bluetooth device (server) to
connect to. When you open the port as an inbound (server) port, the driver waits to receive a
connection request from the client. Bluetooth serial port is based on RFCOMM, which is
different from a physical serial port. RFCOMM requires roles of a server and a client when
establishing Bluetooth serial connection.
Refer to KnowledgeBase 32GEGGTP: Does LabVIEW for PDA Support Bluetooth? (linked
below) for more information on Bluetooth Virtual Serial Port and the LabVIEW PDA
Module.
Related Links:
KnowledgeBase 32GEGGTP: Does LabVIEW for PDA Support Bluetooth?
LabVIEW Development System
LabVIEW PDA Module
Microsoft Website
Bluetooth Website
LabVIEW PDA User Manual
Yes. All very well and good but most of us want to communicate with mobile phones not
another PC running Labview. Bluetooth support in Labview is like RS485 without Profibus
or Modbus. When will there be an OBEX toolkit? I'd love to be able to just walk past my
machines and pick up results data on my phone!
- Apr 5, 2009
Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although
technical support of this tutorial may be made available by National Instruments, the content
in this tutorial may not be completely tested and verified, and NI does not guarantee its
quality in any way or that NI will continue to support this content with each new revision of
related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT
WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE
SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE
(http://ni.com/legal/termsofuse/unitedstates/us/).