安卓蓝牙技术之BluetoothAdapter
2018-01-11 08:56
281 查看
BluetoothAdapter代表了移动设备的本地的蓝牙适配器,
通过该蓝牙适配器可以对蓝牙进行基本操作,
例如 :
启动设备发现(startDiscovery),
获取已配对设备(getBoundedDevices),
通过mac蓝牙地址获取蓝牙设备(getRemoteDevice),
从其它设备创建一个监听连接(listenUsingRfcommWithServiceRecord);BluetoothAdapter.getDefaultAdapter()该静态方法可以获取该适配器对象.
API详解
1.常量介绍
(1)开关状态值
蓝牙关闭 : int STATE_OFF ,
值为10, 蓝牙模块处于关闭状态;
蓝牙打开中 : int STATE_TURNING_ON ,
值为11, 蓝牙模块正在打开;
蓝牙开启 : int STATE_ON ,
值为12, 蓝牙模块处于开启状态;
蓝牙开启中 : int STATE_TURNING_OFF ,
值为13, 蓝牙模块正在关闭;
蓝牙开关状态顺序 : STATE_OFF --> STATE_TURNING_ON --> STATE_ON --> STATE_TURNING_OFF --> STATE_OFF;
(2)扫描状态值
无功能状态 : int SCAN_MODE_NONE ,
值为20, 查询扫描和页面扫描都失效,
该状态下蓝牙模块既不能扫描其它设备,
也不可见;
扫描状态 : int SCAN_MODE_CONNECTABLE ,
值为21, 查询扫描失效,
页面扫描有效,
该状态下蓝牙模块可以扫描其它设备,
从可见性来说只对已配对的蓝牙设备可见,
只有配对的设备才能主动连接本设备;
可见状态 : int SCAN_MODE_CONNECTABLE_DISCOVERABLE,
值为23,
查询扫描和页面扫描都有效;
查询扫描功能 : 其它设备可以扫描到本设备
, 指的是可见性可见;
页面扫描功能 : 可以主动扫描其它设备;
(3)蓝牙操作接收的广播
开始搜索广播 : String ACTION_DISCOVERY_STARTED,
蓝牙适配器开始搜索远程设备, 值为"android.bluetooth.action.DISCOVERY_START",
蓝牙适配器开始搜索之后,
会先有12秒的查询扫描(12s内可见),
查询扫描后进行页面扫描(主动搜索),
需要BLUETOOTH权限;
如果搜索到蓝牙设备, 就会收到BluetoothDevice.ACTION_FOUND广播,
可以从Intent中获取放在其中的BluetoothDevice对象,
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
设备查找非常消耗资源, 在查找的过程中,
不能连接远程的蓝牙设备,
已经存在的连接也要限制带宽,
如果想要执行除查找外的其它操作,
之前最好调用cancelDiscovery();
搜索完成广播 : String ACTION_DISCOVERY_FINISHED,蓝牙S适配器完成搜索发出的广播, 值为"android.bluetooth.adapter.action.DISCOVERY_FINISHED",
需要BLUETOOTH权限;
蓝牙名称改变广播 : String ACTION_LOCAL_NAME_CHANGED,
本地的蓝牙适配器改变了自己的名称,
值为"android.bluetooth.adapter.action.LOCAL_NAME_CHANGED",
注意改变的是本设备名称,
不是远程设备的.这个广播包含一个EXTRA_LOCAL_NAME附加域,
需要BLUETOOTH权限;扫描模式变化广播 : String ACTION_SCAN_MODE_CHANGED,
蓝牙模块扫描模式发生了变化,
值为"android.bluetooth.adapter.action.SCAN_MODE_CHANGED",
该Intent对象包含了EXTRA_SCAN_MODE和EXTRA_PREVIOUS_SCAN_MODE,
两个附加域分别是新的和旧的扫描模式,
这里可以根据前后扫描模式的不同做出不同的操作,
需要BLUETOOTH权限;
开关模式变化广播 : String ACTION_STATE_CHANGED,
蓝牙模块被打开或者关闭, 值为"android.bluetooth.adapter.action.STATE_CHANGED",
该广播的Intent中包含EXTRA_STATE和EXTRA_PREVIOUS_STATE两个附加域,
需要BLUETOOTH权限;
(4)蓝牙操作请求的广播
开启蓝牙:String ACTION_REQUEST_ENABLE,
打开蓝牙, 值为"android.bluetooth.adapter.action.REQUEST_ENABLE",
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, requestCode);可以在Activity中的onActivityResult()方法中处理结果,
如果蓝牙模块打开成功,
则返回结果吗RESULT_OK;
如果蓝牙模块打开失败,
则返回结果码RESULT_CANCELED;
打开和关闭蓝牙模块, 都可以通过ACTION_STATE_CHANGED广播来监听;
蓝牙可见 : String ACTION_REQUEST_DISCOVERABLE,
使蓝牙可见,
值为"android.bluetooth.adapter.action.REQUEST_DISCOVERABLE",
默认的可见时间为120s,
可以在广播中添加附加域,
设置任意的可见时间,
附加域为EXTRA_DISCOVERABLE_DURATION,
需要BLUETOOTH权限;
可以在Activity中的onActivityResult()方法中处理结果,
如果蓝牙模块设置可见成功,
则返回结果吗RESULT_OK;
如果蓝牙模块设置可见失败,
则返回结果码RESULT_CANCELED;
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivityForResult(discoverableIntent,resultCode)
(5)附加域
附加域是放在Intent中的,
使用Intent.putExtra(附加域,附加值)方法添加附加域;
扫描模式附加域 : 这两个附加域的值是扫描模式,
可以为SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_DISCOVERABLE;
String EXTRA_SCAN_MODE : 值为"android.bluetooth.adapter.extra.SCAN_MODE";
String EXTRA_PREVIOUS_SCAN_MODE :
值为"android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
开关状态附加域 : 这两个附加域的值是开关状态,
可以为STATE_OFF, STATE_ON, STATE_TURNING_OFF, STATE_TURNING_ON;
String EXTRA_STATE : 值为"android.bluetooth.adapter.extra.STATE";
String EXTRA_PREVIOUS_STATE : 值为"android.bluetooth.adapter.extra.PREVIOUS_STATE";
蓝牙名称附加域 : String EXTRA_LOCAL_NAME ,
存放ACTION_LOCAL_NAME_CHANGED附加域的附加值
, 值为"android.bluetooth.adapter.extra.LOCAL_NAME";
可见时间附加域 : String EXTRA_DISCOVERABLE_DURATION,
存放的是ACTION_REQUEST_DISCOVERABLE广播的可见时长,
值为"android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
(6)错误码
int ERROR , 这个值用来标记错误 ,
方便自己使用的 ,
没有实际意义;
2.State状态相关方法
(1)获取蓝牙适配器
public static sychronized BluetoothAdapter getDefaultAdapter();
返回值 : 本地蓝牙适配器
BluetoothAdapter对象;
(2)获取state状态方法
public int getState();
作用 : 获取是否可用
返回值 : 返回当前的State状态值, STATE_ON, STATE_OFF, STATE_TURNING_ON, STATE_TURNING_OFF;
权限 : BLUETOOTH;
(3)蓝牙是否可用
public boolean isEnable();
作用 : 获取当前设备蓝牙模块是否可用;
返回值 : 返回当前蓝牙模块是否可用, true
可用, false
不可用;
权限 : BLUETOOTH权限;
(4)打开蓝牙
public boolean enable();
作用 : 打开本地蓝牙适配器;
返回值 : 如果打开成功则返回true,
如果打开失败返回false;
权限 :BLUETOOTH_ADMIN权限;
(5)关闭蓝牙
public boolean disable();
作用 : 关闭本地设备蓝牙;
返回值 : 如果关闭蓝牙成功,
返回true;
如果关闭蓝牙失败,
返回false;
权限 : BLUETOOTH_ADMIN权限;
3. 扫描相关方法
(1)开始扫描
public boolean startDiscovery();
作用 : 开始查找远程蓝牙设备,
先进行12秒的查询扫描(被动可见),
之后进行页面扫描(主动搜索);
搜索过成功不能尝试对远程设备的连接,
同时已连接的设备的带宽也会被压缩,
等待时间变长;
使用cancelDiscovery()可以终止搜索;
返回值 : 如果成功则返回true,
失败返回false;
权限 :
BLUETOOTH_ADMIN权限;
(2)是否在扫描中
public boolean isDiscovering();
作用 : 是否正在搜索;
返回值 : 如果设备正在搜索,
返回true;
如果设备没有进行蓝牙搜索,
返回false;
权限 : BLUETOOTH权限;
(3)取消查找
public boolean cancelDiscovery();
作用 : 取消蓝牙搜索;
在进行connect()方法的时候,
必须调用这个方法,
蓝牙搜索是一个服务进行,
在搜索中的时候,
不能进行连接;
返回值 : 如果取消成功,
则返回true;
如果取消失败,
返回false;
(4)获取扫描模式
public int getScanMode();
作用 : 获取当前蓝牙的扫描模式;
返回值 : SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_DISCOVERABLE;
4.与蓝牙设备相关的方法
(1)检查蓝牙地址是否有效
public boolean checkBluetoothAddress(String address);
作用 : 检查蓝牙地址是否合法,
蓝牙地址字母必须大写,
例如 : "00:43:A8:23:10:F0";
参数 : 17位的字符串,
例如 : "00:43:A8:23:10:F0";
返回值 : 如果蓝牙地址合法返回true,
反之返回false;
(2)获取本地蓝牙地址
public String getAddress();
作用 : 返回本地蓝牙的MAC地址;
返回值 : 本地的硬件地址;
(3)获取本地蓝牙名称
public String getName();
返回值 : 本地蓝牙设备的名称;
(4)获取绑定的蓝牙集合
public Set<BluetoothDevice> getBoundedDevices();
作用 : 获取已经配对的蓝牙设备的集合,
如果蓝牙未被打开,
则返回null;
(5)获取远程蓝牙设备
public BluetoothDevice getRemoteDevice(String address);
作用 : 根据蓝牙的物理地址获取远程的蓝牙设备,
如果地址不合法,
就会产生异常;
返回值 : 获取到的BluetoothDevice对象;
(6)创建监听
Public BluetoothServerSocket listenUsingRfcommonWithServiceRecord(String name, UUID uuid);
作用 : 创建一个监听Rfcommon端口的蓝牙监听,
使用accept()方法监听,
并获取BluetoothSocket对象;
该系统会根据一个服务名称(name)和唯一的识别码(uuid)来创建一个SDP服务,
远程蓝牙设备可以根据唯一的UUID来连接这个SDP服务器;
参数 : name : SDP服务器名称, UUID, SDP记录下的UUID;
返回值 : 正在监听蓝牙端口;
权限 : BLUETOOTH;
(7)public Boolean setName(String name)
作用:设置蓝牙的名称。
5.常用用法
1.打开蓝牙
第一种打开方法:调用enable
即可
booleanresult = mBluetoothAdapter.enable();
第二种打开方法 ,调用系统API去打开蓝牙
if(!mBluetoothAdapter.isEnabled()) //未打开蓝牙,才需要打开蓝牙
{
Intent intent = newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, REQUEST_OPEN_BT_CODE);
会以Dialog样式显示一个Activity
, 我们可以在onActivityResult()方法去处理返回值
}
第一种方法打开蓝牙, 没有任何提示,
直接就打开了;
第二种方法发送广播, 会弹出一个对话框,
选择是否打开蓝牙,
选择是蓝牙才打开;
2.设置可见
private void setDiscoverable() {
Intent bluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
bluetoothIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 3600);
mContext.startActivity(bluetoothIntent);
}
发送ACTION_REQUEST_DISCOVERABLE广播,
同时在EXTRA_DISCOVERABLE_DURATION附加域中加入可见时间,
单位是秒;
发送这个广播, 会弹出一个对话框,
显示是否可见3600秒;
通过该蓝牙适配器可以对蓝牙进行基本操作,
例如 :
启动设备发现(startDiscovery),
获取已配对设备(getBoundedDevices),
通过mac蓝牙地址获取蓝牙设备(getRemoteDevice),
从其它设备创建一个监听连接(listenUsingRfcommWithServiceRecord);BluetoothAdapter.getDefaultAdapter()该静态方法可以获取该适配器对象.
API详解
1.常量介绍
(1)开关状态值
蓝牙关闭 : int STATE_OFF ,
值为10, 蓝牙模块处于关闭状态;
蓝牙打开中 : int STATE_TURNING_ON ,
值为11, 蓝牙模块正在打开;
蓝牙开启 : int STATE_ON ,
值为12, 蓝牙模块处于开启状态;
蓝牙开启中 : int STATE_TURNING_OFF ,
值为13, 蓝牙模块正在关闭;
蓝牙开关状态顺序 : STATE_OFF --> STATE_TURNING_ON --> STATE_ON --> STATE_TURNING_OFF --> STATE_OFF;
(2)扫描状态值
无功能状态 : int SCAN_MODE_NONE ,
值为20, 查询扫描和页面扫描都失效,
该状态下蓝牙模块既不能扫描其它设备,
也不可见;
扫描状态 : int SCAN_MODE_CONNECTABLE ,
值为21, 查询扫描失效,
页面扫描有效,
该状态下蓝牙模块可以扫描其它设备,
从可见性来说只对已配对的蓝牙设备可见,
只有配对的设备才能主动连接本设备;
可见状态 : int SCAN_MODE_CONNECTABLE_DISCOVERABLE,
值为23,
查询扫描和页面扫描都有效;
查询扫描功能 : 其它设备可以扫描到本设备
, 指的是可见性可见;
页面扫描功能 : 可以主动扫描其它设备;
(3)蓝牙操作接收的广播
开始搜索广播 : String ACTION_DISCOVERY_STARTED,
蓝牙适配器开始搜索远程设备, 值为"android.bluetooth.action.DISCOVERY_START",
蓝牙适配器开始搜索之后,
会先有12秒的查询扫描(12s内可见),
查询扫描后进行页面扫描(主动搜索),
需要BLUETOOTH权限;
如果搜索到蓝牙设备, 就会收到BluetoothDevice.ACTION_FOUND广播,
可以从Intent中获取放在其中的BluetoothDevice对象,
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
设备查找非常消耗资源, 在查找的过程中,
不能连接远程的蓝牙设备,
已经存在的连接也要限制带宽,
如果想要执行除查找外的其它操作,
之前最好调用cancelDiscovery();
搜索完成广播 : String ACTION_DISCOVERY_FINISHED,蓝牙S适配器完成搜索发出的广播, 值为"android.bluetooth.adapter.action.DISCOVERY_FINISHED",
需要BLUETOOTH权限;
蓝牙名称改变广播 : String ACTION_LOCAL_NAME_CHANGED,
本地的蓝牙适配器改变了自己的名称,
值为"android.bluetooth.adapter.action.LOCAL_NAME_CHANGED",
注意改变的是本设备名称,
不是远程设备的.这个广播包含一个EXTRA_LOCAL_NAME附加域,
需要BLUETOOTH权限;扫描模式变化广播 : String ACTION_SCAN_MODE_CHANGED,
蓝牙模块扫描模式发生了变化,
值为"android.bluetooth.adapter.action.SCAN_MODE_CHANGED",
该Intent对象包含了EXTRA_SCAN_MODE和EXTRA_PREVIOUS_SCAN_MODE,
两个附加域分别是新的和旧的扫描模式,
这里可以根据前后扫描模式的不同做出不同的操作,
需要BLUETOOTH权限;
开关模式变化广播 : String ACTION_STATE_CHANGED,
蓝牙模块被打开或者关闭, 值为"android.bluetooth.adapter.action.STATE_CHANGED",
该广播的Intent中包含EXTRA_STATE和EXTRA_PREVIOUS_STATE两个附加域,
需要BLUETOOTH权限;
(4)蓝牙操作请求的广播
开启蓝牙:String ACTION_REQUEST_ENABLE,
打开蓝牙, 值为"android.bluetooth.adapter.action.REQUEST_ENABLE",
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, requestCode);可以在Activity中的onActivityResult()方法中处理结果,
如果蓝牙模块打开成功,
则返回结果吗RESULT_OK;
如果蓝牙模块打开失败,
则返回结果码RESULT_CANCELED;
打开和关闭蓝牙模块, 都可以通过ACTION_STATE_CHANGED广播来监听;
蓝牙可见 : String ACTION_REQUEST_DISCOVERABLE,
使蓝牙可见,
值为"android.bluetooth.adapter.action.REQUEST_DISCOVERABLE",
默认的可见时间为120s,
可以在广播中添加附加域,
设置任意的可见时间,
附加域为EXTRA_DISCOVERABLE_DURATION,
需要BLUETOOTH权限;
可以在Activity中的onActivityResult()方法中处理结果,
如果蓝牙模块设置可见成功,
则返回结果吗RESULT_OK;
如果蓝牙模块设置可见失败,
则返回结果码RESULT_CANCELED;
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivityForResult(discoverableIntent,resultCode)
(5)附加域
附加域是放在Intent中的,
使用Intent.putExtra(附加域,附加值)方法添加附加域;
扫描模式附加域 : 这两个附加域的值是扫描模式,
可以为SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_DISCOVERABLE;
String EXTRA_SCAN_MODE : 值为"android.bluetooth.adapter.extra.SCAN_MODE";
String EXTRA_PREVIOUS_SCAN_MODE :
值为"android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
开关状态附加域 : 这两个附加域的值是开关状态,
可以为STATE_OFF, STATE_ON, STATE_TURNING_OFF, STATE_TURNING_ON;
String EXTRA_STATE : 值为"android.bluetooth.adapter.extra.STATE";
String EXTRA_PREVIOUS_STATE : 值为"android.bluetooth.adapter.extra.PREVIOUS_STATE";
蓝牙名称附加域 : String EXTRA_LOCAL_NAME ,
存放ACTION_LOCAL_NAME_CHANGED附加域的附加值
, 值为"android.bluetooth.adapter.extra.LOCAL_NAME";
可见时间附加域 : String EXTRA_DISCOVERABLE_DURATION,
存放的是ACTION_REQUEST_DISCOVERABLE广播的可见时长,
值为"android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
(6)错误码
int ERROR , 这个值用来标记错误 ,
方便自己使用的 ,
没有实际意义;
2.State状态相关方法
(1)获取蓝牙适配器
public static sychronized BluetoothAdapter getDefaultAdapter();
返回值 : 本地蓝牙适配器
BluetoothAdapter对象;
(2)获取state状态方法
public int getState();
作用 : 获取是否可用
返回值 : 返回当前的State状态值, STATE_ON, STATE_OFF, STATE_TURNING_ON, STATE_TURNING_OFF;
权限 : BLUETOOTH;
(3)蓝牙是否可用
public boolean isEnable();
作用 : 获取当前设备蓝牙模块是否可用;
返回值 : 返回当前蓝牙模块是否可用, true
可用, false
不可用;
权限 : BLUETOOTH权限;
(4)打开蓝牙
public boolean enable();
作用 : 打开本地蓝牙适配器;
返回值 : 如果打开成功则返回true,
如果打开失败返回false;
权限 :BLUETOOTH_ADMIN权限;
(5)关闭蓝牙
public boolean disable();
作用 : 关闭本地设备蓝牙;
返回值 : 如果关闭蓝牙成功,
返回true;
如果关闭蓝牙失败,
返回false;
权限 : BLUETOOTH_ADMIN权限;
3. 扫描相关方法
(1)开始扫描
public boolean startDiscovery();
作用 : 开始查找远程蓝牙设备,
先进行12秒的查询扫描(被动可见),
之后进行页面扫描(主动搜索);
搜索过成功不能尝试对远程设备的连接,
同时已连接的设备的带宽也会被压缩,
等待时间变长;
使用cancelDiscovery()可以终止搜索;
返回值 : 如果成功则返回true,
失败返回false;
权限 :
BLUETOOTH_ADMIN权限;
(2)是否在扫描中
public boolean isDiscovering();
作用 : 是否正在搜索;
返回值 : 如果设备正在搜索,
返回true;
如果设备没有进行蓝牙搜索,
返回false;
权限 : BLUETOOTH权限;
(3)取消查找
public boolean cancelDiscovery();
作用 : 取消蓝牙搜索;
在进行connect()方法的时候,
必须调用这个方法,
蓝牙搜索是一个服务进行,
在搜索中的时候,
不能进行连接;
返回值 : 如果取消成功,
则返回true;
如果取消失败,
返回false;
(4)获取扫描模式
public int getScanMode();
作用 : 获取当前蓝牙的扫描模式;
返回值 : SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_DISCOVERABLE;
4.与蓝牙设备相关的方法
(1)检查蓝牙地址是否有效
public boolean checkBluetoothAddress(String address);
作用 : 检查蓝牙地址是否合法,
蓝牙地址字母必须大写,
例如 : "00:43:A8:23:10:F0";
参数 : 17位的字符串,
例如 : "00:43:A8:23:10:F0";
返回值 : 如果蓝牙地址合法返回true,
反之返回false;
(2)获取本地蓝牙地址
public String getAddress();
作用 : 返回本地蓝牙的MAC地址;
返回值 : 本地的硬件地址;
(3)获取本地蓝牙名称
public String getName();
返回值 : 本地蓝牙设备的名称;
(4)获取绑定的蓝牙集合
public Set<BluetoothDevice> getBoundedDevices();
作用 : 获取已经配对的蓝牙设备的集合,
如果蓝牙未被打开,
则返回null;
(5)获取远程蓝牙设备
public BluetoothDevice getRemoteDevice(String address);
作用 : 根据蓝牙的物理地址获取远程的蓝牙设备,
如果地址不合法,
就会产生异常;
返回值 : 获取到的BluetoothDevice对象;
(6)创建监听
Public BluetoothServerSocket listenUsingRfcommonWithServiceRecord(String name, UUID uuid);
作用 : 创建一个监听Rfcommon端口的蓝牙监听,
使用accept()方法监听,
并获取BluetoothSocket对象;
该系统会根据一个服务名称(name)和唯一的识别码(uuid)来创建一个SDP服务,
远程蓝牙设备可以根据唯一的UUID来连接这个SDP服务器;
参数 : name : SDP服务器名称, UUID, SDP记录下的UUID;
返回值 : 正在监听蓝牙端口;
权限 : BLUETOOTH;
(7)public Boolean setName(String name)
作用:设置蓝牙的名称。
5.常用用法
1.打开蓝牙
第一种打开方法:调用enable
即可
booleanresult = mBluetoothAdapter.enable();
第二种打开方法 ,调用系统API去打开蓝牙
if(!mBluetoothAdapter.isEnabled()) //未打开蓝牙,才需要打开蓝牙
{
Intent intent = newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, REQUEST_OPEN_BT_CODE);
会以Dialog样式显示一个Activity
, 我们可以在onActivityResult()方法去处理返回值
}
第一种方法打开蓝牙, 没有任何提示,
直接就打开了;
第二种方法发送广播, 会弹出一个对话框,
选择是否打开蓝牙,
选择是蓝牙才打开;
2.设置可见
private void setDiscoverable() {
Intent bluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
bluetoothIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 3600);
mContext.startActivity(bluetoothIntent);
}
发送ACTION_REQUEST_DISCOVERABLE广播,
同时在EXTRA_DISCOVERABLE_DURATION附加域中加入可见时间,
单位是秒;
发送这个广播, 会弹出一个对话框,
显示是否可见3600秒;
相关文章推荐
- 安卓蓝牙技术之中央BluetoothGatt和周边BluetoothGattServer的实现
- 安卓蓝牙技术Bluetooth使用流程(Bluetooth详解)
- Android蓝牙技术Bluetooth初体验
- 安卓蓝牙bluetooth开发全解
- 蓝牙(BlueTooth)技术标准
- Android蓝牙API之BluetoothAdapter类(1)
- 安卓在4.3的系统中提供了低功耗蓝牙Bluetooth Low Energy
- BlueTooth蓝牙核心技术(一)
- Android 中文API (69) —— BluetoothAdapter[蓝牙]
- 蓝牙BlueTooth技术学习理解
- Bluetooth:蓝牙中的自适应跳频技术
- android BluetoothAdapter无法搜索到蓝牙问题
- Android蓝牙API之BluetoothAdapter类(2)
- BlueTooth: 蓝牙相关技术概述
- BlueTooth: 蓝牙技术入门者指南
- 安卓程序代写 网上程序代写[原]BluetoothAdapter解析
- BlueTooth: 蓝牙技术入门者指南
- 一些常见的蓝牙(Bluetooth)相关的技术术语表
- Android中BluetoothAdapter.startDiscovery方法搜索蓝牙设备不起作用的解决办法
- BluetoothAdapter 蓝牙