public final class BluetoothAdapter
extends Object
java.lang.Object | |
↳ | android.bluetooth.BluetoothAdapter |
代表本地设备蓝牙适配器。 BluetoothAdapter
可让您执行基本的蓝牙任务,例如启动设备发现,查询绑定(配对)设备列表,使用已知MAC地址实例化BluetoothDevice
,并创建一个BluetoothServerSocket
以侦听来自其他设备的连接请求,并启动扫描蓝牙LE设备。
为了得到一个BluetoothAdapter
代表本地蓝牙适配器,上JELLY_BEAN_MR1运行及以下,调用静态时getDefaultAdapter()
方法; 当在JELLY_BEAN_MR2及更高版本上运行时,请致电getAdapter()
。 从根本上说,这是您所有蓝牙操作的起点。 一旦拥有本地适配器,您就可以获得一组代表所有配对设备的BluetoothDevice
对象,其中getBondedDevices()
; 用startDiscovery()
启动设备发现; 或创建BluetoothServerSocket
听与传入的连接请求listenUsingRfcommWithServiceRecord(String, UUID)
; 或使用startLeScan(LeScanCallback)
开始扫描蓝牙LE设备。
这个类是线程安全的。
注意:大多数方法需要 BLUETOOTH
权限,有些还需要 BLUETOOTH_ADMIN
权限。
有关使用蓝牙的更多信息,请阅读 Bluetooth开发人员指南。
Nested classes |
|
---|---|
interface |
BluetoothAdapter.LeScanCallback 用于提供LE扫描结果的回调界面。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String ACTION_CONNECTION_STATE_CHANGED
意图用于将本地蓝牙适配器连接状态的变化广播到远程设备的配置文件。 当适配器未连接到任何远程设备的任何配置文件并尝试连接到配置文件时,此意图将被发送。 一旦连接,此意图将不会被发送到任何远程设备的任何配置文件的任何更多连接尝试。 当适配器从最后一个配置文件断开连接到任何远程设备时,这个意图将被发送。
这个意图对于只关心本地适配器是否连接到任何设备的任何配置文件并且不关心哪个配置文件的应用程序很有用。 例如,显示图标以显示是否连接蓝牙的应用程序可以使用此意图。
这个意图将有3个额外的: EXTRA_CONNECTION_STATE
- 当前的连接状态。 EXTRA_PREVIOUS_CONNECTION_STATE
- 上一个连接状态。 EXTRA_DEVICE
- 远程设备。 EXTRA_CONNECTION_STATE
或EXTRA_PREVIOUS_CONNECTION_STATE
可以是任何的STATE_DISCONNECTED
, STATE_CONNECTING
, STATE_CONNECTED
, STATE_DISCONNECTING
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED”
String ACTION_DISCOVERY_FINISHED
广播动作:本地蓝牙适配器已完成设备发现过程。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.adapter.action.DISCOVERY_FINISHED”
String ACTION_DISCOVERY_STARTED
广播动作:本地蓝牙适配器已启动远程设备发现过程。
这通常涉及约12秒的查询扫描,然后是每个新设备的页面扫描以检索其蓝牙名称。
注册 ACTION_FOUND
以在发现远程蓝牙设备时收到通知。
设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()
取消正在进行的发现。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.adapter.action.DISCOVERY_STARTED”
String ACTION_LOCAL_NAME_CHANGED
广播动作:本地蓝牙适配器已更改其友好蓝牙名称。
该名称对远程蓝牙设备可见。
始终包含包含名称的额外字段 EXTRA_LOCAL_NAME
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.adapter.action.LOCAL_NAME_CHANGED”
String ACTION_REQUEST_DISCOVERABLE
活动操作:显示请求可发现模式的系统活动。 如果当前未启用,此活动还会要求用户打开蓝牙。
可发现模式相当于SCAN_MODE_CONNECTABLE_DISCOVERABLE
。 它允许远程设备在执行发现时看到此蓝牙适配器。
为了保护隐私,默认情况下Android不可发现。
此Intent的发件人可以选择使用额外字段EXTRA_DISCOVERABLE_DURATION
来请求发现的持续时间。 目前默认的持续时间是120秒,每个请求的最大持续时间被限制在300秒。
使用回调onActivityResult(int, int, Intent)
发布此活动结果的通知。 resultCode
将是可发现性的持续时间(以秒为单位),如果用户拒绝发现或发生错误, RESULT_CANCELED
。
每当扫描模式改变时,应用程序也可以侦听ACTION_SCAN_MODE_CHANGED
以获取全局通知。 例如,当设备结束发现时,可以通知应用程序。
需要 BLUETOOTH
常量值:“android.bluetooth.adapter.action.REQUEST_DISCOVERABLE”
String ACTION_REQUEST_ENABLE
活动操作:显示允许用户打开蓝牙的系统活动。
一旦蓝牙完成打开,或者用户决定不打开蓝牙,该系统活动将返回。
使用onActivityResult(int, int, Intent)
回调通知此活动结果的通知。 如果蓝牙已打开,则RESULT_CANCELED
如果用户拒绝了请求或发生了错误,则resultCode
将为RESULT_OK
。
无论蓝牙开启还是关闭,应用程序还可以监听 ACTION_STATE_CHANGED
的全局通知。
需要 BLUETOOTH
常量值:“android.bluetooth.adapter.action.REQUEST_ENABLE”
String ACTION_SCAN_MODE_CHANGED
广播动作:表示本地适配器的蓝牙扫描模式已更改。
始终包含 EXTRA_PREVIOUS_SCAN_MODE
包含新旧扫描模式的额外字段 EXTRA_SCAN_MODE
和 EXTRA_PREVIOUS_SCAN_MODE
。
需要 BLUETOOTH
常量值:“android.bluetooth.adapter.action.SCAN_MODE_CHANGED”
String ACTION_STATE_CHANGED
广播动作:本地蓝牙适配器的状态已更改。
例如,蓝牙已被打开或关闭。
始终包含分别包含新状态和旧状态的额外字段 EXTRA_STATE
和 EXTRA_PREVIOUS_STATE
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.adapter.action.STATE_CHANGED”
int ERROR
这个类的Sentinel错误值。 保证在这个类中不等于任何其他整数常量。 为便于需要标记错误值的函数提供,例如:
Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)
常量值:-2147483648(0x80000000)
String EXTRA_CONNECTION_STATE
额外使用 ACTION_CONNECTION_STATE_CHANGED
这额外代表当前的连接状态。
常量值:“android.bluetooth.adapter.extra.CONNECTION_STATE”
String EXTRA_DISCOVERABLE_DURATION
在ACTION_REQUEST_DISCOVERABLE
意图中作为可选的int额外字段用于在几秒钟内请求特定的发现持续时间。 当前的默认值是120秒,超过300秒的请求将被限制。 这些值可能会改变。
常量值:“android.bluetooth.adapter.extra.DISCOVERABLE_DURATION”
String EXTRA_LOCAL_NAME
用作请求本地蓝牙名称的 ACTION_LOCAL_NAME_CHANGED
意图中的字符串额外字段。
常量值:“android.bluetooth.adapter.extra.LOCAL_NAME”
String EXTRA_PREVIOUS_CONNECTION_STATE
额外使用 ACTION_CONNECTION_STATE_CHANGED
这额外代表了以前的连接状态。
常量值:“android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE”
String EXTRA_PREVIOUS_SCAN_MODE
在ACTION_SCAN_MODE_CHANGED
意图中作为int外部字段使用,以请求先前的扫描模式。 可能的值有: SCAN_MODE_NONE
, SCAN_MODE_CONNECTABLE
, SCAN_MODE_CONNECTABLE_DISCOVERABLE
,
常量值:“android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE”
String EXTRA_PREVIOUS_STATE
在ACTION_STATE_CHANGED
意图中ACTION_STATE_CHANGED
请求之前电源状态的int外部字段。 可能的值有: STATE_OFF
, STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
常量值:“android.bluetooth.adapter.extra.PREVIOUS_STATE”
String EXTRA_SCAN_MODE
在ACTION_SCAN_MODE_CHANGED
意图中ACTION_SCAN_MODE_CHANGED
请求当前扫描模式的int extra字段。 可能的值有: SCAN_MODE_NONE
, SCAN_MODE_CONNECTABLE
, SCAN_MODE_CONNECTABLE_DISCOVERABLE
,
常量值:“android.bluetooth.adapter.extra.SCAN_MODE”
String EXTRA_STATE
在ACTION_STATE_CHANGED
意图中用作int extra字段以请求当前的电源状态。 可能的值有: STATE_OFF
, STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
,
常量值:“android.bluetooth.adapter.extra.STATE”
int SCAN_MODE_CONNECTABLE
表示查询扫描已禁用,但本地蓝牙适配器上已启用页面扫描。 因此,此设备无法从远程蓝牙设备中发现,但可以从先前发现此设备的远程设备连接。
常量值:21(0x00000015)
int SCAN_MODE_CONNECTABLE_DISCOVERABLE
表示在本地蓝牙适配器上启用了查询扫描和页面扫描。 因此,该设备既可被发现,也可从远程蓝牙设备连接。
常量值:23(0x00000017)
int SCAN_MODE_NONE
表示在本地蓝牙适配器上禁用查询扫描和页面扫描。 因此,该设备既不可发现也不能从远程蓝牙设备连接。
常量值:20(0x00000014)
int STATE_TURNING_OFF
表示本地蓝牙适配器已关闭。 本地客户端应立即尝试正常断开任何远程链接。
常量值:13(0x0000000d)
int STATE_TURNING_ON
表示本地蓝牙适配器正在打开。 但是,在尝试使用适配器之前,本地客户端应等待STATE_ON
。
常量值:11(0x0000000b)
boolean cancelDiscovery ()
取消当前的设备发现过程。
需要 BLUETOOTH_ADMIN
。
由于发现是蓝牙适配器的重量级过程,因此应在尝试连接到具有connect()
的远程设备之前始终调用此方法。 发现不是由Activity管理的,而是作为系统服务运行的,所以即使应用程序没有直接请求发现,也应该始终调用取消发现。
如果蓝牙状态不是STATE_ON
,则此API将返回false。 打开蓝牙后,请等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
Returns | |
---|---|
boolean |
true on success, false on error |
boolean checkBluetoothAddress (String address)
验证字符串蓝牙地址,例如“00:43:A8:23:10:F0”
字母字符必须大写才能有效。
Parameters | |
---|---|
address |
String : Bluetooth address as string |
Returns | |
---|---|
boolean |
true if the address is valid, false otherwise |
void closeProfileProxy (int profile, BluetoothProfile proxy)
关闭配置文件代理连接到服务。
当客户不再使用从getProfileProxy(Context, BluetoothProfile.ServiceListener, int)
获得的代理时,客户应该调用它。 简介可以是一个HEALTH
, HEADSET
或者A2DP
Parameters | |
---|---|
proxy |
BluetoothProfile : Profile proxy object |
boolean disable ()
关闭本地蓝牙适配器 - 不要使用没有明确的用户操作来关闭蓝牙。
这会优雅地关闭所有蓝牙连接,停止蓝牙系统服务并关闭底层蓝牙硬件。
未经用户直接同意,不应禁用蓝牙 。 disable()
方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如“电源管理器”应用程序。
这是一个异步调用:它将立即返回,并且客户端应该监听ACTION_STATE_CHANGED
以通知后续适配器状态更改。 如果此调用返回true,则适配器状态将立即从STATE_ON
过渡到STATE_TURNING_OFF
,并且稍后过渡到STATE_OFF
或STATE_ON
。 如果这个调用返回false,那么有一个直接的问题会阻止适配器被关闭 - 比如适配器已经被关闭。
需要 BLUETOOTH_ADMIN
权限
Returns | |
---|---|
boolean |
true to indicate adapter shutdown has begun, or false on immediate error |
boolean enable ()
打开本地蓝牙适配器 - 不要使用没有明确的用户操作来打开蓝牙。
这会启用底层蓝牙硬件,并启动所有蓝牙系统服务。
未经用户直接同意,不应启用蓝牙 。 如果要打开蓝牙以创建无线连接,则应使用ACTION_REQUEST_ENABLE
意图,这会引发一个请求用户许可以打开蓝牙的对话框。 enable()
方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如“电源管理器”应用程序。
这是一个异步调用:它将立即返回,并且客户端应该监听ACTION_STATE_CHANGED
以通知后续适配器状态更改。 如果此调用返回true,则适配器状态将立即从STATE_OFF
转换为STATE_TURNING_ON
,并且稍后过渡到STATE_OFF
或STATE_ON
。 如果此调用返回false,则会有一个直接问题阻止适配器开启 - 例如飞行模式,或者适配器已打开。
需要 BLUETOOTH_ADMIN
权限
Returns | |
---|---|
boolean |
true to indicate adapter startup has begun, or false on immediate error |
String getAddress ()
返回本地蓝牙适配器的硬件地址。
例如,“00:11:22:AA:BB:CC”。
需要 BLUETOOTH
Returns | |
---|---|
String |
Bluetooth hardware address as string |
BluetoothLeAdvertiser getBluetoothLeAdvertiser ()
返回Bluetooth LE广告操作的BluetoothLeAdvertiser
对象。 如果蓝牙关闭或者此设备不支持蓝牙LE广告,则返回null。
在调用此方法之前,请使用 isMultipleAdvertisementSupported()
检查此设备是否支持LE广告。
Returns | |
---|---|
BluetoothLeAdvertiser |
BluetoothLeScanner getBluetoothLeScanner ()
返回蓝牙LE扫描操作的 BluetoothLeScanner
对象。
Returns | |
---|---|
BluetoothLeScanner |
Set<BluetoothDevice> getBondedDevices ()
将绑定(配对)的一组 BluetoothDevice
对象返回到本地适配器。
如果蓝牙状态不是STATE_ON
,则此API将返回一个空集。 打开蓝牙后,等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
需要 BLUETOOTH
。
Returns | |
---|---|
Set<BluetoothDevice> |
unmodifiable set of BluetoothDevice , or null on error |
BluetoothAdapter getDefaultAdapter ()
获取默认本地蓝牙适配器的句柄。
目前Android仅支持一个蓝牙适配器,但该API可以扩展为支持更多。 这将始终返回默认的适配器。
Returns | |
---|---|
BluetoothAdapter |
the default local adapter, or null if Bluetooth is not supported on this hardware platform |
String getName ()
获取本地蓝牙适配器的友好蓝牙名称。
该名称对远程蓝牙设备可见。
需要 BLUETOOTH
Returns | |
---|---|
String |
the Bluetooth name, or null on error |
int getProfileConnectionState (int profile)
获取配置文件的当前连接状态。 该功能可用于检查本地蓝牙适配器是否连接到任何远程设备以获取特定配置文件。 简介可以是一个HEALTH
, HEADSET
, A2DP
。
需要 BLUETOOTH
。
返回值可以是一个 STATE_DISCONNECTED
, STATE_CONNECTING
, STATE_CONNECTED
, STATE_DISCONNECTING
Parameters | |
---|---|
profile |
int
|
Returns | |
---|---|
int |
boolean getProfileProxy (Context context, BluetoothProfile.ServiceListener listener, int profile)
获取与配置文件关联的配置文件代理对象。
简介可以是一个HEALTH
, HEADSET
, A2DP
, GATT
,或GATT_SERVER
。 客户端必须实现BluetoothProfile.ServiceListener
以获得连接状态的通知并获取代理对象。
Parameters | |
---|---|
context |
Context : Context of the application |
listener |
BluetoothProfile.ServiceListener : The service Listener for connection callbacks. |
profile |
int : The Bluetooth profile; either HEALTH , HEADSET , A2DP . GATT or GATT_SERVER . |
Returns | |
---|---|
boolean |
true on success, false on error |
BluetoothDevice getRemoteDevice (byte[] address)
获取给定蓝牙硬件地址的 BluetoothDevice
对象。
有效的蓝牙硬件地址必须是6个字节。 此方法预计网络字节顺序中的地址(MSB在前)。
一个 BluetoothDevice
将始终返回有效的硬件地址,即使此适配器从未见过该设备。
Parameters | |
---|---|
address |
byte : Bluetooth MAC address (6 bytes) |
Returns | |
---|---|
BluetoothDevice |
Throws | |
---|---|
IllegalArgumentException |
if address is invalid |
BluetoothDevice getRemoteDevice (String address)
获取给定蓝牙硬件地址的 BluetoothDevice
对象。
有效的蓝牙硬件地址必须是大写,格式为“00:11:22:33:AA:BB”。 助手checkBluetoothAddress(String)
可用于验证蓝牙地址。
一个 BluetoothDevice
将始终返回有效的硬件地址,即使此适配器从未看过该设备。
Parameters | |
---|---|
address |
String : valid Bluetooth MAC address |
Returns | |
---|---|
BluetoothDevice |
Throws | |
---|---|
IllegalArgumentException |
if address is invalid |
int getScanMode ()
获取本地蓝牙适配器的当前蓝牙扫描模式。
蓝牙扫描模式确定本地适配器是否可从远程蓝牙设备连接和/或发现。
可能的值有: SCAN_MODE_NONE
, SCAN_MODE_CONNECTABLE
, SCAN_MODE_CONNECTABLE_DISCOVERABLE
。
如果蓝牙状态不是STATE_ON
,则此API将返回SCAN_MODE_NONE
。 打开蓝牙后,等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
需要 BLUETOOTH
Returns | |
---|---|
int |
scan mode |
int getState ()
获取本地蓝牙适配器的当前状态。
可能的返回值是 STATE_OFF
, STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
。
需要 BLUETOOTH
Returns | |
---|---|
int |
current state of Bluetooth adapter |
boolean isDiscovering ()
如果本地蓝牙适配器当前处于设备发现过程中,则返回true。
设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()
取消正在进行的发现。
应用程序还可以注册 ACTION_DISCOVERY_STARTED
或 ACTION_DISCOVERY_FINISHED
,以便在发现开始或完成时收到通知。
如果蓝牙状态不是STATE_ON
,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
需要 BLUETOOTH
。
Returns | |
---|---|
boolean |
true if discovering |
boolean isEnabled ()
如果蓝牙当前已启用且可以使用,则返回true。
相当于: getBluetoothState() == STATE_ON
需要 BLUETOOTH
Returns | |
---|---|
boolean |
true if the local adapter is turned on |
boolean isMultipleAdvertisementSupported ()
如果芯片组支持多广告,则返回true
Returns | |
---|---|
boolean |
true if Multiple Advertisement feature is supported |
boolean isOffloadedFilteringSupported ()
如果支持卸载过滤器,则返回true
Returns | |
---|---|
boolean |
true if chipset supports on-chip filtering |
boolean isOffloadedScanBatchingSupported ()
如果支持卸载扫描批处理,则返回true
Returns | |
---|---|
boolean |
true if chipset supports on-chip scan batching |
BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord (String name, UUID uuid)
创建一个监听,不安全的带有服务记录的RFCOMM蓝牙套接字。
链接密钥不需要被认证,即通信可能容易受到中间人攻击。 对于蓝牙2.1设备,链路将被加密,因为加密是强制性的。 对于传统设备(预蓝牙2.1设备),链路不会被加密。 如果需要加密和认证通信通道,请使用listenUsingRfcommWithServiceRecord(String, UUID)
。
使用 accept()
从侦听 BluetoothServerSocket
检索传入连接。
系统将分配一个未使用的RFCOMM通道进行侦听。
系统还将在本地SDP服务器上注册服务发现协议(SDP)记录,其中包含指定的UUID,服务名称和自动分配的信道。 远程蓝牙设备可以使用相同的UUID来查询我们的SDP服务器并发现要连接的通道。 此套接字关闭时,此SDP记录将被删除,或者此应用程序意外关闭。
使用 createRfcommSocketToServiceRecord(UUID)
使用同一个 UUID
从另一个设备连接到此插座。
需要 BLUETOOTH
Parameters | |
---|---|
name |
String : service name for SDP record |
uuid |
UUID : uuid for SDP record |
Returns | |
---|---|
BluetoothServerSocket |
a listening RFCOMM BluetoothServerSocket |
Throws | |
---|---|
IOException |
on error, for example Bluetooth not available, or insufficient permissions, or channel in use. |
BluetoothServerSocket listenUsingRfcommWithServiceRecord (String name, UUID uuid)
创建一个带有服务记录的监听,安全的RFCOMM蓝牙套接字。
连接到此套接字的远程设备将被验证,并且此套接字上的通信将被加密。
使用 accept()
从聆听 BluetoothServerSocket
检索传入连接。
系统将分配一个未使用的RFCOMM通道进行侦听。
系统还将在本地SDP服务器上注册服务发现协议(SDP)记录,其中包含指定的UUID,服务名称和自动分配的信道。 远程蓝牙设备可以使用相同的UUID来查询我们的SDP服务器并发现要连接的通道。 此套接字关闭时,此SDP记录将被删除,或者此应用程序意外关闭。
使用 createRfcommSocketToServiceRecord(UUID)
使用同一个 UUID
从另一个设备连接到此插座。
需要 BLUETOOTH
Parameters | |
---|---|
name |
String : service name for SDP record |
uuid |
UUID : uuid for SDP record |
Returns | |
---|---|
BluetoothServerSocket |
a listening RFCOMM BluetoothServerSocket |
Throws | |
---|---|
IOException |
on error, for example Bluetooth not available, or insufficient permissions, or channel in use. |
boolean setName (String name)
设置本地蓝牙适配器的友好蓝牙名称。
该名称对远程蓝牙设备可见。
尽管许多远程设备只能显示前40个字符,而有些可能仅限于20个,但有效的蓝牙名称最多使用UTF-8编码为248个字节。
如果蓝牙状态不是STATE_ON
,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
Parameters | |
---|---|
name |
String : a valid Bluetooth name |
Returns | |
---|---|
boolean |
true if the name was set, false otherwise |
boolean startDiscovery ()
启动远程设备发现过程。
发现过程通常涉及大约12秒的查询扫描,然后是每个新设备的页面扫描以检索其蓝牙名称。
这是一个异步调用,它会立即返回。 注册ACTION_DISCOVERY_STARTED
和ACTION_DISCOVERY_FINISHED
意图以确定发现何时开始和完成的确切时间。 注册ACTION_FOUND
以便在发现远程蓝牙设备时收到通知。
设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()
取消正在进行的发现。 发现不是由Activity管理的,而是作为系统服务运行的,因此即使应用程序没有直接请求发现,也应该始终调用cancelDiscovery()
,只是为了确保。
设备发现只能找到当前可发现的远程设备(启用查询扫描)。 许多蓝牙设备默认情况下都不可发现,需要进入特殊模式。
如果蓝牙状态不是STATE_ON
,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGED
与STATE_ON
以获取更新的值。
需要 BLUETOOTH_ADMIN
。
Returns | |
---|---|
boolean |
true on success, false on error |
boolean startLeScan (UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)
此方法在API级别21中已弃用。
改为使用startScan(List, ScanSettings, ScanCallback)
。
开始扫描蓝牙LE设备,寻找广告给定服务的设备。
使用 onLeScan(BluetoothDevice, int, byte[])
回 onLeScan(BluetoothDevice, int, byte[])
报告广告所有指定服务的设备。
需要 BLUETOOTH_ADMIN
权限。
Parameters | |
---|---|
serviceUuids |
UUID : Array of services to look for |
callback |
BluetoothAdapter.LeScanCallback : the callback LE scan results are delivered |
Returns | |
---|---|
boolean |
true, if the scan was started successfully |
boolean startLeScan (BluetoothAdapter.LeScanCallback callback)
此方法在API级别21中已弃用。
改为使用startScan(List, ScanSettings, ScanCallback)
。
开始扫描蓝牙LE设备。
使用 onLeScan(BluetoothDevice, int, byte[])
回调报告扫描结果。
需要 BLUETOOTH_ADMIN
权限。
Parameters | |
---|---|
callback |
BluetoothAdapter.LeScanCallback : the callback LE scan results are delivered |
Returns | |
---|---|
boolean |
true, if the scan was started successfully |
void stopLeScan (BluetoothAdapter.LeScanCallback callback)
此方法在API级别21中已弃用。
改为使用stopScan(ScanCallback)
。
停止正在进行的蓝牙LE设备扫描。
需要 BLUETOOTH_ADMIN
权限。
Parameters | |
---|---|
callback |
BluetoothAdapter.LeScanCallback : used to identify which scan to stop must be the same handle used to start the scan |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类重写finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 方法finalize
可以采取任何行动,包括使这个对象再次可用于其他线程; 但是, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类finalize
方法Object
执行特殊的操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定的对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法引发的任何异常 finalize
导致此对象的终止被暂停,但会被忽略。
Throws | |
---|---|
Throwable |