随着近两年可穿戴式产品逐渐进入人们的生活,蓝牙开发也成为了Android开发的一个重要模块,下面我们就来说一说蓝牙的这些API。

1.蓝牙开发有两个主要的API

BuletoothAdapter:本地蓝牙的适配器,也就是说当前应用程序所运行的Android设备上的蓝牙

BuletoothDevice  : 远程的蓝牙适配器,也就是说你要连接的Android设备的适配器。

2.蓝牙权限 :

android.permission.BLUETOOTH : 允许程序连接到已配对的蓝牙设备, 请求连接/接收连接/传输数据需要改权限, 主要用于对配对后进行操作;

android.permission.BLUETOOTH_ADMIN : 允许程序发现和配对蓝牙设备, 该权限用来管理蓝牙设备, 有了这个权限, 应用才能使用本机的蓝牙设备, 主要用于对配对前的操作;

优先级 : BLUETOOTH权限是BLUETOOTH_ADMIN权限的前提, 如果没有BLUETOOTH权限, 就不能使用BLUETOOTH_ADMIN权限;

3.蓝牙状态值:

蓝牙关闭 : int STATE_OFF , 值为10, 蓝牙模块处于关闭状态;

蓝牙打开中 : int STATE_TURNING_ON , 值为11, 蓝牙模块正在打开;

蓝牙开启 : int STATE_ON , 值为12, 蓝牙模块处于开启状态;

蓝牙开启中 : int STATE_TURNING_OFF , 值为13, 蓝牙模块正在关闭;

4.蓝牙相关的广播:

开关状态改变:

BluetoothAdapter.ACTION_STATE_CHANGE:

可以通过intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)获取当前蓝牙改变的状态。

搜索到附近可用设备:

BluetoothDevice.ACTION_FOUND:

可以通过intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 获取当前搜索到的远程设备。

配对请求:

BluetoothDevice.ACTION_PAIRING_REQUEST

配对状态改变:

BluetoothDevice.ACTION_PAIRING_REQUEST:

5.常用方法:

打开/关闭 蓝牙:

BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter(); //获取本地蓝牙实例

if (!mAdapter.isEnabled()){

  mAdapter.enable();  //打开蓝牙

}else{

   mAdapter.enable(); //关闭蓝牙

}

设置蓝牙可见性:

可见:adapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);

不可见:adapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);

设置可见性超时时间: adapter.setDiscoverableTimeout(BLUETOOTH_DSCOVERABLE_TIME);

开始 / 停止 扫描附近的设备:

mAdapter.startDiscovery();  //开始扫描

mAdapter.startDiscovery(); //停止扫描

获取蓝牙基本信息:

MAC地址:mAdapter.getAddress();

名称:      mAdapter.getName();

与远程设备配对:

  try {

        Method createBondMethod = BluetoothDevice.class.getMethod("createBond");
       createBondMethod.invoke(device);
  } catch (Exception e) {
        e.printStackTrace();
  }

Android 蓝牙API详解的更多相关文章

  1. Android 蓝牙操作详解

    1.启用蓝牙并使设备处于可发现状态    1.1 在使用BluetoothAdapter类的实例进操作之前,应启用isEnable()方法检查设备是否启用了蓝牙适配器.       // 使用意图提示 ...

  2. Android Developer -- Bluetooth篇 开发实例之四 API详解

    http://www.open-open.com/lib/view/open1390879771695.html 这篇文章将会详细解析BluetoothAdapter的详细api, 包括隐藏方法, 每 ...

  3. android:ToolBar详解

    android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...

  4. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  5. 【转】Android Canvas绘图详解(图文)

    转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...

  6. Android GLSurfaceView用法详解(二)

    输入如何处理       若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTes ...

  7. Android WebView 开发详解(三)

    转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...

  8. Android WebView 开发详解(二)

    转载请注明出处  http://blog.csdn.net/typename/article/details/39495409 powered by miechal zhao   概览: Androi ...

  9. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

随机推荐

  1. Difinition Of Done

    A Story is Sprint ready (Rally Defined) when............. The story has well defined and testable ac ...

  2. mysql分区操作

    分区表使用myisam引擎. 分区规则: Range(范围)–这种模式允许将数据划分不同范围.例如可以将一个表通过年份划分成若干个分区. Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash ...

  3. Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  4. java并发编程(四)守护进程 线程阻塞的四种情况

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17099981 守护线程   Java中有两类线程:User Thread(用户线程).Da ...

  5. 使用File查询出所有的文件和目录的信息

    public class Test34 { public static void main(String[] args) { File f=new File("f:"); File ...

  6. WPF整理-为控件添加自定义附加属性

    附加属性 附加属性,大家都不陌生,最常见的是Canvas.Left/Canvas.Top,类似的也有Grid.Row/Grid.Column等附加属性.举个最常见的例子 <Canvas> ...

  7. android——从零开始

     一.JDK(不用安装)1.下载适合的jdk2.配置环境变量 添加一系统边=变量       JAVA_HOME=D:\Java\jdk1.8.0_91      CLASSPATH=.;%JAVA_ ...

  8. shujuk

    数据库管理的目标:在适当的时候以适当的形式向适当的人提供适当的数据. 2. 数据管理的内容:组织业务的管理(学生的信息) :技术的管理(数据库的建立等) 3. 数据库管理的发展阶段:人工,文件,数据库 ...

  9. Ruby-随机数

    --随机0-1 rand --随机一个范围 rand(1..100)

  10. IntelliJ Idea 常用快捷键列表

    Alt+回车 导入包,自动修正 sout+Tab Syso快捷键 Ctrl+Alt+F 局部变量变为全局变量 Ctrl+Alt+V 类似于eclipse中Ctrl+2+L的快捷键 Ctrl+Alt+T ...