Android 蓝牙及蓝牙通讯讲解

本文详细介绍了蓝牙的由来、现状以及蓝牙规范,重点讲解了Android蓝牙API的使用,包括BluetoothAdapter、BluetoothDevice等核心类。此外,还提供了一个通过蓝牙实现服务器端与多个客户端聊天的案例,涵盖了蓝牙连接、数据传递的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、蓝牙介绍:

(一)、Bluetooth的由来及现状

蓝牙一词源于公元十世纪丹麦国王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于Blatand统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名Bluetooth可谓志向远大。
不过,在以Android为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着“鸡肋”的角色。那么,随着无线通信技术的快速发展以及Android的普及,蓝牙技术在我们生活中的应用也越来越多,包括蓝牙耳机和鼠标,及蓝牙局域网应用(聊天、游戏等)。

(二)、蓝牙规范介绍

Core Specification(核心规范)
  作用:用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递
  核心规范是蓝牙协议家族的基础,自蓝牙技术联盟(Bluetooth SIG,Special Interest Group)在1999年颁布蓝牙核心规范1.0版本以来,到目前为止蓝牙SIG一共发布了七个重要版本。每一个版本都促使蓝牙技术朝着更快、更安全、更省电的方向发展。

二、蓝牙的用法

(一)、蓝牙API

Android所有关于蓝牙开发的类都在android.bluetooth包下,只有8个类:

BluetoothAdapter     本地蓝牙适配器 
BluetoothClass      蓝牙类(主要包括服务和设备) 
BluetoothClass.Device    蓝牙设备类 
BluetoothClass.Device.Major    蓝牙设备管理 
BluetoothClass.Service   蓝牙服务类 
BluetoothDevice     蓝牙设备(远程蓝牙设备) 
BluetoothServiceSocket    监听蓝牙连接的类 
BluetoothSocket     蓝牙连接类
1、BluetoothAdapter :

表示本地的蓝牙适配器 (蓝牙射频)。BluetoothAdapter 是为所有蓝牙交互的入口点。它可以发现其他蓝牙设备、 查询绑定 (配对) 设备的列表、 实例化已知的 MAC 地址的BluetoothDevice(蓝牙设备) 和创建 BluetoothServerSocket 用于侦听来自其他设备的通信。直到我们建立bluetoothSocket连接之前,都要不断操作它 。BluetoothAdapter里的方法很多,常用的有以下几个:

cancelDiscovery() //根据字面意思,是取消发现,也就是说当我们正在搜索设备的时候调用这个方法将不再继续搜索; 
disable()//关闭蓝牙;
enable()//打开蓝牙;这个方法打开蓝牙不会弹出提示,更多的时候我们需要问下用户是否打开,以下两行代码同样是打开蓝牙,不过会提示用户:
Intemtenabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler,reCode);//同startActivity(enabler);
getAddress()//获取本地蓝牙地址
getDefaultAdapter()//获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdapter
getName()//获取本地蓝牙名称
getRemoteDevice(String address)//根据蓝牙地址获取远程蓝牙设备
getState()//获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)
isDiscovering()//判断当前是否正在查找设备,是返回true
isEnabled()//判断蓝牙是否打开,已打开返回true,否则,返回false
listenUsingRfcommWithServiceRecord(String name,UUIDuuid)//根据名称,UUID创建并返回BluetoothServerSocket对象,这是创建BluetoothSocket服务器端的第一步 。第一个参数表示蓝牙服务的名称,可以是任意字符串,第二个参数是UUID。
startDiscovery()//开始搜索,这是搜索的第一步
2、BluetoothDevice

表示远程蓝牙设备。使用此类并通过BluetoothSocket类可以请求连接远程设备,或查询这台设备的信息如其名称、 地址、 类和绑定状态。
createRfcommSocketToServiceRecord(UUIDuuid)
根据UUID创建并返回一个BluetoothSocket,这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket。这个类其他的方法,如getAddress()getName(),同

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值