安卓手机APP开发__蓝牙功能概述

安卓手机APP开发__蓝牙功能概述

目录

概述

基本内容

关键的类和接口


概述


安卓平台支持了蓝牙网络栈,它允许一个设备和其它的蓝牙设备进行无线的交换数据。
APP的框架提供了通过蓝牙API得到蓝牙的功能。这些API让APP能够
连接到其它的蓝牙设备上,建立起点到点还有多点的无线连接的功能。

使用蓝牙API,一个APP能执行如下的功能:

扫描其它的蓝牙设备
为匹配蓝牙设备,查询本地的蓝牙适配器。
建立起RFCOMM通道。
通过服务发现,连接其它的设备。
与其它的已经连接的设备进行交换数据
管理多个连接.

这个主题聚焦于经典的蓝牙。经典的蓝牙对于更电池电量敏感的操作而言,是正确的选择。
它包括了设备之间的流和通信。对于有低能耗需求的蓝牙设备,考虑使用蓝牙的低能耗连接。

这里描述了不同的蓝牙档案并且解释如何使用蓝牙API完成蓝牙通信必须的四个主要的任务

设置蓝牙
在本地区域发现可以配对的设备
连接设备
在设备之间传输数据。

基本内容

对于启用了蓝牙的设备,在彼此之间传输数据,它们必须首先形成一个通信的通道。
一个设备是一个可被发现的设备,让它自己处于对接入的连接请求是可用的。
另一个设备使用一个服务发现的进程来查找可被发现的设备。可被发现的设备
接受了配对的请求后,两个设备完成了绑定的操作,它们交换了安全凭证。设备
为了之后的使用,缓存这些安全凭证。配对和绑定完成之后,两个设备之间交换
信息。当会话完成后,设备初始化配对的请求,释放已经链接的通信通道。
两个设备之间还保留着绑定,然而,所以它们在未来的会话中只要彼此需求,
也没有任何一方解绑定的情况下,它们能够自动化地重新连接。


蓝牙API的使用需要在你的配置文件中,声明一些权限。一旦你的APP有了使用
蓝牙的权限,你的APP需要读取蓝牙适配器和确定设备上的蓝牙功能是否可用。
如果蓝牙功能是可用的,有如下的三个步骤建立起一个连接:

查找一个附近的蓝牙设备,可以是已经配对的设备,也可以是一个新的设备。
连接到一个蓝牙设备
与已经连接的设备进行数据传输

特定的设备使用一个特定的蓝牙档案来声明它能提供的数据。


关键的类和接口

android.bluetooth 软件包中提供了所有蓝牙 API。以下是创建蓝牙连接所需的类和接口:

BluetoothAdapter
    表示本地蓝牙适配器(蓝牙无线装置)。BluetoothAdapter 是所有蓝牙交互的入口点。借助此功能,您可以发现其他蓝牙设备、查询已绑定(配对)设备的列表、使用已知的 MAC 地址实例化 BluetoothDevice,以及创建 BluetoothServerSocket 来监听其他设备的通信。
BluetoothDevice
    表示远程蓝牙设备。使用此方法可以通过 BluetoothSocket 请求与远程设备建立连接,或查询有关设备的信息,例如设备的名称、地址、类和绑定状态。
BluetoothSocket
    表示蓝牙套接字的接口(类似于 TCP Socket)。这是允许应用使用 InputStream 和 OutputStream 与其他蓝牙设备交换数据的连接点。
BluetoothServerSocket
    表示用于监听传入请求的开放服务器套接字(类似于 TCP ServerSocket)。为了连接两台设备,一台设备必须使用此类打开服务器套接字。当远程蓝牙设备向此设备发出连接请求时,该设备会接受连接,然后返回已连接的 BluetoothSocket。
BluetoothClass
    描述蓝牙设备的一般特征和功能。这是一组只读属性,用于定义设备的类和服务。虽然这些信息可以提供有关设备类型的有用提示,但该类的属性不一定要描述设备支持的所有蓝牙配置文件和服务。
BluetoothProfile
    表示蓝牙配置文件的接口。蓝牙配置文件是适用于设备间蓝牙通信的无线接口规范。例如,免触摸配置文件。如需详细了解配置文件,请参阅蓝牙配置文件。
BluetoothHeadset
    支持蓝牙耳机,以便与手机配合使用。这包括蓝牙耳机配置文件和免提 (v1.5) 配置文件。
BluetoothA2dp
    定义如何使用高级音频分发配置文件 (A2DP) 通过蓝牙连接将高品质音频从一台设备流式传输到另一台设备。
BluetoothHealth
    表示用于控制蓝牙服务的健康设备配置文件代理。
BluetoothHealthCallback
    用于实现 BluetoothHealth 回调的抽象类。您必须扩展此类并实现回调方法,以接收关于应用注册状态和蓝牙通道状态变化的更新。
BluetoothHealthAppConfiguration
    表示蓝牙运行状况第三方应用注册的应用配置,该配置用于与远程蓝牙健康设备通信。
BluetoothProfile.ServiceListener
    一个接口,用于在 BluetoothProfile 进程间通信 (IPC) 客户端连接到运行特定配置文件的内部服务或断开与这类服务的连接时通知这些客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【qt】标准项模型

标准项模型 一.使用标准型项模型1.应用场景2.界面拖放3.创建模型4.配套模型5.视图设置模型6.视图属性的设置 二.从文件中拿到数据1.文件对话框获取文件名2.创建文件对象并初始化3.打开文件对象4.创建文本流并初始化5.读取文本流6.关闭文件7.完整代码 三.为模型添加数据1.自定义…

pytorch在docker里面使用GPU

本博客主要介绍如何在容器里面使用pytorch进行推理,训练,同时用上GPU。 1. 前置条件,安装好docker。 2. 安装nvidia-container-toolkit 参考官方文档: Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.…

mysql实战——半同步复制搭建

一、搭建前准备 主库 192.168.1.78 从库 192.168.1.76 二、搭建 1、先搭建异步复制 MySQL实战——主从异步复制搭建(一主一从)-CSDN博客 2、在异步的基础上搭建半同步复制 主库 mysql>install plugin rpl_semi_sync_slave soname semisy…

ctfshow web入门 其他 web396--web412

web396 <?php error_reporting(0); if(isset($_GET[url])){$url parse_url($_GET[url]);shell_exec(echo .$url[host].> .$url[path]);}else{highlight_file(__FILE__); } shell_exec(echo .$url[host].> .$url[path]); 这个是将url的host写入path,也就是说我们的pa…

el-table-column两种方法处理特殊字段,插槽和函数

问题&#xff1a;后端返回的字段为数字 解决办法&#xff1a; {{ row[item.prop] 1 ? "启用" : "禁用" }} {{ row[item.prop] }} 最终果&#xff1a; 另外&#xff1a;如果多种状态时可用函数 {{ getStatus(row[item.prop]) }} {{ row[item.prop…

IO游戏设计思路

1、TCP ,UDP ,KCP ,QUIC TCP 协议最常用的协议 UDP协议非常规的协议&#xff0c;因为需要在线广播&#xff0c;貌似运营商会有一些影响 KCP 基于UDP的协议&#xff0c;GitHub - l42111996/java-Kcp: 基于java的netty实现的可靠udp网络库(kcp算法)&#xff0c;包含fec实现&am…

WEB攻防【2】——ASPX/.NET项目/DLL反编译/未授权访问/配置调试报错

ASP&#xff1a;windowsiisaspaccess .net&#xff1a;windowsiisaspxsqlserver IIS上的安全问题也会影响到 WEB漏洞&#xff1a;本身源码上的问题 服务漏洞&#xff1a;1、中间件 2、数据库 3、第三方软件 #知识点: 1、.NET:配置调试-信息泄绵 2、.NET:源码反编译-DLL…

【openlayers系统学习】3.5colormap详解(颜色映射)

五、colormap详解&#xff08;颜色映射&#xff09; ​colormap​ 包是一个很好的实用程序库&#xff0c;用于创建颜色图。该库已作为项目的依赖项添加&#xff08;1.7美化&#xff08;设置style&#xff09;&#xff09;。要导入它&#xff0c;请编辑 main.js​ 以包含以下行…

Flutter 中的 CupertinoActivityIndicator 小部件:全面指南

Flutter 中的 CupertinoActivityIndicator 小部件&#xff1a;全面指南 在Flutter中&#xff0c;CupertinoActivityIndicator是用于iOS风格的应用程序中的一个活动指示器小部件。它提供了一个简单的、具有动画效果的旋转轮&#xff0c;用来向用户表示应用程序正在处理某些任务…

【Numpy】深入解析numpy.mat()函数

numpy.mat()&#xff1a;深入探索NumPy中的矩阵类 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简…

Spring Cloud 系列之Gateway:(9)初识网关

传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos&#xff1a;(3)服务注册发现 Spring Cloud 系列之OpenFeign&#xff1a;(4)集成OpenFeign Spring Cloud …

使用霍尔效应传感或磁场传感技术的应用

随着支持技术的增强&#xff0c;使用霍尔效应传感或磁场传感技术的应用目前已变得有效。本技术文档介绍了霍尔效应技术&#xff0c;并对应用进行了回顾&#xff0c;特别是区分霍尔传感器 IC 的主要类型以及它们可以支持的各种传感行为。此外&#xff0c;它还探讨了一些使能技术…

Spring Cache基本使用

Spring 从 3.1 版本开始定义缓存抽象来统一不同的缓存技术&#xff1b;在应用层面与后端存储之间&#xff0c;提供了一层抽象&#xff0c;这层抽象目的在于封装各种可插拔的后端存储( ehcache, redis, guava)&#xff0c;最小化因为缓存给现有业务代码带来的侵入。 一、Spring…

linux 内核安装、切换版本,禁用内核更新

安装内核 版本5.15.0-105 sudo apt-get install linux-image-5.15.0-105-generic sudo apt-get install linux-headers-5.15.0-105-generic切换内核版本 #查看已安装内核版本 grep menuentry /boot/grub/grub.cfg sudo dpkg --get-selections |grep linux-image#修改文件/etc…

Vue从入门到实战Day11

一、为什么要学Vue3 Vue3官网&#xff1a;简介 | Vue.js 1. Vue3的优势 2. Vue2选项式API vs Vue3组合式API 示例&#xff1a; 二、create-vue搭建Vue3项目 1. 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite(下一代构建工具)&#xff0c;为…

语法检查、语义检查的区别

语法检查和语义检查是编译过程中的两道手序。区别如下&#xff1a; 1&#xff0e;语法检查&#xff08;Syntax Checking&#xff09; 语法检查是第一道检查&#xff0c;就像英语的语法一样&#xff0c;它检查的是存不存在语法错语。 最常见的语法错误是错别字&#xff08;if…

jenkins插件之Warnings

Warnings插件&#xff0c;收集静态分析工具报告的编译器警告或问题&#xff0c;并将结果可视化。它内置了对许多编译器的支持&#xff08;cpp&#xff0c;clang&#xff0c;java等&#xff09;和工具&#xff08;spotbugs&#xff0c;pmd&#xff0c;checkstyle&#xff0c;esl…

Java操作Word文档,根据模板生成文件

Java操作Word文档 poi-tl介绍 官方文档&#xff1a;https://deepoove.com/poi-tl/ poi-tl&#xff08;poi template language&#xff09;是Word模板引擎&#xff0c;使用模板和数据创建很棒的Word文档。 在文档的任何地方做任何事情&#xff08;Do Anything Anywhere&#…

el-select可选择可搜索可输入新内容

需求&#xff1a;el-form-item添加el-select&#xff0c;并且el-select可选择可搜索可输入新内容&#xff0c;并且和其他的el-input做联动&#xff0c;如果是选择&#xff0c;那么el-input自动回填数据并且不可编辑&#xff0c;如果el-select输入新的内容&#xff0c;那么el-in…

【NumPy】关于numpy.transpose()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…