配色: 字号:
《Android模块化项目实战》04 酒精检测写字字帖
2023-05-24 | 阅:  转:  |  分享 
  
项目四酒精检测通过U酒保项目酒精检测模块的实现,了解蓝牙连接方式,学习使用进度条显示酒精浓度,掌握复杂JSON解析方法,在任务实现过程中:了
解蓝牙匹配形式了解蓝牙通信协议及方法掌握进度条使用方法掌握JSON多种解析方式酒精浓度的测试方法有很多,常见的是交警手中的酒精检测
仪,通过驾驶员呼出气体进行酒精含量的检测。U酒保软件的开发能够使酒精检测更加便捷。将手机与检测装置通过蓝牙连接后,进入主界面,点击
屏幕上的“立即检测”的同时向检测仪呼气,在界面显示相应的酒精浓度值。本项目通过酒精检测模块的实现,讲解蓝牙通信以及圆形进度条的使用
方法。蓝牙(Bluetooth) 是目前使用最广泛的无线通信协议,主要针对短距离的设备通讯,可实现移动设备和楼宇(或个人)域网之间
的数据交换,常用于连接耳机,鼠标等。在应用中,蓝牙相关的API有两个,BluetoothAdapter代表本地的蓝牙适配器,Blu
etoothDevice代表远程的蓝牙适配器。 该两种API都属于android:bluetooth.中的类,该类中重要类作用如
表4.1所示。?蓝牙简介本地蓝牙适配。通过Bluetooth Adapter类控制本地蓝牙设备。该类代表应用程序的Android设
备,为访问默认的Bluetooth Adapter,需调用getDefaultAdapter()。Bluetooth Adapte
r适配类包含的方法如表4.2所示。远程蓝牙适配。BluetioothDevice对象代表远程蓝牙设备,通过该类可查询远程设备物理地
址、连接状态、名称等信息,该类的操作执行在远程蓝牙设备硬件上,对象获取途径:调用BluetoothAdapter的getRemot
eDevice()方法获取该类对象对应的物理地址调用BluetoothAdapter的getBoundedDevices()方法,
可获取已配对的蓝牙设备集合?蓝牙适配蓝牙的启动方式蓝牙适配器指蓝牙设备的转换接口,采用了全球通用的短距无线连接技术,读取任何一种本
地的Bluetooth Adapter属性、启动蓝牙进行扫描、找到绑定设备、修改本地属性,都需在AndroidManifest.x
ml文件下添加BLUETOOTH_ADMIN使用权限,具体代码如下所示。 ="android.permission.BLUETOOTH" />?蓝牙适配打开蓝牙的方式有两种:Android系统弹出
提示框,提示用户是否开启蓝牙设备,具体代码如下所示。Intent enabler = new Intent(BluetoothAd
apter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler, RE
QUEST_ENABLE);直接打开蓝牙设备,在运用当中视情况而定,有些情况需要提示,有些情况则可直接打开使用,具体代码如下所示。
BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter(
); _bluetooth.enable();蓝牙适配进度条(ProgressBar)是用于显示某个耗时操作完成百分比的组件,
在UI界面中非常实用,能够动态地显示操作进度。在执行耗时操作时,用户通过进度条变化确认程序是否失去响应,以此提高用户界面友好性,提
高用户体验性。在应用中,系统提供了两大类进度条样式,长形进度条(progressBarStyleHorizontal) 和圆形进度
条(progressBarStyleLarge)。本项目主要介绍自定义圆形进度条的使用。ProgressBar简介在两大类进度条样
式下又可以分为六种不同风格的进度条,通过设置ProgressBar的style属性,可实现不同样式的进度条,style属性设置如表
4.3所示。ProgressBar 属性方法ProgressBar 在运用过程中还支持多种常用XML属性如表4.4所示。Progr
essBar 属性方法在Java代码中,ProgressBar提供了以下方法来操作进度。?setProgress(int):设置进
度条的完成百分比incrementProgressBy(int):设置进度条的进度。当int为正数时进度增加;为负数时进度减少ti
leify(drawable, false)方法和tileifyIndeterminate(drawable)方法。这两个方法主要
是对Drawable进行解析、转换的过程ProgressBar 属性方法设计圆弧圆环样式,并根据进度画圆弧。具体代码如CORE04
03所示。使用onDraw()方法画外层的圆环,并设置圆心、半径、颜色等。具体代码如CORE0401所示。设置进度百分比以及字体宽
度。具体代码如CORE0402所示。设计圆弧圆环样式,并根据进度画圆弧。具体代码如CORE0403所示。圆形进度条的实现JSON(
JavaScript Object Notation) 是一种轻量级的数据交换格式,基于ECMAScript的一个子集。JSON采
用独立于语言的文本格式,但也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Pyth
on等)。易于阅读、编写、解析和生成(一般用于提升网络传输速率),Json格式如表4.5所示。JSON简介Android平台自带了
JSON解析的相关API,可以将文件、输入流中的数据转化为JSON对象,然后从对象中获取JSON保存的数据内容。JSON解析在包o
rg.json下,主要有以下几个类:JSONObject。可看作是JSON对象,是系统中有关JSON定义的基本单元,其包含一对(K
ey/Value)数值。它对外部调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大
括号包裹,其中的Key和Value被冒号分隔)。JSON解析方法JSONStringer。JSON文本构建类(JSONString
er) ,该类可以帮助快速便捷的创建JSON text。其最大的优点在于可以减少格式的错误导致的程序异常,引用这个类可以自动严格按
照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON t
ext。JSON解析方法JSONArray。代表一组有序数值。将其转换为String输出,其形式使用方括号包裹,数值以逗号分隔(例
如:[value1,value2,value3]),利用简短的代码更加直观的了解其格式。该类的内部具有查询功能,get()和put
()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。该类的value类型包括:Boolean
、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。JS
ON解析方法JSONTokener。JSON解析类.JSONException。JSON.org类抛出的异常信息。JSON解析方法
传统JSON解析。第一步:生成JSON字符串,具体代码如下所示。第二步:解析JavaBean、List数组、嵌套Map的List数
组JSON字符串,具体代码如下所示。JSON解析之GSON。第一步:生成JSON字符串,具体代码如下所示。第二步:解析JSON串,
具体代码如下所示。JSON解析之FastJSON,具体代码如下所示。JSON解析实现通过如下步骤实现U酒保的酒精检测模块,具体步骤
如下所示。第一步:将UJB_01导入工程,在其基础上进一步实现UJB项目酒精检测模块。首先点击“Open an existing
Android Studio project”打开磁盘路径查找所需项目并导入,如图4.4、图4.5所示。实现如图4.6所示结果图。
第二步:新建RoundProgressBar.java实现自定义进度条编写。具体如代码CORE0404所示。第三步:调用Round
ProgressBar.java显示进度条界面fragment_home.xml。具体如代码CORE0405所示。效果如图4.7所
示。第四步:创建蓝牙服务BluetoothCommService.java,开启蓝牙监听等待连接,显示连接的状态。具体如代码COR
E0406所示。第五步:打开本机蓝牙功能。具体如代码CORE0407所示。效果如图4.8所示。第六步:创建蓝牙进行连接所需监听,进
行蓝牙设备搜索等。具体如代码CORE0408所示。第七步:对蓝牙发送连接请求,实现蓝牙搜索功能。具体如代码CORE0409所示。第
八步:实现蓝牙匹配功能。具体如代码CORE0410所示。第九步:实现配对后,进行蓝牙连接。具体如代码CORE0411所示。第十步:
连接成功后,进行酒精检测。具体如代码CORE0412所示。第十一步:在进度条RoundProgressBar.java中设计显示酒
精浓度代码。具体如代码CORE0413所示,效果如图4.9所示。第十二步:运行项目,通过酒精检测仪传回的数据,观察进度条所显示的百
分比,判断酒精浓度。如图4.2所示。本项目介绍了U酒保酒精检测模块的实现,通过本项目的学习可以了解蓝牙连接的机制和复杂JSON解析
的方法,掌握圆形进度条的使用方法。实现蓝牙连接检测设备,在界面显示酒精浓度的功能。Bluetooth 蓝牙 object 对象notation 记号 Adapter 适配器 sendMessage 发送消息 progerssBar 进度条connected 已经连接 porizontal 横向的paint 绘图 thread 线程
献花(0)
+1
(本文系大高老师首藏)