編輯:關於Android編程
Represents the local device Bluetooth adapter. TheBluetoothAdapter
lets you perform fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired) devices, instantiate aBluetoothDevice
using a known MAC address, and create aBluetoothServerSocket
to listen for connection requests from other devices, and start a scan for Bluetooth LE devices.
To get aBluetoothAdapter
representing the local Bluetooth adapter, when running on JELLY_BEAN_MR1 and below, call the staticgetDefaultAdapter()
method; when running on JELLY_BEAN_MR2 and higher, callgetAdapter()
. Fundamentally, this is your starting point for all Bluetooth actions. Once you have the local adapter, you can get a set ofBluetoothDevice
objects representing all paired devices withgetBondedDevices()
; start device discovery withstartDiscovery()
; or create aBluetoothServerSocket
to listen for incoming connection requests withlistenUsingRfcommWithServiceRecord(String, UUID)
; or start a scan for Bluetooth LE devices withstartLeScan(LeScanCallback)
.
This class is thread safe.
Note:Most methods require theBLUETOOTH
permission and some also require theBLUETOOTH_ADMIN
permission.
For more information about using Bluetooth, read theBluetoothdeveloper guide.
See also:
BluetoothDevice
BluetoothServerSocket
interface
BluetoothAdapter.LeScanCallback
Callback interface used to deliver LE scan results.
String
ACTION_CONNECTION_STATE_CHANGED
Intent used to broadcast the change in connection state of the local Bluetooth adapter to a profile of the remote device.
String
ACTION_DISCOVERY_FINISHED
Broadcast Action: The local Bluetooth adapter has finished the device discovery process.
String
ACTION_DISCOVERY_STARTED
Broadcast Action: The local Bluetooth adapter has started the remote device discovery process.
String
ACTION_LOCAL_NAME_CHANGED
Broadcast Action: The local Bluetooth adapter has changed its friendly Bluetooth name.
String
ACTION_REQUEST_DISCOVERABLE
Activity Action: Show a system activity that requests discoverable mode.
String
ACTION_REQUEST_ENABLE
Activity Action: Show a system activity that allows the user to turn on Bluetooth.
String
ACTION_SCAN_MODE_CHANGED
Broadcast Action: Indicates the Bluetooth scan mode of the local Adapter has changed.
String
ACTION_STATE_CHANGED
Broadcast Action: The state of the local Bluetooth adapter has been changed.
int
ERROR
Sentinel error value for this class.
String
EXTRA_CONNECTION_STATE
Extra used byACTION_CONNECTION_STATE_CHANGED
This extra represents the current connection state.
String
EXTRA_DISCOVERABLE_DURATION
Used as an optional int extra field inACTION_REQUEST_DISCOVERABLE
intents to request a specific duration for discoverability in seconds.
String
EXTRA_LOCAL_NAME
Used as a String extra field inACTION_LOCAL_NAME_CHANGED
intents to request the local Bluetooth name.
String
EXTRA_PREVIOUS_CONNECTION_STATE
Extra used byACTION_CONNECTION_STATE_CHANGED
This extra represents the previous connection state.
String
EXTRA_PREVIOUS_SCAN_MODE
Used as an int extra field inACTION_SCAN_MODE_CHANGED
intents to request the previous scan mode.
String
EXTRA_PREVIOUS_STATE
Used as an int extra field inACTION_STATE_CHANGED
intents to request the previous power state.
String
EXTRA_SCAN_MODE
Used as an int extra field inACTION_SCAN_MODE_CHANGED
intents to request the current scan mode.
String
EXTRA_STATE
Used as an int extra field inACTION_STATE_CHANGED
intents to request the current power state.
int
SCAN_MODE_CONNECTABLE
Indicates that inquiry scan is disabled, but page scan is enabled on the local Bluetooth adapter.
int
SCAN_MODE_CONNECTABLE_DISCOVERABLE
Indicates that both inquiry scan and page scan are enabled on the local Bluetooth adapter.
int
SCAN_MODE_NONE
Indicates that both inquiry scan and page scan are disabled on the local Bluetooth adapter.
int
STATE_CONNECTED
The profile is in connected state
int
STATE_CONNECTING
The profile is in connecting state
int
STATE_DISCONNECTED
The profile is in disconnected state
int
STATE_DISCONNECTING
The profile is in disconnecting state
int
STATE_OFF
Indicates the local Bluetooth adapter is off.
int
STATE_ON
Indicates the local Bluetooth adapter is on, and ready for use.
int
STATE_TURNING_OFF
Indicates the local Bluetooth adapter is turning off.
int
STATE_TURNING_ON
Indicates the local Bluetooth adapter is turning on.
boolean
cancelDiscovery()
Cancel the current device discovery process.
static boolean
checkBluetoothAddress(Stringaddress)
Validate a String Bluetooth address, such as "00:43:A8:23:10:F0"
Alphabetic characters must be uppercase to be valid.
void
closeProfileProxy(int profile,BluetoothProfileproxy)
Close the connection of the profile proxy to the Service.
boolean
disable()
Turn off the local Bluetooth adapter—do not use without explicit user action to turn off Bluetooth.
boolean
enable()
Turn on the local Bluetooth adapter—do not use without explicit user action to turn on Bluetooth.
String
getAddress()
Returns the hardware address of the local Bluetooth adapter.
BluetoothLeAdvertiser
getBluetoothLeAdvertiser()
Returns aBluetoothLeAdvertiser
object for Bluetooth LE Advertising operations.
BluetoothLeScanner
getBluetoothLeScanner()
Returns aBluetoothLeScanner
object for Bluetooth LE scan operations.
Set<BluetoothDevice>
getBondedDevices()
Return the set ofBluetoothDevice
objects that are bonded (paired) to the local adapter.
staticBluetoothAdapter
getDefaultAdapter()
Get a handle to the default local Bluetooth adapter.
String
getName()
Get the friendly Bluetooth name of the local Bluetooth adapter.
int
getProfileConnectionState(int profile)
Get the current connection state of a profile.
boolean
getProfileProxy(Contextcontext,BluetoothProfile.ServiceListenerlistener, int profile)
Get the profile proxy object associated with the profile.
BluetoothDevice
getRemoteDevice(byte[] address)
Get aBluetoothDevice
object for the given Bluetooth hardware address.
BluetoothDevice
getRemoteDevice(Stringaddress)
Get aBluetoothDevice
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.
boolean
isMultipleAdvertisementSupported()
Return true if the multi advertisement is supported by the chipset
boolean
isOffloadedFilteringSupported()
Return true if offloaded filters are supported
boolean
isOffloadedScanBatchingSupported()
Return true if offloaded scan batching is supported
BluetoothServerSocket
listenUsingInsecureRfcommWithServiceRecord(Stringname,UUIDuuid)
Create a listening, insecure RFCOMM Bluetooth socket with Service Record.
BluetoothServerSocket
listenUsingRfcommWithServiceRecord(Stringname,UUIDuuid)
Create a listening, secure RFCOMM Bluetooth socket with Service Record.
boolean
setName(Stringname)
Set the friendly Bluetooth name of the local Bluetooth adapter.
boolean
startDiscovery()
Start the remote device discovery process.
boolean
startLeScan(UUID[]serviceUuids,BluetoothAdapter.LeScanCallbackcallback)
This method was deprecated in API level 21. usestartScan(List, ScanSettings, ScanCallback)
instead.
boolean
startLeScan(BluetoothAdapter.LeScanCallbackcallback)
This method was deprecated in API level 21. usestartScan(List, ScanSettings, ScanCallback)
instead.
void
stopLeScan(BluetoothAdapter.LeScanCallbackcallback)
This method was deprecated in API level 21. UsestopScan(ScanCallback)
instead.
void
finalize()
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
java.lang.Object
String ACTION_CONNECTION_STATE_CHANGED
Intent used to broadcast the change in connection state of the local Bluetooth adapter to a profile of the remote device. When the adapter is not connected to any profiles of any remote devices and it attempts a connection to a profile this intent will sent. Once connected, this intent will not be sent for any more connection attempts to any profiles of any remote device. When the adapter disconnects from the last profile its connected to of any remote device, this intent will be sent.
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.
This intent will have 3 extras:EXTRA_CONNECTION_STATE
- The current connection state.EXTRA_PREVIOUS_CONNECTION_STATE
- The previous connection state.EXTRA_DEVICE
- The remote device.EXTRA_CONNECTION_STATE
orEXTRA_PREVIOUS_CONNECTION_STATE
can be any ofSTATE_DISCONNECTED
,STATE_CONNECTING
,STATE_CONNECTED
,STATE_DISCONNECTING
.
RequiresBLUETOOTH
to receive.
Constant Value: "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED"
String ACTION_DISCOVERY_FINISHED
Broadcast Action: The local Bluetooth adapter has finished the device discovery process.
RequiresBLUETOOTH
to receive.
Constant Value: "android.bluetooth.adapter.action.DISCOVERY_FINISHED"
String ACTION_DISCOVERY_STARTED
Broadcast Action: The local Bluetooth adapter has started the remote device discovery process.
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 forACTION_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. UsecancelDiscovery()
to cancel an ongoing discovery.
RequiresBLUETOOTH
to receive.
Constant Value: "android.bluetooth.adapter.action.DISCOVERY_STARTED"
String ACTION_LOCAL_NAME_CHANGED
Broadcast Action: The local Bluetooth adapter has changed its friendly Bluetooth name.
This name is visible to remote Bluetooth devices.
Always contains the extra fieldEXTRA_LOCAL_NAME
containing the name.
RequiresBLUETOOTH
to receive.
Constant Value: "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED"
String ACTION_REQUEST_DISCOVERABLE
Activity Action: Show a system activity that requests discoverable mode. This activity will also request the user to turn on Bluetooth if it is not currently enabled.
Discoverable mode is equivalent toSCAN_MODE_CONNECTABLE_DISCOVERABLE
. It allows remote devices to see this Bluetooth adapter when they perform a discovery.
For privacy, Android is not discoverable by default.
The sender of this Intent can optionally use extra fieldEXTRA_DISCOVERABLE_DURATION
to request the duration of discoverability. Currently the default duration is 120 seconds, and maximum duration is capped at 300 seconds for each request.
Notification of the result of this activity is posted using theonActivityResult(int, int, Intent)
callback. TheresultCode
will be the duration (in seconds) of discoverability orRESULT_CANCELED
if the user rejected discoverability or an error has occurred.
Applications can also listen forACTION_SCAN_MODE_CHANGED
for global notification whenever the scan mode changes. For example, an application can be notified when the device has ended discoverability.
RequiresBLUETOOTH
Constant Value: "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE"
String ACTION_REQUEST_ENABLE
Activity Action: Show a system activity that allows the user to turn on Bluetooth.
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 theonActivityResult(int, int, Intent)
callback. TheresultCode
will beRESULT_OK
if Bluetooth has been turned on orRESULT_CANCELED
if the user has rejected the request or an error has occurred.
Applications can also listen forACTION_STATE_CHANGED
for global notification whenever Bluetooth is turned on or off.
RequiresBLUETOOTH
Constant Value: "android.bluetooth.adapter.action.REQUEST_ENABLE"
String ACTION_SCAN_MODE_CHANGED
Broadcast Action: Indicates the Bluetooth scan mode of the local Adapter has changed.
Always contains the extra fieldsEXTRA_SCAN_MODE
andEXTRA_PREVIOUS_SCAN_MODE
containing the new and old scan modes respectively.
RequiresBLUETOOTH
Constant Value: "android.bluetooth.adapter.action.SCAN_MODE_CHANGED"
String ACTION_STATE_CHANGED
Broadcast Action: The state of the local Bluetooth adapter has been changed.
For example, Bluetooth has been turned on or off.
Always contains the extra fieldsEXTRA_STATE
andEXTRA_PREVIOUS_STATE
containing the new and old states respectively.
RequiresBLUETOOTH
to receive.
Constant Value: "android.bluetooth.adapter.action.STATE_CHANGED"
int ERROR
Sentinel error value for this class. Guaranteed to not equal any other integer constant in this class. Provided as a convenience for functions that require a sentinel error value, for example:
Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)
Constant Value: -2147483648 (0x80000000)
String EXTRA_CONNECTION_STATE
Extra used byACTION_CONNECTION_STATE_CHANGED
This extra represents the current connection state.
Constant Value: "android.bluetooth.adapter.extra.CONNECTION_STATE"
String EXTRA_DISCOVERABLE_DURATION
Used as an optional int extra field inACTION_REQUEST_DISCOVERABLE
intents to request a specific duration for discoverability in seconds. The current default is 120 seconds, and requests over 300 seconds will be capped. These values could change.
Constant Value: "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION"
String EXTRA_LOCAL_NAME
Used as a String extra field inACTION_LOCAL_NAME_CHANGED
intents to request the local Bluetooth name.
Constant Value: "android.bluetooth.adapter.extra.LOCAL_NAME"
String EXTRA_PREVIOUS_CONNECTION_STATE
Extra used byACTION_CONNECTION_STATE_CHANGED
This extra represents the previous connection state.
Constant Value: "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE"
String EXTRA_PREVIOUS_SCAN_MODE
Used as an int extra field inACTION_SCAN_MODE_CHANGED
intents to request the previous scan mode. Possible values are:SCAN_MODE_NONE
,SCAN_MODE_CONNECTABLE
,SCAN_MODE_CONNECTABLE_DISCOVERABLE
,
Constant Value: "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE"
String EXTRA_PREVIOUS_STATE
Used as an int extra field inACTION_STATE_CHANGED
intents to request the previous power state. Possible values are:STATE_OFF
,STATE_TURNING_ON
,STATE_ON
,STATE_TURNING_OFF
Constant Value: "android.bluetooth.adapter.extra.PREVIOUS_STATE"
String EXTRA_SCAN_MODE
Used as an int extra field inACTION_SCAN_MODE_CHANGED
intents to request the current scan mode. Possible values are:SCAN_MODE_NONE
,SCAN_MODE_CONNECTABLE
,SCAN_MODE_CONNECTABLE_DISCOVERABLE
,
Constant Value: "android.bluetooth.adapter.extra.SCAN_MODE"
String EXTRA_STATE
Used as an int extra field inACTION_STATE_CHANGED
intents to request the current power state. Possible values are:STATE_OFF
,STATE_TURNING_ON
,STATE_ON
,STATE_TURNING_OFF
,
Constant Value: "android.bluetooth.adapter.extra.STATE"
int SCAN_MODE_CONNECTABLE
Indicates that inquiry scan is disabled, but page scan is enabled on the local Bluetooth adapter. Therefore this device is not discoverable from remote Bluetooth devices, but is connectable from remote devices that have previously discovered this device.
Constant Value: 21 (0x00000015)
int SCAN_MODE_CONNECTABLE_DISCOVERABLE
Indicates that both inquiry scan and page scan are enabled on the local Bluetooth adapter. Therefore this device is both discoverable and connectable from remote Bluetooth devices.
Constant Value: 23 (0x00000017)
int SCAN_MODE_NONE
Indicates that both inquiry scan and page scan are disabled on the local Bluetooth adapter. Therefore this device is neither discoverable nor connectable from remote Bluetooth devices.
Constant Value: 20 (0x00000014)
int STATE_CONNECTED
The profile is in connected state
Constant Value: 2 (0x00000002)
int STATE_CONNECTING
The profile is in connecting state
Constant Value: 1 (0x00000001)
int STATE_DISCONNECTED
The profile is in disconnected state
Constant Value: 0 (0x00000000)
int STATE_DISCONNECTING
The profile is in disconnecting state
Constant Value: 3 (0x00000003)
int STATE_OFF
Indicates the local Bluetooth adapter is off.
Constant Value: 10 (0x0000000a)
int STATE_ON
Indicates the local Bluetooth adapter is on, and ready for use.
Constant Value: 12 (0x0000000c)
int STATE_TURNING_OFF
Indicates the local Bluetooth adapter is turning off. Local clients should immediately attempt graceful disconnection of any remote links.
Constant Value: 13 (0x0000000d)
int STATE_TURNING_ON
Indicates the local Bluetooth adapter is turning on. However local clients should wait forSTATE_ON
before attempting to use the adapter.
Constant Value: 11 (0x0000000b)
boolean cancelDiscovery ()
Cancel the current device discovery process.
RequiresBLUETOOTH_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 withconnect()
. 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 notSTATE_ON
, this API will return false. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
boolean
true on success, false on error
boolean checkBluetoothAddress (String address)
Validate a String Bluetooth address, such as "00:43:A8:23:10:F0"
Alphabetic characters must be uppercase to be valid.
address
String
: Bluetooth address as string
boolean
true if the address is valid, false otherwise
void closeProfileProxy (int profile, BluetoothProfile proxy)
Close the connection of the profile proxy to the Service.
Clients should call this when they are no longer using the proxy obtained fromgetProfileProxy(Context, BluetoothProfile.ServiceListener, int)
. Profile can be one ofHEALTH
,HEADSET
orA2DP
proxy
BluetoothProfile
: Profile proxy object
boolean disable ()
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.
Bluetooth should never be disabled without direct user consent. Thedisable()
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 forACTION_STATE_CHANGED
to be notified of subsequent adapter state changes. If this call returns true, then the adapter state will immediately transition fromSTATE_ON
toSTATE_TURNING_OFF
, and some time later transition to eitherSTATE_OFF
orSTATE_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 theBLUETOOTH_ADMIN
permission
boolean
true to indicate adapter shutdown has begun, or false on immediate error
boolean enable ()
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. Theenable()
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 forACTION_STATE_CHANGED
to be notified of subsequent adapter state changes. If this call returns true, then the adapter state will immediately transition fromSTATE_OFF
toSTATE_TURNING_ON
, and some time later transition to eitherSTATE_OFF
orSTATE_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 theBLUETOOTH_ADMIN
permission
boolean
true to indicate adapter startup has begun, or false on immediate error
String getAddress ()
Returns the hardware address of the local Bluetooth adapter.
For example, "00:11:22:AA:BB:CC".
RequiresBLUETOOTH
String
Bluetooth hardware address as string
BluetoothLeAdvertiser getBluetoothLeAdvertiser ()
Returns aBluetoothLeAdvertiser
object for Bluetooth LE Advertising operations. Will return null if Bluetooth is turned off or if Bluetooth LE Advertising is not supported on this device.
UseisMultipleAdvertisementSupported()
to check whether LE Advertising is supported on this device before calling this method.
BluetoothLeAdvertiser
BluetoothLeScanner getBluetoothLeScanner ()
Returns aBluetoothLeScanner
object for Bluetooth LE scan operations.
BluetoothLeScanner
Set<BluetoothDevice> getBondedDevices ()
Return the set ofBluetoothDevice
objects that are bonded (paired) to the local adapter.
If Bluetooth state is notSTATE_ON
, this API will return an empty set. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
RequiresBLUETOOTH
.
Set<BluetoothDevice>
unmodifiable set ofBluetoothDevice
, or null on error
BluetoothAdapter getDefaultAdapter ()
Get a handle to the default local Bluetooth adapter.
Currently Android only supports one Bluetooth adapter, but the API could be extended to support more. This will always return the default adapter.
BluetoothAdapter
the default local adapter, or null if Bluetooth is not supported on this hardware platform
String getName ()
Get the friendly Bluetooth name of the local Bluetooth adapter.
This name is visible to remote Bluetooth devices.
RequiresBLUETOOTH
String
the Bluetooth name, or null on error
int getProfileConnectionState (int profile)
Get the current connection state of a profile. This function can be used to check whether the local Bluetooth adapter is connected to any remote device for a specific profile. Profile can be one ofHEALTH
,HEADSET
,A2DP
.
RequiresBLUETOOTH
.
Return value can be one ofSTATE_DISCONNECTED
,STATE_CONNECTING
,STATE_CONNECTED
,STATE_DISCONNECTING
profile
int
int
boolean getProfileProxy (Context context, BluetoothProfile.ServiceListener listener, int profile)
Get the profile proxy object associated with the profile.
Profile can be one ofHEALTH
,HEADSET
,A2DP
,GATT
, orGATT_SERVER
. Clients must implementBluetoothProfile.ServiceListener
to get notified of the connection status and to get the proxy object.
context
Context
: Context of the application
listener
BluetoothProfile.ServiceListener
: The service Listener for connection callbacks.
profile
int
: The Bluetooth profile; eitherHEALTH
,HEADSET
,A2DP
.GATT
orGATT_SERVER
.
boolean
true on success, false on error
BluetoothDevice getRemoteDevice (byte[] address)
Get aBluetoothDevice
object for the given Bluetooth hardware address.
Valid Bluetooth hardware addresses must be 6 bytes. This method expects the address in network byte order (MSB first).
ABluetoothDevice
will always be returned for a valid hardware address, even if this adapter has never seen that device.
address
byte
: Bluetooth MAC address (6 bytes)
BluetoothDevice
IllegalArgumentException
if address is invalid
BluetoothDevice getRemoteDevice (String address)
Get aBluetoothDevice
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 helpercheckBluetoothAddress(String)
is available to validate a Bluetooth address.
ABluetoothDevice
will always be returned for a valid hardware address, even if this adapter has never seen that device.
address
String
: valid Bluetooth MAC address
BluetoothDevice
IllegalArgumentException
if address is invalid
int getScanMode ()
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_DISCOVERABLE
.
If Bluetooth state is notSTATE_ON
, this API will returnSCAN_MODE_NONE
. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
RequiresBLUETOOTH
int
scan mode
int getState ()
Get the current state of the local Bluetooth adapter.
Possible return values areSTATE_OFF
,STATE_TURNING_ON
,STATE_ON
,STATE_TURNING_OFF
.
RequiresBLUETOOTH
int
current state of Bluetooth adapter
boolean isDiscovering ()
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. UsecancelDiscovery()
to cancel an ongoing discovery.
Applications can also register forACTION_DISCOVERY_STARTED
orACTION_DISCOVERY_FINISHED
to be notified when discovery starts or completes.
If Bluetooth state is notSTATE_ON
, this API will return false. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
RequiresBLUETOOTH
.
boolean
true if discovering
boolean isEnabled ()
Return true if Bluetooth is currently enabled and ready for use.
Equivalent to:getBluetoothState() == STATE_ON
RequiresBLUETOOTH
boolean
true if the local adapter is turned on
boolean isMultipleAdvertisementSupported ()
Return true if the multi advertisement is supported by the chipset
boolean
true if Multiple Advertisement feature is supported
boolean isOffloadedFilteringSupported ()
Return true if offloaded filters are supported
boolean
true if chipset supports on-chip filtering
boolean isOffloadedScanBatchingSupported ()
Return true if offloaded scan batching is supported
boolean
true if chipset supports on-chip scan batching
BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord (String name, UUID uuid)
Create a listening, insecure RFCOMM Bluetooth socket with Service Record.
The link key is not required to be authenticated, i.e the communication may be vulnerable to Man In the Middle attacks. For Bluetooth 2.1 devices, the link will be encrypted, as encryption is mandartory. For legacy devices (pre Bluetooth 2.1 devices) the link will not be encrypted. UselistenUsingRfcommWithServiceRecord(String, UUID)
, if an encrypted and authenticated communication channel is desired.
Useaccept()
to retrieve incoming connections from a listeningBluetoothServerSocket
.
The system will assign an unused RFCOMM channel to listen on.
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.
UsecreateRfcommSocketToServiceRecord(UUID)
to connect to this socket from another device using the sameUUID
.
RequiresBLUETOOTH
name
String
: service name for SDP record
uuid
UUID
: uuid for SDP record
BluetoothServerSocket
a listening RFCOMM BluetoothServerSocket
IOException
on error, for example Bluetooth not available, or insufficient permissions, or channel in use.
BluetoothServerSocket listenUsingRfcommWithServiceRecord (String name, UUID uuid)
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.
Useaccept()
to retrieve incoming connections from a listeningBluetoothServerSocket
.
The system will assign an unused RFCOMM channel to listen on.
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.
UsecreateRfcommSocketToServiceRecord(UUID)
to connect to this socket from another device using the sameUUID
.
RequiresBLUETOOTH
name
String
: service name for SDP record
uuid
UUID
: uuid for SDP record
BluetoothServerSocket
a listening RFCOMM BluetoothServerSocket
IOException
on error, for example Bluetooth not available, or insufficient permissions, or channel in use.
boolean setName (String name)
Set the friendly Bluetooth name of the local Bluetooth adapter.
This name is visible to remote Bluetooth devices.
Valid Bluetooth names are a maximum of 248 bytes using UTF-8 encoding, although many remote devices can only display the first 40 characters, and some may be limited to just 20.
If Bluetooth state is notSTATE_ON
, this API will return false. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
RequiresBLUETOOTH_ADMIN
name
String
: a valid Bluetooth name
boolean
true if the name was set, false otherwise
boolean startDiscovery ()
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.
This is an asynchronous call, it will return immediately. Register forACTION_DISCOVERY_STARTED
andACTION_DISCOVERY_FINISHED
intents to determine exactly when the discovery starts and completes. Register forACTION_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. UsecancelDiscovery()
to cancel an ongoing discovery. Discovery is not managed by the Activity, but is run as a system service, so an application should always callcancelDiscovery()
even if it did not directly request a discovery, just to be sure.
Device discovery will only find remote devices that are currentlydiscoverable(inquiry scan enabled). Many Bluetooth devices are not discoverable by default, and need to be entered into a special mode.
If Bluetooth state is notSTATE_ON
, this API will return false. After turning on Bluetooth, wait forACTION_STATE_CHANGED
withSTATE_ON
to get the updated value.
RequiresBLUETOOTH_ADMIN
.
boolean
true on success, false on error
boolean startLeScan (UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)
This method was deprecated in API level 21.
usestartScan(List, ScanSettings, ScanCallback)
instead.
Starts a scan for Bluetooth LE devices, looking for devices that advertise given services.
Devices which advertise all specified services are reported using theonLeScan(BluetoothDevice, int, byte[])
callback.
RequiresBLUETOOTH_ADMIN
permission.
serviceUuids
UUID
: Array of services to look for
callback
BluetoothAdapter.LeScanCallback
: the callback LE scan results are delivered
boolean
true, if the scan was started successfully
boolean startLeScan (BluetoothAdapter.LeScanCallback callback)
This method was deprecated in API level 21.
usestartScan(List, ScanSettings, ScanCallback)
instead.
Starts a scan for Bluetooth LE devices.
Results of the scan are reported using theonLeScan(BluetoothDevice, int, byte[])
callback.
RequiresBLUETOOTH_ADMIN
permission.
callback
BluetoothAdapter.LeScanCallback
: the callback LE scan results are delivered
boolean
true, if the scan was started successfully
void stopLeScan (BluetoothAdapter.LeScanCallback callback)
This method was deprecated in API level 21.
UsestopScan(ScanCallback)
instead.
Stops an ongoing Bluetooth LE device scan.
RequiresBLUETOOTH_ADMIN
permission.
callback
BluetoothAdapter.LeScanCallback
: used to identify which scan to stop must be the same handle used to start the scan
void finalize ()
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides thefinalize
method to dispose of system resources or to perform other cleanup.
The general contract offinalize
is that it is invoked if and when the JavaTMvirtual machine has determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, except as a result of an action taken by the finalization of some other object or class which is ready to be finalized. Thefinalize
method may take any action, including making this object available again to other threads; the usual purpose offinalize
, however, is to perform cleanup actions before the object is irrevocably discarded. For example, the finalize method for an object that represents an input/output connection might perform explicit I/O transactions to break the connection before the object is permanently discarded.
Thefinalize
method of classObject
performs no special action; it simply returns normally. Subclasses ofObject
may override this definition.
The Java programming language does not guarantee which thread will invoke thefinalize
method for any given object. It is guaranteed, however, that the thread that invokes finalize will not be holding any user-visible synchronization locks when finalize is invoked. If an uncaught exception is thrown by the finalize method, the exception is ignored and finalization of that object terminates.
After thefinalize
method has been invoked for an object, no further action is taken until the Java virtual machine has again determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, including possible actions by other objects or classes which are ready to be finalized, at which point the object may be discarded.
Thefinalize
method is never invoked more than once by a Java virtual machine for any given object.
Any exception thrown by thefinalize
method causes the finalization of this object to be halted, but is otherwise ignored.
概述 悠悠綠水傍林侵日落觀山四望回 幽林古寺孤明月冷井寒泉碧映台 鷗飛滿浦漁舟泛鶴伴閒亭仙客來 游徑踏花煙上走流溪遠棹一篷開 概述 一個不小心都寫了三篇了,也不知道大家
已經寫了幾篇關於Android源碼的,源碼代碼量太大,所以如果想分析某個模塊可能不知如何下手,說一下思路1,分析源碼英文閱讀能力要夠,想要分析某個模塊一般找模塊對應的英文
適配器模式的應用: 1.降低程序耦合性2.容易擴展 BaseAdapterListView的顯示與緩存機制:需要才顯示,顯示完
模式的定義 適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 使用場景 用電源接口做例