写在前面

由题意得,我今天讲的是基于鸿蒙系统的兼容JS的类Web开发范式的软件应用开发之蓝牙开发,它是基于API6的,至于为什么是基于API6,请你花几分钟看一下我之前写的这个系列教程的第四篇“ 鸿蒙系统应用开发之入门解说",地址是:https://www.yuque.com/ataola/cptslg/dx885eduha4kouiv 。其实也有更加新的API出来,那我这里就整理好放下面了。

@system.bluetooth(API 6)

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-system-bluetooth-0000001281001150

@ohos.bluetooth(API 7+)

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-bluetooth-0000001281480546

需求分析

大致是这样子的,我们要基于鸿蒙系统提供的一些底层实现的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的蓝牙开发的更多相关文章

  1. 【游戏开发】基于VS2017的OpenGL开发环境搭建

    一.简介 最近,马三买了两本有关于“计算机图形学”的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,“工欲善其事,必先利其器”.想学习图形 ...

  2. spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发

     前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...

  3. 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发

    Cypress-BLE 开发套件可以快速开发 物联网电子产品. PSOC编程特点: A 拖放各PSoC 组件到工作区中,以设计原理图B 完成各组件之间的布线,并配置GPIOC 使用所包含的组件API ...

  4. javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册

    转载孤傲苍狼博客http://www.cnblogs.com/xdp-gacl/p/3902537.html 1.层次比较分明的项目结构图

  5. STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)

    硬件设计 该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等:另一个是USB Host设备,可以对插上的U盘的数据进行读写. 图中J2是Mi ...

  6. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

    本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  7. EEPlat的基于浏览器的在线开发技术

    EEPlat的开发内容主要包含配置开发和基于API的扩展开发两块内容. EEPlat的配置开发基于后台的配置环境.直接通过界面操作配置就可以. EEPlat的配置平台是用EEPlat自解释构建的.本身 ...

  8. Android 蓝牙开发基本流程

    此例子基于 android demo 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少     Android对于蓝牙开发从2.0版本的sdk才开始支持,而 ...

  9. Android蓝牙开发浅谈(转)

    http://www.eoeandroid.com/thread-18993-1-1.html 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少     A ...

  10. 基于Android 4.4 开发的多窗体系统 开放源代码

    Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...

随机推荐

  1. Linux系统命令基础

    Linux系统命令基础 前面咱们已经成功安装了Linux系统--centos7,那么现在奔向Linux命令行的世界. Linux命令格式 1.一般情况下,[参数]是可选的,一些情况下[文件或路径]也是 ...

  2. k8s 中的 ingress 使用细节

    k8s中的ingress 什么是ingress Ingress 如何使用 ingress 使用细节 参考 k8s中的ingress 什么是ingress k8s 中使用 Service 为相同业务的 ...

  3. day11-Servlet01

    Servlet01 官方api文档:https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html Servlet和Tomcat的关系:一 ...

  4. 第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.3 接口开发-上传附件 5.3.1 接口文档 5.3.2 代码实现 5.3.3 接口测试 5.3 接口开发-上传附件 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 第 ...

  5. 面试 个人摸底监测 考察JavaScript基础 (第三天)

    01,如何开启JS严格模式?JS严格模式有什么特点? 两种方式 全局开启在js开头加上 'use strict' 局部开启,在作用域开头加上 function fn(){ 'use strict' } ...

  6. 16、有n个正数,使得前面每个数依次后移m个位置,最后m个数变成最前面m个数

    /* 有n个正数,使得前面每个数依次后移m个位置,最后m个数变成最前面m个数 */ #include <stdio.h> #include <stdlib.h> #define ...

  7. 优雅的重启uwsgi 告别uwsgi reload过程中造成的无法请求、请求延迟等问题

    [uwsgi]#使用优雅重启 lazy-apps = true #监听monitor文件 当monitor文件发生改变是重启uwsgi touch-chain-reload = /home/monit ...

  8. Ubuntu 20.04 开启root权限登陆、网卡配置

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying Ubuntu 20.04 开启root权限登陆.网 ...

  9. 机器学习模型评价指标之ROC 曲线、 ROC 的 AUC 和 投资回报率

    前文回顾: 机器学习模型评价指标之混淆矩阵 机器学习模型评价指标之Accuracy.Precision.Recall.F-Score.P-R Curve.AUC.AP 和 mAP 1. 基本指标 1. ...

  10. ubuntu 20.04 / 22.04 运行32位程序

    sudo dpkg --add-architecture i386 sudo apt install libc6:i386 libstdc++6:i386 sudo apt-get update su ...