android 蓝牙功能,Android.bluetooth 功能解析【转自CSDN】

本文介绍了Android.bluetooth包,提供用于扫描、连接及管理蓝牙设备的类。内容包括:设备搜索、建立RFCOMM通道、数据传输,以及所需权限。重点讨论了BluetoothAdapter类,包括其方法、扫描模式和状态管理,以及如何监听和创建蓝牙服务。
摘要由CSDN通过智能技术生成

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 指明本地蓝牙适配器模块已经打开,并且准备被使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值