Android 手机应用开发-Android蓝牙通信
- 格式:pptx
- 大小:1.95 MB
- 文档页数:23
基于手机蓝牙遥控的万年历设计林志谋【期刊名称】《《顺德职业技术学院学报》》【年(卷),期】2019(017)004【总页数】3页(P9-11)【关键词】单片机; 万年历; 蓝牙; 安卓【作者】林志谋【作者单位】厦门海洋职业技术学院机电工程系福建厦门 361012【正文语种】中文【中图分类】TN871蓝牙技术联盟在2016年发布了第5代蓝牙技术,速度比上个版本的提升了2倍,有效距离达到了300米。
蓝牙功能已经成为安卓手机和苹果手机的标准配置,使得利用手机遥控家居设备也成为一种趋势。
万年历是人们生活中经常使用到的一种计时工具,可以方便查询具体的时间和日期。
本文设计了一种新型的万年历,主控模块用STC 单片机,生成时间信号用DS1302时钟芯片,温度传感模块采用DS18B20芯片,显示时间、日期和温度则采用LCD1602。
蓝牙串口通信模块,通过与安卓手机端的蓝牙进行连接配对,从而接收从手机端APP 接收发送过来的时间和日期的调节指令,再把调节指令传递给单片机,然后单片机去调整液晶模块时间和日期的显示。
对比红外遥控的控制方式,它不需要额外的控制终端,具有成本低廉,控制方便的优势,可以广泛应用于各种家电设备遥控的场合。
1 新型万年历软硬件系统设计新型的万年历采用手机蓝牙进行遥控,该系统的设计总体框图如图1所示。
图1 新型万年历设计图单片机主控模块采用STC公司的芯片作为主控,具有较高的速度,较低的功耗和超强抗干扰能力,具有很好的性价比[1]。
温度模块采用DS18B20温度传感器。
它连接简单方便,一条线就可以跟单片机模块双向通信;温度测量的范围宽,测量精度高,体积小巧、价格经济实惠,可以用来构建的经济可靠的温度测量系统。
时间生成模块采用DS1302时钟芯片,DS1302具有较高的性能、较低的功耗,并且带RAM 的一种实时时钟电路[2]。
蓝牙通信模块用HC-05蓝牙模块,这款主从一体蓝牙串口模块[3]具有较高的性能,使用蓝牙V2.0协议标准,在各种便携设备上广泛应用,比如电脑、手机、平板等智能终端,与单片机串口连接时,两者之间相互可以读写。
上次成功实现了通过笔记本电脑蓝牙来控制智能小车机器人的运动,但是通过电脑控制毕竟不方便,于是乎~本人打算将控制程序移植到手机上。
目前主流的手机操作系统有塞班、安卓(Android)、Windows Mobile,对比了一下,首先,塞班是用C++写的,这么多门语言我唯独看到C++就头大···,放弃了···,Windows Moblie 其实和之前发的电脑端程序基本是一样的,也就没什么意思了,最后决定选择目前正火的Android手机作为控制平台。
Android是个开源的应用,使用Java语言对其编程。
于是这次的开发我选用Eclipse作为开发工具,用Java语言开发手机端的控制程序,由于之前对Android的蓝牙通信这块涉及不多,一开始感觉有点小茫然,而网上也少有这方面的例程,有少数人做出了类似的东西,但是只传了个视频装X!雪特····经过几天的研究,最终确定了手机蓝牙通信其实就是Socket编程,再经过一番编写和调试,昨晚终于大功告成!这是视频:下面开始介绍Android手机端控制程序的编写:首先打开Eclipse,当然之前的Java开发环境和安卓开发工具自己得先配置好,这里就不多说了,网上教程一大摞。
然后新建一个Android项目,修改布局文件main.xml,代码如下:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayoutandroid:id="@+id/widget0"android:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="/apk/res/android"><Buttonandroid:id="@+id/btnF"android:layout_width="100px"android:layout_height="60px"android:text="前进"android:layout_x="130px"android:layout_y="62px"></Button><Buttonandroid:id="@+id/btnL"android:layout_width="100px"android:layout_height="60px"android:text="左转"android:layout_x="20px"android:layout_y="152px"></Button><Buttonandroid:id="@+id/btnR"android:layout_width="100px"android:layout_height="60px"android:text="右转"android:layout_x="240px"android:layout_y="152px"></Button><Buttonandroid:id="@+id/btnB"android:layout_width="100px"android:layout_height="60px"android:text="后退"android:layout_x="130px"android:layout_y="242px"></Button><Buttonandroid:id="@+id/btnS"android:layout_width="100px"android:layout_height="60px"android:text="停止"android:layout_x="130px"android:layout_y="152px"></Button></AbsoluteLayout>这个布局文件的效果就是如视频中所示的手机操作界面。
Android上成功实现了蓝牙的一些Profile前段时间做蓝牙方面的开发,Google的Android只实现了Handset/Handfree和A2DP/AVRCP等Profile,而其它常用的Profile如HID/DUN/SPP/OPP/FTP/PAN等却没有实现,并且Google方面关于何时实现也没有一个时间表。
前段时间我实现了HID/DUN/SPP三个Profile,下一步实现OPP/FTP等Profile。
具体的开发其实也简单,我是参照A2DP的代码进行的相关Profile的实现。
Android的Handset/Handfree的实现方式和A2DP/AVRCP的方式有很大的不同,Handset/Handfree是直接在bluez的RFCOMM Socket上开发的,没有利用bluez的audio plugin,而A2DP/AVRCP是在bluez的audio plugin基础上开发的,所以大大降低了实现的难度。
其实bluez的audio plugin上也有Handset/Handfree的实现,但不知道为什么Google没有用它,而要在RFCOMM Socket上自己实现一个,这使得Handset/Handfree的实现显得比较复杂。
HID要用到bluez的input plugin,Android已经把它编译进去了,在system/lib/bluez-plugin/input.so下,与input.so一起的还有audio.so库,那是供A2DP/AVRCP用的。
参照frameworks/base/core/jni /android_server_BluetoothA2dpService.cpp,自己写一个HID用的的.cpp文件,其中跟A2DP一样利用 DBUS调用input.so库的CreateDevice/Connect/Disconnect 等函数,具体源码在external/bluez /utils/input/manager.c和external/bluez/utils/input/device.c 中。
基于Android手机蓝牙控制的智能小车设计汤莉莉;黄伟【摘要】This design is based on the Android,and provides a new research method for wireless smart car control by means of the bluetooth communication technology. With more and more wide use of Bluetooth in people's lives,a wireless smart car controlled by Bluetooth was designed in combination with of Bluetooth,wireless electronictechnology,microcontroller tech⁃nology and Android mobile intelligent terminal platform,as well as car hardware. The forward move,backward move,right front turn,left front turn,right rear turn,left rear turn and other functions of the smart car were achieved with bluetooth controltech⁃nology. In the course of the car moving,the car’s movement state can be controlled and changed by means of APP interfacebut⁃ton,gravity,voice through the Android mobile client. It provides a new design method for vehicle⁃mounted electronics for wire⁃less communication. It also provides a certain reference significance for the future design of wireless car and modern smart home.%基于Android平台,借助于蓝牙通信技术,为无线智能小车的设计提供一种新的研究方法。
Android蓝⽛库FastBle的基础⼊门使⽤前⾔最近在做物联⽹课设,过程中需要⽤到Android的蓝⽛API,奈何原⽣的蓝⽛API使⽤有点⿇烦。
于是上⽹搜索看有没有好⽤的Android蓝⽛库,然后发现了这个宝贝,给⼤家分享⼀下。
FastBle VS 原⽣Android蓝⽛API原⽣Android的蓝⽛API使⽤有点⿇烦,要先获取设备的蓝⽛适配器,接着注册⼴播来接受蓝⽛设备信息,⽤完了还需要将⼴播给注销,相对来说有点⿇烦。
不好封装,可以说是原⽣Android最让⼈痛苦的地⽅,这是因为原⽣Android的代码不是很独⽴,与Activity、⼴播等相杂糅。
市⾯上的蓝⽛库也是少之⼜少,先看了看BleLib,感觉还是换汤不换药,⽤起来⼀点也不简洁。
但是FastLib封装的就很技巧,基本上能把⼀个操作的粒度控制在⼀⾏内,另外,代码也⽆需与线程、通知之类的打交道,库中已经帮我们把这些复杂的东西都做完了。
它的⽂档也相对⽐较完整,⼤家可以查看官⽅⽂档来使⽤它:FastBle的使⽤0x00 申明权限只要使⽤到了蓝⽛,申明权限是必不可少的,FastBle需要的权限如下:<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />这⾥要注意⼀点,如果Android版本⾼于6.0,⽤户还需要打开位置信息(不光要位置权限,还需要打开位置信息)才能通过蓝⽛进⾏扫描。
使用React Native进行蓝牙通信开发一、介绍React Native是一个基于JavaScript的开源框架,可用于跨平台移动应用程序的开发。
蓝牙通信是一种无线通信技术,可以在设备之间进行数据传输。
本文将介绍如何使用React Native进行蓝牙通信开发。
二、准备工作在开始开发之前,需要进行一些准备工作。
首先,确保已经安装了Node.js和React Native的开发环境。
其次,确保你的设备支持蓝牙功能,并且已经打开了蓝牙。
三、创建React Native项目首先,打开终端或命令提示符窗口,进入你想要创建项目的目录。
然后运行以下命令来创建一个新的React Native项目:```npx react-native init BluetoothApp```这将在目录中创建一个名为BluetoothApp的新项目。
四、安装依赖进入项目目录后,运行以下命令来安装蓝牙相关的依赖:```cd BluetoothAppnpm install react-native-ble-managernpm install react-native-ble-plx```这将安装React Native蓝牙管理器和蓝牙插件的依赖。
五、配置Android项目对于Android平台,需要进行一些配置。
首先,打开`android/app/src/main/AndroidManifest.xml`文件,并添加以下权限:```xml<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" /> ```然后,打开`android/app/build.gradle`文件,并添加以下内容:```gradleimplementation project(':react-native-ble-manager')implementation project(':react-native-ble-plx')```最后,在`android/settings.gradle`文件中添加以下内容:```gradleinclude ':react-native-ble-manager'project(':react-native-ble-manager').projectDir = newFile(rootProject.projectDir, '../node_modules/react-native-ble-manager/android')include ':react-native-ble-plx'project(':react-native-ble-plx').projectDir = newFile(rootProject.projectDir, '../node_modules/react-native-ble-plx/android') ```六、编写蓝牙通信代码首先,打开`App.js`文件并导入所需的模块和组件:```jsximport React, { useEffect } from 'react';import { BleManager } from 'react-native-ble-manager';import { View, Text, Button } from 'react-native';```然后,在函数组件中初始化蓝牙管理器:```jsxconst App = () => {useEffect(() => {BleManager.start({ showAlert: false });}, []);return (<View><Text>蓝牙通信开发</Text>{/* 在这里添加你的蓝牙通信代码 */}</View>);};```接下来,我们可以在`return`语句中添加需要的蓝牙通信代码。
Android跟蓝牙耳机建立连接有两种方式Android 跟蓝牙耳机建立连接有两种方式。
1. Android 主动跟蓝牙耳机连BluetoothSettings 中和蓝牙耳机配对上之后,BluetoothHeadsetService 会收到BONDING_CREATED_ACTION,这个时候BluetoothHeadsetService 会主动去和蓝牙耳机建立RFCOMM 连接。
if(action.equals(BluetoothIntent.BONDING_CREATED_AC TION)) {if (mState ==BluetoothHeadset.STATE_DISCONNECTED) {// Lets try and initiate an RFCOMM connectiontry {mBinder.connectHeadset(address, null);} catch (RemoteException e) {}}} RFCOMM 连接的真正实现是在ConnectionThread 中,它分两步,第一步先通过SDPClient 查询蓝牙设备时候支持Headset 和Handsfree profile。
// 1) SDP querySDPClient client = SDPClient.getSDPClient(address);if (DBG) log("Connecting to SDP server (" + address + ")...");if (!client.connectSDPAsync()) {Log.e(TAG, "Failed to start SDP connection to " + address);mConnectingStatusHandler.obtainMessage(SDP_ERROR ).sendToTarget();client.disconnectSDP();return;}if (isInterrupted()) {client.disconnectSDP();return;}if (!client.waitForSDPAsyncConnect(20000)) { // 20 secs if (DBG) log("Failed to make SDP connection to " + address);mConnectingStatusHandler.obtainMessage(SDP_ERROR ).sendToTarget();client.disconnectSDP();return;}if (DBG) log("SDP server connected (" + address + ")");int headsetChannel = client.isHeadset();if (DBG) log("headset channel = " + headsetChannel);int handsfreeChannel = client.isHandsfree();if (DBG) log("handsfree channel = " + handsfreeChannel); client.disconnectSDP();第2步才是去真正建立RFCOMM 连接。
android ble createbond用法概述及解释说明1. 引言1.1 概述本文将详细介绍Android BLE(蓝牙低功耗)中的createBond用法,并对其进行解释和说明。
蓝牙低功耗技术已经广泛应用于智能设备、无线音频设备以及其他物联网场景。
而createBond方法则是在Android平台上建立蓝牙设备绑定的一种关键方法。
1.2 文章结构文章主要分为四个部分:引言、Android BLE createBond用法、解释说明和结论。
首先,引言部分将对文章的背景和重点进行概述,并简要介绍文章结构。
然后,在Android BLE createBond用法部分,我们将详细讨论createBond方法的定义、作用以及使用步骤。
接下来,在解释说明部分,我们将探讨createBond 方法的参数和返回值,同时介绍与蓝牙配对相关的流程,并提供可能遇到的问题及相应的解决方案。
最后,在结论部分,我们会总结createBond方法的使用场景和优劣势,并展望其在未来发展中可能扮演的角色。
1.3 目的本文旨在帮助读者深入了解并掌握Android BLE中createBond方法的使用方式。
通过全面解析该方法,读者可以更好地理解其在蓝牙设备绑定过程中的作用和意义,并在实际开发中更加灵活地应用它。
同时,通过对createBond方法涉及的技术和流程进行解释和说明,读者还可以对蓝牙低功耗技术有更深入的理解,并为未来相关项目的设计和开发提供指导和参考。
总之,本文旨在为Android BLE开发者和研究人员提供一个全面而清晰的createBond用法指南。
2. Android BLE createBond用法2.1 什么是createBond方法createBond方法是Android BLE中的一个函数,用于建立与蓝牙设备的配对关系。
在Android开发中,BLE(Bluetooth Low Energy)是一种低功耗蓝牙技术,用于在设备之间进行短距离通信。