android.bluetooth
提供了皆如扫描设备、连接设备以及对设备间的数据传输进行管理的类,这些类对蓝牙设备进行功能性管理。
蓝牙模块API提供的应用包括了:
●扫描其它蓝牙设备
●通过查询本地蓝牙适配器来匹配蓝牙设备
●建立RFCOMM(无线射频通信协议)的通道/端口
●从其他的蓝牙设备中连接到指定的端口
●传输数据到其他设备,或者从其他设备中接收数据
如需运用这些API来执行蓝牙通信,应用程序必须声明BLUETOOTH许可。对于皆如寻找设备请求等的一些附加功能,也同样需要BLUETOOTH_ADMIN许可。
如需要使用蓝牙API的更详细的指引,参看Bluetooth Dev Guide topic.
Classes
BluetoothAdapter代表本地的蓝牙适配器设备
BluetoothClass代表一个描述了设备通用特性和功能的蓝牙类 BluetoothClass.Device定义了所有设备类的常量
BluetoothClass.Device.Major定义了所有主要设备类的常量
BluetoothClass.Service定义了所有服务类的常量
BluetoothDevice
代表一个远程的蓝牙设备
BluetoothServerSocket监听蓝牙服务的端口
BluetoothSocket一个双向连接的蓝牙端口
public final class BluetoothAdapter
extends Object
java.lang.Object
↳ android.bluetooth.BluetoothAdapter
Class Overview
代表本地的蓝牙适配器设备。BluetoothAdapter类让用户能执行基本的蓝牙任务。例如:初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个BluetoothDevice类,创建一个BluetoothServerSocket类以监听其它设备对本机的连接请求等。
为了得到这个代表本地蓝牙适配器的BluetoothAdapter类,调用getDefaultAdapter()这一静态方法。这是所有蓝牙动作使用的第一步。当拥有本地适配器以后,用户可以获得一系列的BluetoothDevice对象,这些对象代表所有拥有getBondedDevice()方法的已经匹配的设备;用startDiscovery()方法来开始设备的搜寻;或者创建一个BluetoothServerSocket类,通过listenUsingRfcommWithServiceRecord(String,
UUID)方法来监听新来的连接请求。
Note:大部分方法需要BLUETOOTH类的许可,一些方法同时需要BLUETOOT_ADMIN类的许可。
Summary
常量:
StringACTION_DISCOVERY_FINISHED
广播事件:本地蓝牙适配器已经完成设备的搜寻过程。
StringACTION_DISCOVERY_STARTED
广播事件:本地蓝牙适配器已经开始对远程设备的搜寻过程。
StringACTION_LOCAL_NAME_CHANGED
广播事件:本地蓝牙适配器已经更改了它的蓝牙名称。
StringACTION_REQUEST_DISCOVERABLE
活动事件:显示一个请求被搜寻模式的系统活动。
StringACTION_REQUEST_ENABLE
活动事件:显示一个允许用户打开蓝牙模块的系统活动。
StringACTION_SCAN_MODE_CHANGED
广播事件:指明蓝牙扫描模块或者本地适配器已经发生变化
StringACTION_STATE_CHANGED
广播事件:本来的蓝牙适配器的状态已经改变。
int ERROR
标记该类的错误值
StringEXTRA_DISCOVERABLE_DURATION
试图在ACTION_REQUEST_DISCOVERABLE常量中作为一个可选的整型附加域,来为短时间内的设备发现请求一个特定的持续时间。
StringEXTRA_LOCAL_NAME
试图在ACTION_LOCAL_NAME_CHANGED常量中作为一个字符串附加域,来请求本地蓝牙的名称。
StringEXTRA_PREVIOUS_SCAN_MODE
试图在ACTION_SCAN_MODE_CHANGED常量中作为一个整型附加域,来请求以前的扫描模式
StringEXTRA_PREVIOUS_STATE
试图在ACTION_STATE_CHANGED常量中作为一个整型附加域,来请求以前的供电状态。
StringEXTRA_SCAN_MODE
试图在ACTION_SCAN_MODE_CHANGED常量中作为一个整型附加域,来请求当前的扫描模式
StringEXTRA_STATE
试图在ACTION_STATE_CHANGED常量中作为一个整型附加域,来请求当前的供电状态。
int
SCAN_MODE_CONNECTABLE
指明在本地蓝牙适配器中,查询扫描功能失效,但页面扫描功能有效
int
SCAN_MODE_CONNECTABLE_DISCOVERABLE
指明在本地蓝牙适配器中,查询扫描功能和页面扫描功能都有效
int SCAN_MODE_NONE
指明在本地蓝牙适配器中,查询扫描功能和页面扫描功能都失效
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"之类的蓝牙地址,字母必须为大写才有效。
boolean disable()
关闭本地蓝牙适配器—不能在没有明确关闭蓝牙的用户动作中使用。
boolean enable()
打开本地蓝牙适配器—不能在没有明确打开蓝牙的用户动作中使用。
StringgetAddress()
返回本地蓝牙适配器的硬件地址
SetgetBondedDevices()
返回已经匹配到本地适配器的BluetoothDevice类的对象集合
synchronized static
BluetoothAdaptergetDefaultAdapter()
获取对默认本地蓝牙适配器的的操作权限。
StringgetName()
获取本地蓝牙适配器的蓝牙呢称
BluetoothDevicegetRemoteDevice(String
address)
为给予的蓝牙硬件地址获取一个BluetoothDevice对象。
int getScanMode()
获取本地蓝牙适配器的当前蓝牙扫描模式
int getState()
获取本地蓝牙适配器的当前状态
boolean isDiscovering()
如果当前蓝牙适配器正处于设备发现查找进程中,则返回真值
boolean isEnabled()
如果蓝牙正处于打开状态并可用,则返回真值
BluetoothServerSocketlistenUsingRfcommWithServiceRecord(String
name, UUID uuid)
创建一个正在监听的安全的带有服务记录的无线射频通信蓝牙端口。
boolean setName(String
name)
设置蓝牙或者本地蓝牙适配器的昵称.
boolean startDiscovery()
开始对远程设备进行查找的进程
Constants:
public static final String
ACTION_DISCOVERY_FINISHED
Since: API Level
5
广播事件:本地蓝牙适配器已经完成设备的搜寻过程。Requires BLUETOOTH to
receive.
常量值:
"android.bluetooth.adapter.action.DISCOVERY_FINISHED"
public static final String
ACTION_DISCOVERY_STARTED
Since: API Level
5
广播事件:本地蓝牙适配器已经开始对远程设备的搜寻过程。
它通常牵涉到一个大概需时12秒的查询扫描过程,紧跟着是一个对每个获取到自身蓝牙名称的新设备的页面扫描。
Register for ACTION_FOUND to be notified as
remote Bluetooth devices are
found.
用户会发现一个把ACTION_FOUND常量通知为远程蓝牙设备的注册。
设备查找是一个重量级过程。当查找正在进行的时候,用户不能尝试对新的远程蓝牙设备进行连接,同时存在的连接将获得有限制的带宽以及高等待时间。用户可用cencelDiscovery()类来取消正在执行的查找进程。
需要BLUETOOTH类来接收。
常量名:"android.bluetooth.adapter.action.DISCOVERY_STARTED"
public static final String
ACTION_LOCAL_NAME_CHANGED
Since: API Level
5
广播事件:本地蓝牙适配器已经更改了它的蓝牙名称。
该名称对远程蓝牙设备是可见的。
它总是包含了一个带有名称的EXTRA_LOCAL_NAME附加域。
它需要请求BLUETOOTH类去获取这个名字。
常量值:
"android.bluetooth.adapter.action.LOCAL_NAME_CHANGED"
public static final String
ACTION_REQUEST_DISCOVERABLE
Since: API Level
5
活动事件:显示一个请求被搜寻模式的系统活动。如果蓝牙模块当前未打开,该活动也将请求用户打开蓝牙模块。
被搜寻模式和SCAN_MODE_CONNECTABLE_DISCOVERABLE等价。当远程设备执行查找进程的时候,它允许其发现该蓝牙适配器。
从隐私安全考虑,Android不会将被搜寻模式设置为默认状态。
该意图的发送者可以选择性地运用EXTRA_DISCOVERABLE_DURATION这个附加域去请求发现设备的持续时间。普遍来说,对于每一请求,默认的持续时间为120秒,最大值则可达到300秒。
Android运用onActivityResult(int, int,
Intent)回收方法来传递该活动结果的通知。被搜寻的时间(以秒为单位)将通过resultCode值来显示,如果用户拒绝被搜寻,或者设备产生了错误,则通过RESULT_CANCELED值来显示。
每当扫描模式变化的时候,应用程序可以为通过ACTION_SCAN_MODE_CHANGED值来监听全局的消息通知。比如,当设备停止被搜寻以后,该消息可以被系统通知給应用程序。
需要BLUETOOTH类
常量值:
"android.bluetooth.adapter.action.REQUEST_DISCOVERABLE"
public static final String
ACTION_REQUEST_ENABLE
Since: API Level
5
活动事件:显示一个允许用户打开蓝牙模块的系统活动。
当蓝牙模块完成打开工作,或者当用户决定不打开蓝牙模块时,系统活动将返回该值。
Android运用onActivityResult(int, int,
Intent)回收方法来传递该活动结果的通知。如果蓝牙模块被打开,将通过resultCode值来显示;如果用户拒绝该请求,或者设备产生了错误,则通过RESULT_CANCELED值来显示。
每当蓝牙模块被打开或者关闭,应用程序可以为通过ACTION_SCAN_MODE_CHANGED值来监听全局的消息通知。
需要BLUETOOTH类
常量值:
"android.bluetooth.adapter.action.REQUEST_ENABLE"
public static final String
ACTION_SCAN_MODE_CHANGED
Since: API Level
5
广播事件:指明蓝牙扫描模块或者本地适配器已经发生变化
它总是包含EXTRA_SCAN_MODE和EXTRA_PREVIOUS_SCAN_MODE。这两个附加域各自包含了新的和旧的扫描模式。
需要BLUETOOTH类
常量值:
"android.bluetooth.adapter.action.SCAN_MODE_CHANGED"
public static final String
ACTION_STATE_CHANGED
Since: API Level
5
广播事件:本来的蓝牙适配器的状态已经改变。
比如:蓝牙模块已经被打开或者关闭。
它总是包含EXTRA_STATE和EXTRA_PREVIOUS_STATE。这两个附加域各自包含了新的和旧的状态。
需要BLUETOOTH类去接收
常量值:
"android.bluetooth.adapter.action.STATE_CHANGED"
public static final int
ERROR
Since: API Level
5
标记该类的错误值。确保和该类中的任意其它整数常量不相等。它为需要一个标记错误值的函数提供了便利。例如:
Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
BluetoothAdapter.ERROR)
常量值: -2147483648
(0x80000000)
public static final String
EXTRA_DISCOVERABLE_DURATION
Since: API Level
5
试图在ACTION_REQUEST_DISCOVERABLE常量中作为一个可选的整型附加域,来为短时间内的设备发现请求一个特定的持续时间。默认值为120秒,超过300秒的请求将被限制。这些值是可以变化的。
常量值:
"android.bluetooth.adapter.extra.DISCOVERABLE_DURATION"
public static final String
EXTRA_LOCAL_NAME Since: API Level 5 试图在ACTION_LOCAL_NAME_CHANGED常量中作为一个字符串附加域,来请求本地蓝牙的名称。
常量值:
"android.bluetooth.adapter.extra.LOCAL_NAME" public static final String
EXTRA_PREVIOUS_SCAN_MODE Since: API Level 5 试图在ACTION_SCAN_MODE_CHANGED常量中作为一个整型附加域,来请求以前的扫描模式。可能值有:
SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE,
SCAN_MODE_CONNECTABLE_DISCOVERABLE, 常量值:
"android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE" public static final String
EXTRA_PREVIOUS_STATE Since: API Level 5 试图在ACTION_STATE_CHANGED常量中作为一个整型附加域,来请求以前的供电状态。 可能值有: STATE_OFF,
STATE_TURNING_ON, STATE_ON,
STATE_TURNING_OFF, 常量值:
"android.bluetooth.adapter.extra.PREVIOUS_STATE" public static final String
EXTRA_SCAN_MODE Since: API Level 5 试图在 ACTION_SCAN_MODE_CHANGED常量中作为一个整型附加域,来请求当前的扫描模式.可能值有:
SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE,
SCAN_MODE_CONNECTABLE_DISCOVERABLE, 常量值:
"android.bluetooth.adapter.extra.SCAN_MODE" public static final String EXTRA_STATE Since: API Level 5 试图在ACTION_STATE_CHANGED常量中作为一个整型附加域,来请求当前的供电状态。 可能值有: STATE_OFF,
STATE_TURNING_ON, STATE_ON,
STATE_TURNING_OFF, 常量值: "android.bluetooth.adapter.extra.STATE"
public static final int
SCAN_MODE_CONNECTABLE Since: API Level 5 指明在本地蓝牙适配器中,查询扫描功能失效,但页面扫描功能有效。因此该设备不能被远程蓝牙设备发现,但如果以前曾经发现过该设备,则远程设备可以对其进行连接。
常量值: 21 (0x00000015) public static final int
SCAN_MODE_CONNECTABLE_DISCOVERABLE Since: API Level 5 指明在本地蓝牙适配器中,查询扫描功能和页面扫描功能都有效。因此该设备既可以被远程蓝牙设备发现,也可以被其连接。
常量值: 23 (0x00000017) public static final int SCAN_MODE_NONE Since: API Level 5 指明在本地蓝牙适配器中,查询扫描功能和页面扫描功能都失效.
因此该设备既不可以被远程蓝牙设备发现,也不可以被其连接。
常量值: 20 (0x00000014) public static final int STATE_OFF Since: API Level 5 指明本地蓝牙适配器模块已经关闭
常量值: 10 (0x0000000a) public static final int STATE_ON Since: API Level 5 指明本地蓝牙适配器模块已经打开,并且准备被使用。