Most visited

Recently visited

Added in API level 5

BluetoothAdapter

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权限。

Developer Guides

有关使用蓝牙的更多信息,请阅读 Bluetooth开发人员指南。

也可以看看:

Summary

Nested classes

interface BluetoothAdapter.LeScanCallback

用于提供LE扫描结果的回调界面。

Constants

String ACTION_CONNECTION_STATE_CHANGED

意图用于将本地蓝牙适配器连接状态的变化广播到远程设备的配置文件。

String ACTION_DISCOVERY_FINISHED

广播动作:本地蓝牙适配器已完成设备发现过程。

String ACTION_DISCOVERY_STARTED

广播动作:本地蓝牙适配器已启动远程设备发现过程。

String ACTION_LOCAL_NAME_CHANGED

广播动作:本地蓝牙适配器已更改其友好蓝牙名称。

String ACTION_REQUEST_DISCOVERABLE

活动操作:显示请求可发现模式的系统活动。

String ACTION_REQUEST_ENABLE

活动操作:显示允许用户打开蓝牙的系统活动。

String ACTION_SCAN_MODE_CHANGED

广播动作:表示本地适配器的蓝牙扫描模式已更改。

String ACTION_STATE_CHANGED

广播动作:本地蓝牙适配器的状态已更改。

int ERROR

这个类的Sentinel错误值。

String EXTRA_CONNECTION_STATE

额外使用 ACTION_CONNECTION_STATE_CHANGED这额外代表当前的连接状态。

String EXTRA_DISCOVERABLE_DURATION

ACTION_REQUEST_DISCOVERABLE意图中作为可选的int额外字段用于在几秒钟内请求特定的发现持续时间。

String EXTRA_LOCAL_NAME

ACTION_LOCAL_NAME_CHANGED意图中用作字符串额外字段以请求本地蓝牙名称。

String EXTRA_PREVIOUS_CONNECTION_STATE

额外使用 ACTION_CONNECTION_STATE_CHANGED这额外代表了以前的连接状态。

String EXTRA_PREVIOUS_SCAN_MODE

ACTION_SCAN_MODE_CHANGED意图中作为int外部字段使用,以请求先前的扫描模式。

String EXTRA_PREVIOUS_STATE

ACTION_STATE_CHANGED意图中作为int外部字段使用,以请求先前的电源状态。

String EXTRA_SCAN_MODE

用作 ACTION_SCAN_MODE_CHANGED意图中的int外部字段以请求当前的扫描模式。

String EXTRA_STATE

ACTION_STATE_CHANGED意图中 ACTION_STATE_CHANGED请求当前电源状态的int额外字段。

int SCAN_MODE_CONNECTABLE

表示查询扫描已禁用,但本地蓝牙适配器上已启用页面扫描。

int SCAN_MODE_CONNECTABLE_DISCOVERABLE

表示在本地蓝牙适配器上启用了查询扫描和页面扫描。

int SCAN_MODE_NONE

表示在本地蓝牙适配器上禁用查询扫描和页面扫描。

int STATE_CONNECTED

该配置文件处于连接状态

int STATE_CONNECTING

该配置文件处于连接状态

int STATE_DISCONNECTED

配置文件处于断开状态

int STATE_DISCONNECTING

配置文件处于断开状态

int STATE_OFF

表示本地蓝牙适配器已关闭。

int STATE_ON

表示本地蓝牙适配器已开启,并可供使用。

int STATE_TURNING_OFF

表示本地蓝牙适配器已关闭。

int STATE_TURNING_ON

表示本地蓝牙适配器正在打开。

Public methods

boolean cancelDiscovery()

取消当前的设备发现过程。

static boolean checkBluetoothAddress(String address)

验证字符串蓝牙地址,例如“00:43:A8:23:10:F0”

字母字符必须大写才能有效。

void closeProfileProxy(int profile, BluetoothProfile proxy)

关闭配置文件代理连接到服务。

boolean disable()

关闭本地蓝牙适配器 - 不要使用没有明确的用户操作来关闭蓝牙。

boolean enable()

打开本地蓝牙适配器 - 不要使用没有明确的用户操作来打开蓝牙。

String getAddress()

返回本地蓝牙适配器的硬件地址。

BluetoothLeAdvertiser getBluetoothLeAdvertiser()

返回Bluetooth LE广告操作的 BluetoothLeAdvertiser对象。

BluetoothLeScanner getBluetoothLeScanner()

返回蓝牙LE扫描操作的 BluetoothLeScanner对象。

Set<BluetoothDevice> getBondedDevices()

将绑定(配对)的 BluetoothDevice对象返回到本地适配器。

static BluetoothAdapter getDefaultAdapter()

获取默认本地蓝牙适配器的句柄。

String getName()

获取本地蓝牙适配器的友好蓝牙名称。

int getProfileConnectionState(int profile)

获取配置文件的当前连接状态。

boolean getProfileProxy(Context context, BluetoothProfile.ServiceListener listener, int profile)

获取与配置文件关联的配置文件代理对象。

BluetoothDevice getRemoteDevice(byte[] address)

获取给定蓝牙硬件地址的 BluetoothDevice对象。

BluetoothDevice getRemoteDevice(String address)

获取给定蓝牙硬件地址的 BluetoothDevice对象。

int getScanMode()

获取本地蓝牙适配器的当前蓝牙扫描模式。

int getState()

获取本地蓝牙适配器的当前状态。

boolean isDiscovering()

如果本地蓝牙适配器当前处于设备发现过程中,则返回true。

boolean isEnabled()

如果蓝牙当前已启用且可以使用,则返回true。

boolean isMultipleAdvertisementSupported()

如果芯片组支持多广告,则返回true

boolean isOffloadedFilteringSupported()

如果支持卸载过滤器,则返回true

boolean isOffloadedScanBatchingSupported()

如果支持卸载扫描批处理,则返回true

BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String name, UUID uuid)

创建一个监听,不安全的带有服务记录的RFCOMM蓝牙套接字。

BluetoothServerSocket listenUsingRfcommWithServiceRecord(String name, UUID uuid)

创建一个带有服务记录的监听,安全的RFCOMM蓝牙套接字。

boolean setName(String name)

设置本地蓝牙适配器的友好蓝牙名称。

boolean startDiscovery()

启动远程设备发现过程。

boolean startLeScan(UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)

此方法在API级别21中已弃用。 startScan(List, ScanSettings, ScanCallback)改为使用startScan(List, ScanSettings, ScanCallback)

boolean startLeScan(BluetoothAdapter.LeScanCallback callback)

此方法在API级别21中已弃用。 startScan(List, ScanSettings, ScanCallback)改为使用startScan(List, ScanSettings, ScanCallback)

void stopLeScan(BluetoothAdapter.LeScanCallback callback)

此方法在API级别21中已弃用。请改为使用stopScan(ScanCallback)

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Constants

ACTION_CONNECTION_STATE_CHANGED

Added in API level 11
String ACTION_CONNECTION_STATE_CHANGED

意图用于将本地蓝牙适配器连接状态的变化广播到远程设备的配置文件。 当适配器未连接到任何远程设备的任何配置文件并尝试连接到配置文件时,此意图将被发送。 一旦连接,此意图将不会被发送到任何远程设备的任何配置文件的任何更多连接尝试。 当适配器从最后一个配置文件断开连接到任何远程设备时,这个意图将被发送。

这个意图对于只关心本地适配器是否连接到任何设备的任何配置文件并且不关心哪个配置文件的应用程序很有用。 例如,显示图标以显示是否连接蓝牙的应用程序可以使用此意图。

这个意图将有3个额外的: EXTRA_CONNECTION_STATE - 当前的连接状态。 EXTRA_PREVIOUS_CONNECTION_STATE - 上一个连接状态。 EXTRA_DEVICE - 远程设备。 EXTRA_CONNECTION_STATEEXTRA_PREVIOUS_CONNECTION_STATE可以是任何的STATE_DISCONNECTEDSTATE_CONNECTINGSTATE_CONNECTEDSTATE_DISCONNECTING

需要 BLUETOOTH才能收到。

常量值:“android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED”

ACTION_DISCOVERY_FINISHED

Added in API level 5
String ACTION_DISCOVERY_FINISHED

广播动作:本地蓝牙适配器已完成设备发现过程。

需要 BLUETOOTH才能收到。

常量值:“android.bluetooth.adapter.action.DISCOVERY_FINISHED”

ACTION_DISCOVERY_STARTED

Added in API level 5
String ACTION_DISCOVERY_STARTED

广播动作:本地蓝牙适配器已启动远程设备发现过程。

这通常涉及约12秒的查询扫描,然后是每个新设备的页面扫描以检索其蓝牙名称。

注册 ACTION_FOUND以在发现远程蓝牙设备时收到通知。

设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()取消正在进行的发现。

需要 BLUETOOTH才能收到。

常量值:“android.bluetooth.adapter.action.DISCOVERY_STARTED”

ACTION_LOCAL_NAME_CHANGED

Added in API level 5
String ACTION_LOCAL_NAME_CHANGED

广播动作:本地蓝牙适配器已更改其友好蓝牙名称。

该名称对远程蓝牙设备可见。

始终包含包含名称的额外字段 EXTRA_LOCAL_NAME

需要 BLUETOOTH才能收到。

常量值:“android.bluetooth.adapter.action.LOCAL_NAME_CHANGED”

ACTION_REQUEST_DISCOVERABLE

Added in API level 5
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”

ACTION_REQUEST_ENABLE

Added in API level 5
String ACTION_REQUEST_ENABLE

活动操作:显示允许用户打开蓝牙的系统活动。

一旦蓝牙完成打开,或者用户决定不打开蓝牙,该系统活动将返回。

使用onActivityResult(int, int, Intent)回调通知此活动结果的通知。 如果蓝牙已打开,则RESULT_CANCELED如果用户拒绝了请求或发生了错误,则resultCode将为RESULT_OK

无论蓝牙开启还是关闭,应用程序还可以监听 ACTION_STATE_CHANGED的全局通知。

需要 BLUETOOTH

常量值:“android.bluetooth.adapter.action.REQUEST_ENABLE”

ACTION_SCAN_MODE_CHANGED

Added in API level 5
String ACTION_SCAN_MODE_CHANGED

广播动作:表示本地适配器的蓝牙扫描模式已更改。

始终包含 EXTRA_PREVIOUS_SCAN_MODE包含新旧扫描模式的额外字段 EXTRA_SCAN_MODEEXTRA_PREVIOUS_SCAN_MODE

需要 BLUETOOTH

常量值:“android.bluetooth.adapter.action.SCAN_MODE_CHANGED”

ACTION_STATE_CHANGED

Added in API level 5
String ACTION_STATE_CHANGED

广播动作:本地蓝牙适配器的状态已更改。

例如,蓝牙已被打开或关闭。

始终包含分别包含新状态和旧状态的额外字段 EXTRA_STATEEXTRA_PREVIOUS_STATE

需要 BLUETOOTH才能收到。

常量值:“android.bluetooth.adapter.action.STATE_CHANGED”

ERROR

Added in API level 5
int ERROR

这个类的Sentinel错误值。 保证在这个类中不等于任何其他整数常量。 为便于需要标记错误值的函数提供,例如:

Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)

常量值:-2147483648(0x80000000)

EXTRA_CONNECTION_STATE

Added in API level 11
String EXTRA_CONNECTION_STATE

额外使用 ACTION_CONNECTION_STATE_CHANGED这额外代表当前的连接状态。

常量值:“android.bluetooth.adapter.extra.CONNECTION_STATE”

EXTRA_DISCOVERABLE_DURATION

Added in API level 5
String EXTRA_DISCOVERABLE_DURATION

ACTION_REQUEST_DISCOVERABLE意图中作为可选的int额外字段用于在几秒钟内请求特定的发现持续时间。 当前的默认值是120秒,超过300秒的请求将被限制。 这些值可能会改变。

常量值:“android.bluetooth.adapter.extra.DISCOVERABLE_DURATION”

EXTRA_LOCAL_NAME

Added in API level 5
String EXTRA_LOCAL_NAME

用作请求本地蓝牙名称的 ACTION_LOCAL_NAME_CHANGED意图中的字符串额外字段。

常量值:“android.bluetooth.adapter.extra.LOCAL_NAME”

EXTRA_PREVIOUS_CONNECTION_STATE

Added in API level 11
String EXTRA_PREVIOUS_CONNECTION_STATE

额外使用 ACTION_CONNECTION_STATE_CHANGED这额外代表了以前的连接状态。

常量值:“android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE”

EXTRA_PREVIOUS_SCAN_MODE

Added in API level 5
String EXTRA_PREVIOUS_SCAN_MODE

ACTION_SCAN_MODE_CHANGED意图中作为int外部字段使用,以请求先前的扫描模式。 可能的值有: SCAN_MODE_NONESCAN_MODE_CONNECTABLESCAN_MODE_CONNECTABLE_DISCOVERABLE

常量值:“android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE”

EXTRA_PREVIOUS_STATE

Added in API level 5
String EXTRA_PREVIOUS_STATE

ACTION_STATE_CHANGED意图中ACTION_STATE_CHANGED请求之前电源状态的int外部字段。 可能的值有: STATE_OFFSTATE_TURNING_ONSTATE_ONSTATE_TURNING_OFF

常量值:“android.bluetooth.adapter.extra.PREVIOUS_STATE”

EXTRA_SCAN_MODE

Added in API level 5
String EXTRA_SCAN_MODE

ACTION_SCAN_MODE_CHANGED意图中ACTION_SCAN_MODE_CHANGED请求当前扫描模式的int extra字段。 可能的值有: SCAN_MODE_NONESCAN_MODE_CONNECTABLESCAN_MODE_CONNECTABLE_DISCOVERABLE

常量值:“android.bluetooth.adapter.extra.SCAN_MODE”

EXTRA_STATE

Added in API level 5
String EXTRA_STATE

ACTION_STATE_CHANGED意图中用作int extra字段以请求当前的电源状态。 可能的值有: STATE_OFFSTATE_TURNING_ONSTATE_ONSTATE_TURNING_OFF

常量值:“android.bluetooth.adapter.extra.STATE”

SCAN_MODE_CONNECTABLE

Added in API level 5
int SCAN_MODE_CONNECTABLE

表示查询扫描已禁用,但本地蓝牙适配器上已启用页面扫描。 因此,此设备无法从远程蓝牙设备中发现,但可以从先前发现此设备的远程设备连接。

常量值:21(0x00000015)

SCAN_MODE_CONNECTABLE_DISCOVERABLE

Added in API level 5
int SCAN_MODE_CONNECTABLE_DISCOVERABLE

表示在本地蓝牙适配器上启用了查询扫描和页面扫描。 因此,该设备既可被发现,也可从远程蓝牙设备连接。

常量值:23(0x00000017)

SCAN_MODE_NONE

Added in API level 5
int SCAN_MODE_NONE

表示在本地蓝牙适配器上禁用查询扫描和页面扫描。 因此,该设备既不可发现也不能从远程蓝牙设备连接。

常量值:20(0x00000014)

STATE_CONNECTED

Added in API level 11
int STATE_CONNECTED

该配置文件处于连接状态

常量值:2(0x00000002)

STATE_CONNECTING

Added in API level 11
int STATE_CONNECTING

该配置文件处于连接状态

常数值:1(0x00000001)

STATE_DISCONNECTED

Added in API level 11
int STATE_DISCONNECTED

配置文件处于断开状态

常量值:0(0x00000000)

STATE_DISCONNECTING

Added in API level 11
int STATE_DISCONNECTING

配置文件处于断开状态

常量值:3(0x00000003)

STATE_OFF

Added in API level 5
int STATE_OFF

表示本地蓝牙适配器已关闭。

常量值:10(0x0000000a)

STATE_ON

Added in API level 5
int STATE_ON

表示本地蓝牙适配器已开启,并可供使用。

常量值:12(0x0000000c)

STATE_TURNING_OFF

Added in API level 5
int STATE_TURNING_OFF

表示本地蓝牙适配器已关闭。 本地客户端应立即尝试正常断开任何远程链接。

常量值:13(0x0000000d)

STATE_TURNING_ON

Added in API level 5
int STATE_TURNING_ON

表示本地蓝牙适配器正在打开。 但是,在尝试使用适配器之前,本地客户端应等待STATE_ON

常量值:11(0x0000000b)

Public methods

cancelDiscovery

Added in API level 5
boolean cancelDiscovery ()

取消当前的设备发现过程。

需要 BLUETOOTH_ADMIN

由于发现是蓝牙适配器的重量级过程,因此应在尝试连接到具有connect()的远程设备之前始终调用此方法。 发现不是由Activity管理的,而是作为系统服务运行的,所以即使应用程序没有直接请求发现,也应该始终调用取消发现。

如果蓝牙状态不是STATE_ON ,则此API将返回false。 打开蓝牙后,请等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

Returns
boolean true on success, false on error

checkBluetoothAddress

Added in API level 5
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

closeProfileProxy

Added in API level 11
void closeProfileProxy (int profile, 
                BluetoothProfile proxy)

关闭配置文件代理连接到服务。

当客户不再使用从getProfileProxy(Context, BluetoothProfile.ServiceListener, int)获得的代理时,客户应该调用它。 简介可以是一个HEALTHHEADSET或者A2DP

Parameters
proxy BluetoothProfile: Profile proxy object

disable

Added in API level 5
boolean disable ()

关闭本地蓝牙适配器 - 不要使用没有明确的用户操作来关闭蓝牙。

这会优雅地关闭所有蓝牙连接,停止蓝牙系统服务并关闭底层蓝牙硬件。

未经用户直接同意,不应禁用蓝牙 disable()方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如“电源管理器”应用程序。

这是一个异步调用:它将立即返回,并且客户端应该监听ACTION_STATE_CHANGED以通知后续适配器状态更改。 如果此调用返回true,则适配器状态将立即从STATE_ON过渡到STATE_TURNING_OFF ,并且稍后过渡到STATE_OFFSTATE_ON 如果这个调用返回false,那么有一个直接的问题会阻止适配器被关闭 - 比如适配器已经被关闭。

需要 BLUETOOTH_ADMIN权限

Returns
boolean true to indicate adapter shutdown has begun, or false on immediate error

enable

Added in API level 5
boolean enable ()

打开本地蓝牙适配器 - 不要使用没有明确的用户操作来打开蓝牙。

这会启用底层蓝牙硬件,并启动所有蓝牙系统服务。

未经用户直接同意,不应启用蓝牙 如果要打开蓝牙以创建无线连接,则应使用ACTION_REQUEST_ENABLE意图,这会引发一个请求用户许可以打开蓝牙的对话框。 enable()方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如“电源管理器”应用程序。

这是一个异步调用:它将立即返回,并且客户端应该监听ACTION_STATE_CHANGED以通知后续适配器状态更改。 如果此调用返回true,则适配器状态将立即从STATE_OFF转换为STATE_TURNING_ON ,并且稍后过渡到STATE_OFFSTATE_ON 如果此调用返回false,则会有一个直接问题阻止适配器开启 - 例如飞行模式,或者适配器已打开。

需要 BLUETOOTH_ADMIN权限

Returns
boolean true to indicate adapter startup has begun, or false on immediate error

getAddress

Added in API level 5
String getAddress ()

返回本地蓝牙适配器的硬件地址。

例如,“00:11:22:AA:BB:CC”。

需要 BLUETOOTH

Returns
String Bluetooth hardware address as string

getBluetoothLeAdvertiser

Added in API level 21
BluetoothLeAdvertiser getBluetoothLeAdvertiser ()

返回Bluetooth LE广告操作的BluetoothLeAdvertiser对象。 如果蓝牙关闭或者此设备不支持蓝牙LE广告,则返回null。

在调用此方法之前,请使用 isMultipleAdvertisementSupported()检查此设备是否支持LE广告。

Returns
BluetoothLeAdvertiser

getBluetoothLeScanner

Added in API level 21
BluetoothLeScanner getBluetoothLeScanner ()

返回蓝牙LE扫描操作的 BluetoothLeScanner对象。

Returns
BluetoothLeScanner

getBondedDevices

Added in API level 5
Set<BluetoothDevice> getBondedDevices ()

将绑定(配对)的一组 BluetoothDevice对象返回到本地适配器。

如果蓝牙状态不是STATE_ON ,则此API将返回一个空集。 打开蓝牙后,等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

需要 BLUETOOTH

Returns
Set<BluetoothDevice> unmodifiable set of BluetoothDevice, or null on error

getDefaultAdapter

Added in API level 5
BluetoothAdapter getDefaultAdapter ()

获取默认本地蓝牙适配器的句柄。

目前Android仅支持一个蓝牙适配器,但该API可以扩展为支持更多。 这将始终返回默认的适配器。

Returns
BluetoothAdapter the default local adapter, or null if Bluetooth is not supported on this hardware platform

getName

Added in API level 5
String getName ()

获取本地蓝牙适配器的友好蓝牙名称。

该名称对远程蓝牙设备可见。

需要 BLUETOOTH

Returns
String the Bluetooth name, or null on error

getProfileConnectionState

Added in API level 14
int getProfileConnectionState (int profile)

获取配置文件的当前连接状态。 该功能可用于检查本地蓝牙适配器是否连接到任何远程设备以获取特定配置文件。 简介可以是一个HEALTHHEADSETA2DP

需要 BLUETOOTH

返回值可以是一个 STATE_DISCONNECTEDSTATE_CONNECTINGSTATE_CONNECTEDSTATE_DISCONNECTING

Parameters
profile int
Returns
int

getProfileProxy

Added in API level 11
boolean getProfileProxy (Context context, 
                BluetoothProfile.ServiceListener listener, 
                int profile)

获取与配置文件关联的配置文件代理对象。

简介可以是一个HEALTHHEADSETA2DPGATT ,或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

getRemoteDevice

Added in API level 16
BluetoothDevice getRemoteDevice (byte[] address)

获取给定蓝牙硬件地址的 BluetoothDevice对象。

有效的蓝牙硬件地址必须是6个字节。 此方法预计网络字节顺序中的地址(MSB在前)。

一个 BluetoothDevice将始终返回有效的硬件地址,即使此适配器从未见过该设备。

Parameters
address byte: Bluetooth MAC address (6 bytes)
Returns
BluetoothDevice
Throws
IllegalArgumentException if address is invalid

getRemoteDevice

Added in API level 5
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

getScanMode

Added in API level 5
int getScanMode ()

获取本地蓝牙适配器的当前蓝牙扫描模式。

蓝牙扫描模式确定本地适配器是否可从远程蓝牙设备连接和/或发现。

可能的值有: SCAN_MODE_NONESCAN_MODE_CONNECTABLESCAN_MODE_CONNECTABLE_DISCOVERABLE

如果蓝牙状态不是STATE_ON ,则此API将返回SCAN_MODE_NONE 打开蓝牙后,等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

需要 BLUETOOTH

Returns
int scan mode

getState

Added in API level 5
int getState ()

获取本地蓝牙适配器的当前状态。

可能的返回值是 STATE_OFFSTATE_TURNING_ONSTATE_ONSTATE_TURNING_OFF

需要 BLUETOOTH

Returns
int current state of Bluetooth adapter

isDiscovering

Added in API level 5
boolean isDiscovering ()

如果本地蓝牙适配器当前处于设备发现过程中,则返回true。

设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()取消正在进行的发现。

应用程序还可以注册 ACTION_DISCOVERY_STARTEDACTION_DISCOVERY_FINISHED ,以便在发现开始或完成时收到通知。

如果蓝牙状态不是STATE_ON ,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

需要 BLUETOOTH

Returns
boolean true if discovering

isEnabled

Added in API level 5
boolean isEnabled ()

如果蓝牙当前已启用且可以使用,则返回true。

相当于: getBluetoothState() == STATE_ON

需要 BLUETOOTH

Returns
boolean true if the local adapter is turned on

isMultipleAdvertisementSupported

Added in API level 21
boolean isMultipleAdvertisementSupported ()

如果芯片组支持多广告,则返回true

Returns
boolean true if Multiple Advertisement feature is supported

isOffloadedFilteringSupported

Added in API level 21
boolean isOffloadedFilteringSupported ()

如果支持卸载过滤器,则返回true

Returns
boolean true if chipset supports on-chip filtering

isOffloadedScanBatchingSupported

Added in API level 21
boolean isOffloadedScanBatchingSupported ()

如果支持卸载扫描批处理,则返回true

Returns
boolean true if chipset supports on-chip scan batching

listenUsingInsecureRfcommWithServiceRecord

Added in API level 10
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.

listenUsingRfcommWithServiceRecord

Added in API level 5
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.

setName

Added in API level 5
boolean setName (String name)

设置本地蓝牙适配器的友好蓝牙名称。

该名称对远程蓝牙设备可见。

尽管许多远程设备只能显示前40个字符,而有些可能仅限于20个,但有效的蓝牙名称最多使用UTF-8编码为248个字节。

如果蓝牙状态不是STATE_ON ,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

需要 BLUETOOTH_ADMIN

Parameters
name String: a valid Bluetooth name
Returns
boolean true if the name was set, false otherwise

startDiscovery

Added in API level 5
boolean startDiscovery ()

启动远程设备发现过程。

发现过程通常涉及大约12秒的查询扫描,然后是每个新设备的页面扫描以检索其蓝牙名称。

这是一个异步调用,它会立即返回。 注册ACTION_DISCOVERY_STARTEDACTION_DISCOVERY_FINISHED意图以确定发现何时开始和完成的确切时间。 注册ACTION_FOUND以便在发现远程蓝牙设备时收到通知。

设备发现是一个重量级的过程。 在进行发现时,不应尝试新建与远程蓝牙设备的连接,现有连接将经历有限的带宽和高延迟。 使用cancelDiscovery()取消正在进行的发现。 发现不是由Activity管理的,而是作为系统服务运行的,因此即使应用程序没有直接请求发现,也应该始终调用cancelDiscovery() ,只是为了确保。

设备发现只能找到当前可发现的远程设备(启用查询扫描)。 许多蓝牙设备默认情况下都不可发现,需要进入特殊模式。

如果蓝牙状态不是STATE_ON ,则此API将返回false。 打开蓝牙后,等待ACTION_STATE_CHANGEDSTATE_ON以获取更新的值。

需要 BLUETOOTH_ADMIN

Returns
boolean true on success, false on error

startLeScan

Added in API level 18
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

startLeScan

Added in API level 18
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

stopLeScan

Added in API level 18
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

Protected methods

finalize

Added in API level 5
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

Hooray!