public class DiscoveryAgent
extends java.lang.Object
DiscoveryAgent class provides methods to perform device and service discovery. A local device must
have only one DiscoveryAgent object. This object must be retrieved by a call to
getDiscoveryAgent() on the LocalDevice object.| Modifier and Type | Field and Description |
|---|---|
static int |
CACHED
Used with the
retrieveDevices() method to return those devices that were found via a previous
inquiry. |
static int |
GIAC
The inquiry access code for General/Unlimited Inquiry Access Code (GIAC).
|
static int |
LIAC
The inquiry access code for Limited Dedicated Inquiry Access Code (LIAC).
|
static int |
NOT_DISCOVERABLE
Takes the device out of discoverable mode.
|
static int |
PREKNOWN
Used with the
retrieveDevices() method to return those devices that are defined to be pre-known
devices. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
cancelInquiry(DiscoveryListener listener)
Removes the device from inquiry mode.
|
boolean |
cancelServiceSearch(int transID)
Cancels the service search transaction that has the specified transaction ID.
|
RemoteDevice[] |
retrieveDevices(int option)
Returns an array of Bluetooth devices that have either been found by the local device during previous inquiry
requests or been specified as a pre-known device depending on the argument.
|
int |
searchServices(int[] attrSet,
UUID[] uuidSet,
RemoteDevice btDev,
DiscoveryListener discListener)
Searches for services on a remote Bluetooth device that have all the UUIDs specified in
uuidSet. |
java.lang.String |
selectService(UUID uuid,
int security,
boolean master)
Attempts to locate a service that contains
uuid in the ServiceClassIDList of its service record. |
boolean |
startInquiry(int accessCode,
DiscoveryListener listener)
Places the device into inquiry mode.
|
public static final int CACHED
retrieveDevices() method to return those devices that were found via a previous
inquiry. If no inquiries have been started, this will cause the method to return null.
The value of CACHED is 0x00 (0).
public static final int GIAC
The value of GIAC is 0x9E8B33 (10390323). This value is defined in the Bluetooth Assigned Numbers
document.
public static final int LIAC
The value of LIAC is 0x9E8B00 (10390272). This value is defined in the Bluetooth Assigned Numbers
document.
public static final int NOT_DISCOVERABLE
The value of NOT_DISCOVERABLE is 0x00 (0).
public static final int PREKNOWN
retrieveDevices() method to return those devices that are defined to be pre-known
devices. Pre-known devices are specified in the BCC. These are devices that are specified by the user as devices
with which the local device will frequently communicate.
The value of PREKNOWN is 0x01 (1).
public boolean cancelInquiry(DiscoveryListener listener)
An inquiryCompleted() event will occur with a type of INQUIRY_TERMINATED as a result of
calling this method. After receiving this event, no further deviceDiscovered() events will occur as a
result of this inquiry.
This method will only cancel the inquiry if the listener provided is the listener that started the
inquiry.
listener - the listener that is receiving inquiry eventstrue if the inquiry was canceled; otherwise false if the inquiry was not
canceled or if the inquiry was not started using listenerjava.lang.NullPointerException - if listener is nullpublic boolean cancelServiceSearch(int transID)
searchServices(). A serviceSearchCompleted() event with a
discovery type of SERVICE_SEARCH_TERMINATED will occur when this method is called. After receiving
this event, no further servicesDiscovered() events will occur as a result of this search.
Not implemented on Android and Windows CE.transID - the ID of the service search transaction to cancel; returned by searchServices()true if the service search transaction is terminated, else false if
transID does not represent an active service search transactionpublic RemoteDevice[] retrieveDevices(int option)
option - option - CACHED if previously found devices should be returned;
PREKNOWN if pre-known devices should be returnedoption is
CACHED; an array of devices that are pre-known devices if option is
PREKNOWN; null if no devices meet the criteriajava.lang.IllegalArgumentException - if option is not CACHED or PREKNOWNpublic int searchServices(int[] attrSet,
UUID[] uuidSet,
RemoteDevice btDev,
DiscoveryListener discListener)
throws IOException
uuidSet. Once
the service is found, the attributes specified in attrSet and the default attributes are retrieved.
The default attributes are ServiceRecordHandle (0x0000), ServiceClassIDList (0x0001), ServiceRecordState (0x0002),
ServiceID (0x0003), and ProtocolDescriptorList (0x0004). If attrSet is null then only the
default attributes will be retrieved. attrSet does not have to be sorted in increasing order, but
must only contain values in the range [0 - (216-1)].
Not implemented on Android.attrSet - indicates the attributes whose values will be retrieved on services which have the UUIDs specified in
uuidSetuuidSet - the set of UUIDs that are being searched for; all services returned will contain all the UUIDs specified
herebtDev - the remote Bluetooth device to search for services ondiscListener - the object that will receive events when services are discoveredjava.lang.NullPointerException - if uuidSet, btDev, or discListener is null; if an
element in uuidSet array is nulljava.lang.IllegalArgumentException - if attrSet has an illegal service attribute ID or exceeds the property
bluetooth.sd.attr.retrievable.max defined in the class LocalDevice; if
attrSet or uuidSet is of length 0; if attrSet or
uuidSet contains duplicatesIOException - if the number of concurrent service search transactions exceeds the limit specified by the
bluetooth.sd.trans.max property obtained from the class LocalDevice or the
system is unable to start one due to current conditionspublic java.lang.String selectService(UUID uuid, int security, boolean master) throws IOException
uuid in the ServiceClassIDList of its service record. This
method will return a string that may be used in Connector.open() to establish a connection to the
service. How the service is selected if there are multiple services with uuid and which devices to
search is implementation dependent.
Not implemented on Android.uuid - the UUID to search for in the ServiceClassIDListsecurity - specifies the security requirements for a connection to this service; must be one of
ServiceRecord.NOAUTHENTICATE_NOENCRYPT, ServiceRecord.AUTHENTICATE_NOENCRYPT,
or ServiceRecord.AUTHENTICATE_ENCRYPTmaster - determines if this client must be the master of the connection; true if the client must be
the master; false if the client can be the master or the slaveuuid; or
null if no service could be found with a UUID of uuid in the ServiceClassIDListjava.lang.NullPointerException - if uuid is nulljava.lang.IllegalArgumentException - if security is not ServiceRecord.NOAUTHENTICATE_NOENCRYPT,
ServiceRecord.AUTHENTICATE_NOENCRYPT, or ServiceRecord.AUTHENTICATE_ENCRYPTIOException - if the Bluetooth system cannot start the request due to the current state of the Bluetooth systempublic boolean startInquiry(int accessCode,
DiscoveryListener listener)
throws IOException
deviceDiscovered() of the interface DiscoveryListener.
The cancelInquiry() method is called to stop the inquiry.
Not implemented on Android.accessCode - the type of inquiry to completelistener - the event listener that will receive device discovery eventstrue if the inquiry was started; false if the inquiry was not started because
the accessCode is not supportedjava.lang.IllegalArgumentException - if the access code provided is not LIAC, GIAC, or in the range 0x9E8B00 to
0x9E8B3Fjava.lang.NullPointerException - if listener is nullIOException - if the Bluetooth device does not allow an inquiry to be started due to other operations that are being
performed by the device