首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 蓝牙开发(3)——蓝牙的详细介绍

前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的。主要针对的是 Android 开发中的一些 API 的使用。...第一篇文章 Android 蓝牙开发(1) 主要是介绍了普通的蓝牙在 Android 开发中的运用。 第二篇文章 Android 蓝牙开发(2) 主要是介绍了低功耗蓝牙的开发。...这对于现在的穿戴设备以及各种物联网传感器来说是一个很大的突破。同时它的传输的数据就很少。 在 Android 4.3 的时候开始支持低功耗蓝牙。仅仅支持中心模式,就是只可以连接其他蓝牙外设。...这层在协议栈中是可选的,一些小型终端可能没有,但是 Android 设备上肯定有,这层是蓝牙上层和芯片的交互必经之路,对于蓝牙硬件开发者,这里的 log 能够很好的帮助解决问题。...Characteristic 实际上具有读、写、通知等权限。我们在对一个 BLE 设备发起连接成功以后,对他进行读写操作,其实就是对 Characteristic 的操作。

2.3K10

Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了...这里提到的低功耗蓝牙也会有很多人会误解为就是蓝牙4.0,但是完整的蓝牙4.0规范中实际上包括有经典蓝牙和低功耗蓝牙这两个部分,大家看看如下这张分类表就能够明白这其中的关系了。...如表中所述,现在的蓝牙实际上分为了三类:单模、双模和经典。那么,最官方的蓝牙版本称呼就是,单模蓝牙、双模蓝牙和经典蓝牙。 在这其中,最前沿的当属单模蓝牙了,也就是低功耗蓝牙。...经典蓝牙:经典蓝牙建立连接的方式实际上就是Socket的连接的建立。只不过这里不是直接用Socket,而是BluetoothSocket。...如果使用智能手机作为测试平台,其硬件条件是,蓝牙得至少是低功耗蓝牙版本,然后安卓系统的话,至少得是Android 4.3以上系统才行,因为Google在Android 4.3以上才做了BLE主设备的支持

4.9K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)

    继上一篇 Android系统源码剖析(一)---Settings 接着来介绍一下设置中某个模块的源码,本文依旧是基于Android4.42源码进行分析,分析一下蓝牙模块的实现。...android:fragment="com.android.settings.bluetooth.BluetoothSettings" ......./>    2>,所涉及到的清单配置文件中的属性详解...,清单文件中介绍了蓝牙界面启动相关的一些设置,诸如有快捷方式入口,以及是否隐藏进程等等,在这里大致对一些不常见的属性进行说明,方便查阅 android:name="......"...先介绍一下覆写的方法的作用 1>,getResource()方法,定义在SettingPreferenceFragment.java类中,默认返回的是0,方法的解释是如果想要在菜单栏上显示help item...2>,addPreferencesForActivity()方法,用于添加actionbar上的switch,代码见蓝牙布局部分 3>,onCreateView()方法,fragment的生命周期方法,

    1.6K20

    Android连续的获取蓝牙的RSSI

    基于蓝牙的RSSI可以有很多应用,要获得蓝牙的RSSI无外乎两种方法,一种就是基于扫瞄的方法,优点是Android本身支持,缺点是scan的时间比较长,并且中间过程不受控制,为了连续的测量,需要不断的...连续测量Android设备(Java)的蓝牙RSSI教程 在撰写本文时,即使存在用于获取WiFi RSSI的API,也没有可用于连续检索现有蓝牙连接的RSSI的API。...但是,对于商业化的Android设备,这可能是不可能的,因为要使用Android NDK从蓝牙HCI层调用任何函数,需要根访问。...出于实验目的,为了开发商用手持设备上的蓝牙设备,我们将通过将这些设备连接到计算机或膝上型计算机来测量这些设备的RSSI。...我们可能需要在Android设备上运行多个服务器线程(Access Tox.java),这样一来,传入的连接请求将在初始权限拒绝错误之后最终被接受。

    1.6K10

    android蓝牙4.0的知识要点

    蓝牙4.0 这次主要讲解蓝牙4.0的基本要点,作为自己的备忘录记录下来吧。首先普及一下蓝牙4.0基于Gatt协议来实现。而蓝牙4.0以下的是传统蓝牙,基于socket方式来实现。...接下来就是代码部分: 1.首先是声明权限: android:name="android.permission.BLUETOOTH"/> android:name="android.permission.BLUETOOTH_ADMIN"/> 如果你想声明你的应用程序只能在支持BLE的设备上运行,可以将下面声明包含进你的应用程序manifest...文件中: android:name="android.hardware.bluetooth_le" android:required="true">的文档。 7.有写就有读,从蓝牙设备读数据也不难。首先还是从遍历的UUID中找到关于读取蓝牙设备数据的UUID,具体哪个UUID还是要看硬件文档。

    1.1K40

    Windows Mobile上的蓝牙点对点通信

    实验室做短距离通信,蓝牙是其中主要技术之一。研究生入学复试的时候,大老板跟我们说,蓝牙的起源和一位弹钢琴的人有关,因为蓝牙用到了跳频,这个和手指在各个琴键之间跳动的现象有一定的联系。...各学科之间的碰撞,会出现一些奇妙的火花。     在Windows Mobile平台上,如何来实现蓝牙通信呢?...有好多人已经做过这方面的工作,比如在winbile论坛的“使用C#来开发.NET CF 蓝牙通信模块”,codeproject上的“Bluetooth Connection in Windows Mobile...Code     在程序启动后,首先搜索附近的蓝牙设备,搜索过程完成以后,将其设备的名字和蓝牙地址显示在下拉列表中,然后就可以进行双向的消息发送和接收了。程序运行界面如下图1所示: ?...图1:WM5和WM6上的程序运行界面     需要注意的是,在设置蓝牙的时候,如果没有将“对其他设备可见”选项打上勾,即只是将蓝牙打开,如下图2所示: ?

    1.6K100

    Android 蓝牙库 FastBLE 的使用方法

    ☕ FastBle VS 原生Android蓝牙API 原生 Android 的蓝牙 API 使用有点麻烦,要先获取设备的蓝牙适配器,接着注册广播来接受蓝牙设备信息,用完了还需要将广播给注销,相对来说有点麻烦...不好封装,可以说是原生 Android 最让人痛苦的地方,这是因为原生 Android 的代码不是很独立,与 Activity、广播等相杂糅。...但是 FastLib 封装的就很技巧,基本上能把一个操作的粒度控制在一行内,另外,代码也无需与线程、通知之类的打交道,库中已经帮我们把这些复杂的东西都做完了。...的使用 0x00 申明权限 只要使用到了蓝牙,申明权限是必不可少的,FastBle 需要的权限如下: android:name="android.permission.BLUETOOTH..." /> 这里要注意一点,如果 Android 版本高于 6.0,用户还需要打开位置信息(不光要位置权限,还需要打开位置信息)才能通过蓝牙进行扫描。

    1.5K30

    Android在app中实现蓝牙服务Service的案例

    在Android应用中,你可以通过服务(Service)来实现蓝牙数据读取。以下是一个简单的示例,演示如何创建一个Android服务以连接到蓝牙设备并读取数据。...在实际应用中,你需要确保你的应用具备蓝牙权限,并使用合适的蓝牙库进行连接和数据读取。...1.创建一个新的Android服务  首先,你需要创建一个继承自Service的类,这个服务将用于处理蓝牙连接和数据读取。...这通常需要使用Android的蓝牙API或第三方蓝牙库(如Android Bluetooth SDK或其他开源库)。...下面是一个简化的示例,假设你使用Android的蓝牙API(需要处理权限、配对等细节): import android.app.Service; import android.content.Intent

    1.1K20

    android开发之蓝牙配对连接的方法「建议收藏」

    最近在做蓝牙开锁的小项目,手机去连接单片机总是出现问题,和手机的连接也不稳定,看了不少蓝牙方面的文档,做了个关于蓝牙连接的小结。...在做android蓝牙串口连接的时候一般会使用 BluetoothSocket tmp = null; // Get a BluetoothSocket for a connection with the...catch (IOException e) { Log.e(TAG, "create() failed", e); } 然后是tmp赋给BluetoothSocket,接着调用connect方法进行蓝牙设备的连接...以下根据对蓝牙开发的一点研究可通过以下方法解决: 方法1.先进行蓝牙自动配对,配对成功,通过UUID获得BluetoothSocket,然后执行connect()方法。...2.蓝牙串口连接可通过端口 (1-30)和UUID两种方法进行操作。    3.通过UUID进行蓝牙连接最好先进行配对操作。

    3.9K40

    一个Android 蓝牙GATT数据读写的小应用

    实现一个Android APP主要需求: 1、APP连接蓝牙转以太网的转接板给底板配置广播信息; 2、广播板的状态能通过蓝牙转接板透传给APP; 蓝牙搜索,发现这些之前一个app都做过,但是读写数据没有做...要接收到蓝牙的数据,关键是读配置Enable功能:setBleNotification方法,网上这块有很多方法,最后生效的是下面的方法。...;onCharacteristicChanged 蓝牙收到数据的回调方法,网上有说是onCharacteristicRead方法,实际是这个。...= null){ notifyCallback.notifyMessage(res); } } } 5、蓝牙转接板居然还有一个NAT的问题,蓝牙转接板主动转发过来的...android.bluetooth.BluetoothProfile; import android.content.Context; import android.util.Log; import

    33810

    基于51设计的宠物防丢系统(蓝牙+Android上位机)

    二、功能与硬件介绍 单片机采用STC89C52,资料非常丰富,keil建工程的时候选择AT89C52即可。 与手机通信的蓝牙采用:HC05 串口蓝牙。...蓝牙一旦连接成功后,就需要以300ms的频率向设备发送指定的数据,保活。 3. 如果蓝牙连接上之后,没有发送数据到设备,300ms之后蜂鸣器就会报警。 4. APP上可以手动点击触发报警 5....单片机按下复位键可以清除报警 APP界面: 如果自己不想焊接,想要直接模块化搭建环境,可以直接淘宝买系统板+模块即可: 蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后...,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。...为了简化51单片机的编程代码,可以先使用电脑串口调试助手,将HC05的的参数配置完毕,再接到51单片机上。 将HC05蓝牙配置成从机模式,设置好配对密码。

    1K20

    AspectJ在android上的开发

    Android上运用AOP的思想开发,可以快速的帮助我们简化在横向开发中的重复性工作,简单的说就是把涉及到众多模块的某一类问题进行统一管理比如:性能检测、日志打印手机等。...AspectJ实际上是对AOP编程思想的一个实践,当然,除了AspectJ以外,还有很多其它的AOP实现,例如ASMDex、javassist等,但目前最好、最方便的,依然是AspectJ。...} } apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion...final def variants = project.android.applicationVariants //在全局变量中配置编译项以及,对应的log输出 variants.all { variant.../Android-AOPExample 熟悉了一遍 补充:Android-AOPExample的例子下载下来,在gradle版本再2.3.0及其以上的版本编译会出现问题 报错误:No such property

    1.3K20

    eBPF在android上的使用

    对于eBPF可以简单的理解成kernel实现了一个虚拟机机制,将类C代码编译成字节码(后文有详细解释),挂在到内核的钩子上,当钩子被触发时,kernel在虚拟机的"沙盒"中运行字节码,这样既能方便的实现很多功能...BCC在android系统上也可以运行,但是要对系统进行一定程度的修改,后续可能会写单独的文章进行讲解。对于内核开发者我还比较关注怎么自己来实现监控的功能,下文也将做简单的讲解。 ?...8)中断性能 三、eBPF框架 在开始说明之前先解释下eBPF上的名词,来帮忙更好的理解。...Q版本上的节点信息。...用户空间程序实现 下面我们需要编写用户空间的显示程序,本质上就是在用户态通过系统调用把BPF map给读出来。 ? ?

    4.5K10

    OpenCV 在 Android 上的应用

    OpenCV 介绍 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。...在移动端上使用 OpenCV 可以完成一系列图像处理的工作。 二. OpenCV 在 Android 上的配置 我在项目中使用的 OpenCV 版本是 4.x。...在 Android Studio 中创建一个 Library,将官网下载的 OpenCV 导入后,就可以直接调用 OpenCV 中 Java 类的方法。...例子两则 3.1 作为二维码识别的兜底方案 在 Android 原生开发中,二维码识别有老牌的 zxing 等开源库。为何还要使用 OpenCV 呢?...(手机回收机是一个触摸屏设备,可以通过 Android 系统来操作内部的硬件设备。) 我们事先拍一张回收机内没有物体的图作为基准图像,等到需要判断是否存在物体时再拍一张图片。

    2.2K10

    Android中的AES加密--上

    第一版 随便上晚上找了一下代码如下: //偏移量 public static final String VIPARA = "1234567876543210"; //AES 为16bytes...: KeyGenerator 密钥生成器,传入AES,说明我们最后要生成的时AES的密钥 SecureRandom 安全随机算法,他的作用时将我们的密钥经过一定的算法("SHA1PRNG"强随机算法),...第四版 KeyStore 这个是Google建议使用的,翻译如下: Android的Keystore系统可以把密钥保持在一个难以从设备中取出数据的容器中。...具体参考这篇译文Android保存私密信息-强大的keyStore(译) 源码: public class CryptoUtils { private static final String...N - Android N中不再支持“Crypto”安全供应商的相关方法 Android 9.0 加密适配 Java实现AES加密 Android KeyStore密钥存储 Android:7.0 后加密库

    4.7K20

    一个给蓝牙模块升级的Android应用小工具

    功能点不复杂,3天时间,完成一个蓝牙升级APP的工具。 4个界面: 闪屏页 主界面 蓝牙搜索界面 文件夹选择界面; 功能点: 1、闪屏页申请权限,其中包括蓝牙权限。...需要关注Android13的支持。 2、主界面操作升级功能; 显示进度,并反馈升级结果,升级日志。 3、蓝牙搜索界面搜索蓝牙设备,并进行选择。 4、文件夹选择界面选择指定的文件夹。..."@style/QDCommonTitle"                     android:text="1.打开模块蓝牙,选择指定的模块" />                 <EditText..."                     android:layout_height="50dp"                     android:hint="已选择的蓝牙模块地址"/>                 ... onClick(View view) {                 if (selectItemId == -1){                     showError("请选择搜索到的蓝牙设备

    40910
    领券