鸿蒙系统应用开发之基于API6的蓝牙开发
写在前面
由题意得,我今天讲的是基于鸿蒙系统的兼容JS的类Web开发范式的软件应用开发之蓝牙开发,它是基于API6的,至于为什么是基于API6,请你花几分钟看一下我之前写的这个系列教程的第四篇“ 鸿蒙系统应用开发之入门解说",地址是:https://www.yuque.com/ataola/cptslg/dx885eduha4kouiv 。其实也有更加新的API出来,那我这里就整理好放下面了。
@system.bluetooth(API 6)
@ohos.bluetooth(API 7+)
需求分析
大致是这样子的,我们要基于鸿蒙系统提供的一些底层实现的API去进行软件应用开发。具体要实现的功能点是:
- 蓝牙的连接与断开
- 读取附近蓝牙设备列表并对其进行匹配
- 已匹配设备的取消匹配以及连接
技术调研
额,没什么好调研的,由于一些不可描述的原因,我这边是用API6开发的,它只有四个API,照着看一下复制粘贴示例代码就好了,然后能够遇到的错误码大致如下:
老规矩,拍拍手,上菜。
思路分析
简单地分析一下 ,大致是这样子的。你需要一些变量去存储获取的数据、去做状态、数据的展示,具体如下:
然后你要实现一些方法,具体的如下:
好,在理清完思路我们开始写点代码。
技术实现
配置
这一块的话,是这样子的。我们在底层系统上安装完软件,需要一些权限,那么这个配置主要是为了获取这些权限要配的,具体的如下
好的,下面我们贴出配置的详细代码
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
},
"module": {
"package": "com.example.myapplication",
"name": ".MyApplication",
"mainAbility": "com.example.myapplication.MainAbility",
"deviceType": [
"phone",
"tablet",
"tv",
"wearable"
],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"name": "com.example.myapplication.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"visible": true,
"launchType": "standard"
}
],
"js": [
{
"pages": [
"pages/index/index"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
],
"reqPermissions": [
{
"name": "ohos.permission.USE_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.DISCOVER_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.MANAGE_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.LOCATION",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
}
]
}
}
可以看到效果就是这样子的,嗯。
伪代码实现
读取周边蓝牙设备的代码实现
简单地调用下给的API接口,然后在成功的时候一把Map到蓝牙设备列表里面去,然后取消订阅发现。具体的如图所示:
取消匹配蓝牙设备
把当前的设备整个塞回蓝牙设备列表里面去,然后在已匹配列表把它送走。
连接蓝牙
还是调用官方提供的API,成功的话,把之前那个未连接的状态反一下,然后把当前连接的蓝牙设备绑在当前蓝牙设备变量上
最后
让我们来看一下,最后整出来的效果吧。
此处为语雀视频卡片,点击链接查看:IMG_8899.MOV
勘误
额,官网文档的代码这里写错了,家人们复制粘贴的时候把它替换成图中所示的符号。
鸿蒙系统应用开发之基于API6的蓝牙开发的更多相关文章
- 【游戏开发】基于VS2017的OpenGL开发环境搭建
一.简介 最近,马三买了两本有关于“计算机图形学”的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,“工欲善其事,必先利其器”.想学习图形 ...
- spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发
前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...
- 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发
Cypress-BLE 开发套件可以快速开发 物联网电子产品. PSOC编程特点: A 拖放各PSoC 组件到工作区中,以设计原理图B 完成各组件之间的布线,并配置GPIOC 使用所包含的组件API ...
- javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册
转载孤傲苍狼博客http://www.cnblogs.com/xdp-gacl/p/3902537.html 1.层次比较分明的项目结构图
- STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)
硬件设计 该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等:另一个是USB Host设备,可以对插上的U盘的数据进行读写. 图中J2是Mi ...
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)
本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- EEPlat的基于浏览器的在线开发技术
EEPlat的开发内容主要包含配置开发和基于API的扩展开发两块内容. EEPlat的配置开发基于后台的配置环境.直接通过界面操作配置就可以. EEPlat的配置平台是用EEPlat自解释构建的.本身 ...
- Android 蓝牙开发基本流程
此例子基于 android demo 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少 Android对于蓝牙开发从2.0版本的sdk才开始支持,而 ...
- Android蓝牙开发浅谈(转)
http://www.eoeandroid.com/thread-18993-1-1.html 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少 A ...
- 基于Android 4.4 开发的多窗体系统 开放源代码
Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...
随机推荐
- 题解 CF1011B Planning The Expedition
Solution 考虑 二分 . 首先要确定二分的对象,显然二分天数较为简单. 每次找到的 \(mid\) 需要判断是否能让整队人吃饱,那就调用一个 check() . 对于 check() ,求出每 ...
- JMETER与它的组件们
JSON提取器与Debug Sampler 我们平时会遇到很多JSON格式的接口返回,我们需要提取参数可以用JSON提取器,同时配合自带的调试器来进行调试. JSON提取器 Name of crea ...
- CentOS下一些软件的安装
Git # 参数 -y 表示yes,不用询问直接安装 yum -y install git # 第一次安装需要一些配置 git config --global user.name "Your ...
- Go语言核心36讲45
你好,我是郝林,我今天继续分享bufio包中的数据类型. 在上一篇文章中,我提到了bufio包中的数据类型主要有Reader.Scanner.Writer和ReadWriter.并着重讲到了bufio ...
- 【OpenStack云平台】搭建openstack云平台
1. 系统镜像 安装运行环境系统要求为CentOS7.5,内核版本不低于3.10. CentOS-7.5-x86_64-DVD-1804.iso Chinaskill_Cloud_iaas.iso 2 ...
- Centos7.6分区、格式化、自动挂载磁盘
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 目录 1. 添加硬盘 2. 执行fdisk -l ...
- 【Devexpres】spreadsheetControl设置可见范围
// 获得当前电子表格的工作簿 Worksheet worksheet = spreadsheetControl.ActiveWorksheet; // 获得当前用户数据范围 CellRange us ...
- [Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听
此框架是SQL Server增量订阅,用来监听增删改数据库数据变更 目前仅支持SQL Server,Nuget上可以下载安装 或者使用Nuget命令添加包 dotnet add package Kog ...
- vulnhub靶场之LOOZ: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:looz: 1,下载地址:https://download.vulnhub.com/looz/Looz.zip,下载后直接vbox打开即可. 知 ...
- 火山引擎 DataLeap 的 Data Catalog 系统公有云实践
Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...