简述:

关于蓝牙的开发,是从sdk2.0版本开始支持的,模拟器不支持,必须使用真机进行测试

android中所有半球蓝牙开发的类都在android.bluetooth包下

权限:

    <uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

开发蓝牙功能相关类的分析

BluetoothAdapter类

代表了一个本地的蓝牙适配器。它是所有蓝牙交互的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket(作为服务器端)来监听来自其他设备的连接。

BluetoothDevice类

代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态(其信息是封装在BluetoothSocket中)。

BluetoothSocket类

代表了一个蓝牙套接字的接口(类似于TCP中的套接字),它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。

BlueboothServerSocket类

代表打开服务连接来监听可能到来的连接请求(属于server端),为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接连接请求的时候,并且已经连接到了的时候,BlueboothServerSocket类将会返回一个BluetoothSocket。

BluetoothAdapter  蓝牙适配器,

在建立bluetoothSocket之前,需要不断操作它

常用的相关方法:

cancelDiscovery()  取消发现,当我们正在搜索设备的时候,调用这个方法,将取消搜索

disable()  将关闭蓝牙

enable() 打开蓝牙,使用这个方法打开蓝牙不会弹出提示

Intent  intent = new Intent(BluetoothAdapter.ACTIO N_REQUEST_ENABLE)

startActivityForResrlt(intent,code);

使用这个方法打开蓝牙将会提示用户

getAddress()获取本地蓝牙地址

getDefaultAdapter()获取默认BluetoothAdapter

getName()获取本地蓝牙名称

getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备

getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)

isDiscovering()判断当前是否正在查找设备,是返回true

isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false

listenUsingRfcommWithServiceRecord(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket

startDiscovery()开始搜索

BluetoothDevice用来描述了一个蓝牙设备

createRfcommSocketToServiceRecord(UUIDuuid)   根据UUID创建并返回一个BluetoothSocket也就是创建BluetoothSocket

BluetoothServerSocket

accept(),

accept(inttimeout)

这两个方法是用来接收客户端请求,应该放在新的线程中进行操作

BluetoothSocket   客户端

close(),关闭

connect()连接

getInptuStream()获取输入流

getOutputStream()获取输出流

getRemoteDevice()获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备

实例:配制本机蓝牙模块

启动蓝牙功能

        //首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapterBluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if (mBluetoothAdapter == null) {// Device does not support Bluetoothreturn;}//调用isEnabled()来查询当前蓝牙设备的状态,如果返回为false,则表示蓝牙设备没有开启,//封装一个ACTION_REQUEST_ENABLE请求到intent里面,调用startActivityForResult()方法使能蓝牙设备if (!mBluetoothAdapter.isEnabled()) {Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, 20);}

查询已配对好的蓝牙设备

 //在建立连接之前你必须先查询配对好了的蓝牙设备集以便选取一个设备进行通信Set<BluetoothDevice> pairedDevices =mBluetoothAdapter.getBondedDevices();if (pairedDevices.size() > 0) {//Loop through paired devicesfor (BluetoothDevice device : pairedDevices) {// mArrayAdapter.add(device.getName() + "\n" + device.getAddress());}}

扫描设备

 // 用ACTION_FOUND为action注册广播接收器private final BroadcastReceiver mReceiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {String action = intent.getAction();// 发现设备if (BluetoothDevice.ACTION_FOUND.equals(action)) {// 从Intent中获取蓝牙设备BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);// 添加名字和地址到设备适配器中//mArrayAdapter.add(device.getName() + "\n" + device.getAddress());}}};

注册广播接收

  //注册广播接收器IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver, filter); //在onDestroy时记得注销广播接收器

Android之蓝牙开发浅析相关推荐

  1. 【Android】蓝牙开发——经典蓝牙:配对与解除配对 实现配对或连接时不弹出配对框

    目录 一.配对方法 二.解除配对方法 三.配对/解除配对结果 四.justwork配对模式下,不弹出配对框 五.pincode配对模式下,不弹出配对框 六.小结 在之前的文章[Android]蓝牙开发 ...

  2. Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1)

     Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1) Android Bluetooth蓝牙作为设备,要与其他蓝牙设备互联,那么先决条件就是已经被发现,本文先简介An ...

  3. Android BLE蓝牙开发知识总结

    Android BLE蓝牙开发知识总结 1.蓝牙介绍 1.1什么是蓝牙?    蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换(使用2 ...

  4. Android 低功耗蓝牙开发

    初识低功耗蓝牙 Android 4.3(API Level 18)开始引入Bluetooth Low Energy(BLE,低功耗蓝牙)的核心功能并提供了相应的 API, 应用程序通过这些 API 扫 ...

  5. 蓝牙配对模式 java_【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码...

    目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...

  6. 【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码

    目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...

  7. Android Ble蓝牙开发总结

    Android Ble蓝牙开发总结 前言 本文总结了ble的搜索,连接,读写操作.以及在开发过程中可能遇到的坑. 首先我们需要知道,什么是ble. 蓝牙发展至今经历了8个版本的更新.1.1.1.2.2 ...

  8. 【Android】蓝牙开发——BLE(低功耗蓝牙)(附完整Demo)

    目录 目录 前言 一.相关概念介绍 二.实战开发 三.项目演示 四.Demo案例源码地址 五.更新记录 1.2020/12/29 :修改 setupService()中错误 2.2021/05/14 ...

  9. Android经典蓝牙开发全流程

    一.基本介绍   所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,最初是由爱立信公司公司发明的.技术始于爱立信公司 1994 方案,它是研究在移动电话和其他配件间进行低功耗.低成本无 ...

最新文章

  1. 一次打流过程的优化反思(iperf3的灵活运用)
  2. mysql练习_MySQL练习——4
  3. ffmpeg 源码学习
  4. PostgreSQL的常见参数和技巧
  5. BZOJ3832: [Poi2014]Rally(拓扑排序 堆)
  6. android oppo 驱动,Android Studio无法连接OPPO
  7. iOS人脸识别(检测)
  8. rar压缩包密码解密
  9. php ctype xdigit,php ctype_digit() 函数介绍
  10. 阿里的活动宣传做得好 一百分!
  11. 牛客小白月赛1 A题 Etéreo 是个爱学习的好孩子
  12. 谨以此写下本人安装riscv的全过程 简单易懂!!(本人环境是在ubuntu18.04中)
  13. 安装hue一直失败,请大佬帮帮忙,万分感谢!!!!!!!!
  14. Python 图片与pdf相互转换
  15. SQLServer中区分中英文标点符号
  16. Java/eclipse新建项目TR51,编写程序计算各小组学生的平均成绩和总成绩,并计算所有学生的平均成绩
  17. 推荐系统与深度学习(一)——FM模型原理
  18. 应届生在简历中如何描述自己的交互设计项目经验
  19. 微信商家券对接wechatpay-apiv3
  20. 以面试官的角度来看 React 工作面试

热门文章

  1. 斯坦福用普通相机和激光笔实现“穿墙透视”,连你的证件都能看清
  2. ICCV 2019 | 可变形曲面跟踪,亮风台新出基于图匹配的方法
  3. Cascade R-CNN升级!目标检测制霸COCO,实例分割超越Mask R-CNN
  4. php成品网站安装,PHPweb成品网站安装环境要求和安装方法
  5. 【Java进阶营】JAVA多线程基础学习二:synchronized
  6. 即将毕业的大学生,还在盲目跟风学Python吗?某位科大教授有话说
  7. 收藏 | 深度学习调试经验
  8. Git操作记录方便查阅
  9. oracle安装时EM,EM 安装时报错 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...
  10. 怎么用excel表做网页搜索工具_你敢相信?Excel居然可以做搜索引擎