android 蓝牙相关的类,Android中BluetoothAdapter类简介
一、
BluetoothAdapter类介绍
BluetoothAdapter类简单点来说就是代表了本设备(手机、电脑等)的蓝牙适配器对象,通过它我们可以蓝牙设备进行基本
开发了,主要有如下功能:
1、开关蓝牙设备
2、扫描蓝牙设备
3、设置/获取蓝牙状态信息,例如:蓝牙状态值、蓝牙Name、蓝牙Mac地址等;
由于网络上关于BluetoothAdapter的一些常用API函数都有了介绍,因此,我着重介绍一些BluetoothAdapter类疏忽的地方。
1、BluetoothAdapter
STATE 状态值 , 即开关状态
int STATE_OFF蓝牙已经关闭
int STATE_ON蓝牙已经打开
int STATE_TURNING_OFF蓝牙处于关闭过程中
,关闭ing
int STATE_TURNING_ON蓝牙处于打开过程中 ,打开ing
上图中
, 红色线路图表示蓝牙由关闭状态
转向为打开状态的过程 ;
蓝色线路图表示蓝牙由打开状态
转向为关闭状态的过程 ;
2、BluetoothAdapter
SCAN_MOD状态值 ,即扫描状态
首先说明,可以扫描其他设备的,当然它同时能被其他蓝牙设备扫码。
int SCAN_MODE_CONNECTABLE表明该蓝牙可以扫描其他蓝牙设备
int SCAN_MODE_CONNECTABLE_DISCOVERABLE
表
明该蓝牙设备同时可以扫码其他蓝牙设备,并且可以被其他蓝牙设备扫描到。
int SCAN_MODE_NONE:
该蓝牙不能扫描以及被扫描。
3、获得蓝牙适配器实例
public
static
synchronized BluetoothAdaptergetDefaultAdapter ()
功能:获得本设备的蓝牙适配器实例。
返回值:如果设备具备蓝牙功能,返回BluetoothAdapter实例;否则,返回null对象。
4、打开/关闭蓝牙的两种方法:
4.1、打开蓝牙:
①、直接调用函数enable()去打开蓝牙设备
;
②、系统API去打开蓝牙设备,该方式会弹出一个对话框样式的Activity供用户选择是否打开蓝牙设备。
注意:如果蓝牙已经开启,不会弹出该Activity界面。
PS:在目前Android手机中,是不支持在飞行模式下开启蓝牙的。如果蓝牙已经开启,那么蓝牙的开关状态会随着飞行模式
的状态而发生改变。
代码示例分别如下:
//第一种打开方法: 调用enable 即可
booleanresult = mBluetoothAdapter.enable();
//
/第二种打开方法 ,调用系统API去打开蓝牙
if(!mBluetoothAdapter.isEnabled())//未打开蓝牙,才需要打开蓝牙
{
Intent intent = newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, REQUEST_OPEN_BT_CODE);
//会以Dialog样式显示一个Activity , 我们可以在onActivityResult()方法去处理返回值
}
4.2、关闭蓝牙
直接调用API
函数即disable()即可。
public
boolean disable ()
功能:关闭蓝牙设备。
返回值:该函数会立即返回。
true 表示关闭操作成功
false 表示蓝牙操作失败 , ①、当前蓝牙已经关闭
;②、其他一些异常情况
5、扫描蓝牙设备
public
boolean startDiscovery ()
功能:扫描蓝牙设备
注意: 如果蓝牙没有开启,该方法会返回false ,即不会开始扫描过程。
public
boolean cancelDiscovery ()
功能: 取消扫描过程。
注意: 如果蓝牙没有开启,该方法会返回false。
public
boolean isDiscovering ()
功能:
是否正在处于扫描过程中。
注意:
如果蓝牙没有开启,该方法会返回false。
6、 获取蓝牙相关信息
public String getName ()
功能:获取蓝牙设备Name
public String getAddress ()
功能:获取蓝牙设备的硬件地址(MAC地址),例如:00:11:22:AA:BB:CC
public
boolean setName (Stringname)
功能:设置蓝牙设备的Name,
public Set getBondedDevices ()
功能:获取与本机蓝牙所有绑定的远程蓝牙信息,以BluetoothDevice类实例(稍后讲到)返回。
注意:如果蓝牙为开启,该函数会返回一个空集合 。
public
static
boolean checkBluetoothAddress (String address)
功能: 验证蓝牙设备MAC地址是否有效。所有设备地址的英文字母必须大写,48位,形如:00:43:A8:23:10:F1
。
返回值: true 设备地址有效
false
设备地址无效
public BluetoothDevicegetRemoteDevice (String address)
功能:以给定的MAC地址去创建一个 BluetoothDevice 类实例(代表远程蓝牙实例)。即使该蓝牙地址不可见,也会产生
一个BluetoothDevice类实例。
返回:BluetoothDevice 类实例
。注意,如果该蓝牙设备MAC地址不能被识别,其蓝牙Name为null。
异常:如果MAC
address无效,抛出IllegalArgumentException。
7、蓝牙相关广播
Action值
说明
ACTION_STATE_CHANGED 蓝牙状态值发生改变
ACTION_SCAN_MODE_CHANGED蓝牙扫描状态(SCAN_MODE)发生改变
ACTION_DISCOVERY_STARTED蓝牙扫描过程开始
ACTION_DISCOVERY_FINISHED 蓝牙扫描过程结束
ACTION_LOCAL_NAME_CHANGED蓝牙设备Name发生改变
ACTION_REQUEST_DISCOVERABLE请求用户选择是否使该蓝牙能被扫描
PS:如果蓝牙没有开启,用户点击确定后,会首先开启蓝牙,继而设置蓝牙能被扫描。
ACTION_REQUEST_ENABLE请求用户选择是否打开蓝牙
ACTION_FOUND(该常量字段位于BluetoothDevice类中,稍后讲到)
说明:蓝牙扫描时,扫描到任一远程蓝牙设备时,会发送此广播。
通过注册这个广播,我们可以获取扫描到的蓝牙信息。方法如下:
//扫描到了任一蓝牙设备
if(BluetoothDevice.ACTION_FOUND.equals(intent.getAction()))
{
Log.v(TAG, "### BT BluetoothDevice.ACTION_FOUND ##");
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(btDevice !=null){
Log.v(TAG , "Name : "+ btDevice.getName() +" Address: "+ btDevice.getAddress());
}
elseif(BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(intent.getAction()))
{
Log.v(TAG, "### BT ACTION_BOND_STATE_CHANGED ##");
intcur_bond_state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.BOND_NONE);
intprevious_bond_state = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.BOND_NONE);
Log.v(TAG, "### cur_bond_state ##"+ cur_bond_state +" ~~ previous_bond_state"+ previous_bond_state);
}
}
最后,关于这些广播的Intent信息,还有很多附加值,大家可以去看看Android SDK。
更多关于BluetoothAdapter类的API介绍,请参考农民伯伯的博客:
最后,在使用这两个类时,需要以下两个权限:
BLUETOOTH值为
"android.permission.BLUETOOTH"
BLUETOOTH_ADMIN 值为
"android.permission.BLUETOOTH_ADMIN"
二、
BluetoothDevice类介绍
该类就是关于远程蓝牙设备的一个描述。通过它可以和本地蓝牙设备---BluetoothAdapter连接通信。
1、 蓝牙绑定(Bound)状态 ,
即蓝牙设备是否与其他蓝牙绑定
int
BOND_BONDED表明蓝牙已经绑定
int
BOND_BONDING表明蓝牙正在绑定过程中 ,
bounding
int
BOND_NONE 表明没有绑定
android 蓝牙相关的类,Android中BluetoothAdapter类简介相关推荐
- Android 蓝牙相关的广播
2019独角兽企业重金招聘Python工程师标准>>> Android 蓝牙相关的广播 监听蓝牙相关的广播并获得相关的信息,蓝牙相关的广播主要集中在BluetoothAdapter和 ...
- android蓝牙广播自定义,Android 蓝牙相关的广播
Android 蓝牙相关的广播 监听蓝牙相关的广播并获得相关的信息,蓝牙相关的广播主要集中在BluetoothAdapter和BluetoothDevice类中, 可以通过在AndroidManife ...
- android 蓝牙相关广播,Android 蓝牙相关的广播
Android 蓝牙相关的广播 监听蓝牙相关的广播并获得相关的信息,蓝牙相关的广播主要集中在BluetoothAdapter和BluetoothDevice类中, 可以通过在AndroidManife ...
- 标准布局类(11中布局类)
2019独角兽企业重金招聘Python工程师标准>>> <div class="box"><div id="myAuto" ...
- Android 蓝牙在不同系统版本中使用的不同的蓝牙版本
我要查看兼容性文档最初是想看看,Android 系统不同版本中使用的蓝牙版本是哪一个,在网上百度了一下有些连接还被墙了,后来发现在Android开发者里面也有,记录一下 链接:https://sour ...
- android蓝牙设置特征属性,Android BLE蓝牙详细解读(二)
上篇文章主要介绍了关于BLE的一些基础操作,我们能够大概了解到蓝牙操作的一些流程,上文末介绍了本人的一个BLE开源库,支持蓝牙一对多的连接方式,该库封装了蓝牙的开启.扫描.连接.断开.连接超时...一 ...
- android蓝牙配对 自动联接,Android系统下蓝牙自动配对连接方法
Android系统下蓝牙自动配对连接方法 [专利摘要]本发明涉及一种Android系统下蓝牙自动配对连接方法,其包括如下步骤:步骤1.在Android设备端内存储上次进行蓝牙连接蓝牙外设的蓝牙地址,并 ...
- android 蓝牙hf编程,基于Android蓝牙Inband ring功能实现.doc
基于Android蓝牙Inband ring功能实现 基于Android蓝牙Inband ring功能实现 [摘要] 蓝牙作为一种短距无线数据与语音传输的开放性全球规范,目前在整个世界范围内都得到了很 ...
- android蓝牙开发搜素,Android蓝牙开发(一)之打开蓝牙和设备搜索
一.判断是否系统是否支持蓝牙 在使用蓝牙之前,我们首先要判断手机设备是否支持蓝牙,虽然现在基本都支持蓝牙了,但是为了代码的严谨性我们还是需要在代码中判断: private BluetoothManag ...
最新文章
- 在WP7下自定义RelativeSource 的Binding
- JVM调优:常见垃圾回收器组合
- WEB攻击手段及防御-扩展篇
- C语言中数组所占字节怎么算
- MATLAB GUI的CreateFcn如何创建
- 安卓下设置系统字体大小影响H5页面布局
- 如何跨越线程调用窗体控件?(1)
- 暴跌3000亿,“酱茅”怎么了?
- 入门指南_Spring Boot2: 快速入门指南
- 如何用计算机管理员权限,计算机管理员权限在哪里设置_电脑系统如何设置管理员权限-win7之家...
- Galaxy Fold上市时间推延 屏幕瑕疵是主因
- 趋势预测算法大PK!
- Nginx是如何处理一个HTTP请求的
- 91卫图助手下载器永久免费啦!!
- java工厂模式应用场景_详解Java设计模式之《简单工厂模式》
- Tera Term 工具的使用
- 经纬财富:新乡怎么炒白银能挣到钱?
- matlab 超分辨率,matlab超分辨率
- 计算机科学中宏一般指,在EXCEL中工具里面的宏是什么意思、有什么用途?
- 优秀WordPress版微信小程序推荐(二)
热门文章
- java解析json天气api,使用Postman获取天气接口API(Json格式)
- BNN - 基于low-bits量化压缩的跨平台深度学习框架
- 推荐适合胖mm大码 连衣裙 显瘦女装穿搭
- k8s node节点重启后遇到的问题及解决
- 计算机分区容量计算公式,100g等于多少mb?电脑分区100g是多少mb?电脑100g内存等于多少mb?...
- sql数据库习题总集
- mysql 免安装版 启动_Windows下配置启动免安装版本mysql
- 信号与系统 chapter7 因果与非因果
- c语言中void和define,C语言里面的内联函数(inline)与宏定义(#define)探讨
- 系统工程(SE)学习笔记(四)——系统架构设计