Android学习Bluetooth总结

蓝牙是API level 5 就有的一个技术 由于我对这个技术感兴趣 就学习了下 将学到的知识和大家分享下

客户端
private static final UUID MY_UUID_SECURE = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66"); //安全的
private static final UUID MY_UUID_INSECURE = UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66"); //不安全的

首先我们先将蓝牙的权限加上
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>

要想扫描到蓝牙 蓝牙对方必须是可见的
通过intent 启动 BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE 就可以将蓝牙可见

蓝牙可见了我们就获取获取蓝牙的适配器

BluetoothAdapter.getDefaultBluetoothAdapter();

在通过蓝牙适配器的startDiscovery() 方法开始扫描周边可见的蓝牙 通过绑定广播过滤 new IntentFilter(BluetoothDevice.ACTION_FOUND) //代表找到了蓝牙

BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); //获取到蓝牙的驱动 根据驱动来获取 地址及其相关信息
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
}

也可以通过getBondedDevices() 获取驱动 这个方法返回的是一个集合

要想连接服务器 我们通过驱动获取地址 通过getRemoteDevice(address); 获取到指定蓝牙的驱动

在通过这个驱动的 createInsecureRfcommSocketToServiceRecord(MY_UUID_INSECURE); //这个是不安全的是不需要验证的

createRfcommSocketToServiceRecord(MY_UUID_SECURE); //这个是安全的需要验证的

他俩都会返回一个BluetoothSocket 对象 我们通过他调用 connect() 和服务器端连接

如果连接成功 就可以通过他获取input 或 output 流 来写去和读取

服务器端

我们通过 BlueAdapter的 listenUsingInsecureRfcommWithServiceRecord(NAME_INSECURE,MY_UUID_INSECURE);//不安全的 这俩个方法 是与客户端的俩个方法对应的

listenUsingRfcommWithServiceRecord(NAME_SECURE, MY_UUID_SECURE); //安全的

他们会返回一个BluetoothServerSocket 对象 在通过这个对象的 accpet()方法(注意这个方法是会阻塞主线程的 我们要将他放到子线程 ) 返回一个BluetoothSocket 对象

在通过socket对象 获取input或output流来传输数据

蓝牙讲解完毕,第一次写博客还望大牛指教

时间: 2024-10-17 20:36:12

Android学习Bluetooth总结的相关文章

深入了解Android蓝牙Bluetooth——《进阶篇》

在 [深入了解Android蓝牙Bluetooth--<基础篇>](http://blog.csdn.net/androidstarjack/article/details/60468468)一篇中我们对蓝牙的各个版本的有了一个认识,蓝牙版本的历程及其优劣式介绍.那么接下来咱们就深入一点继续开车进入BLE的进及篇章. 蓝牙BLE4.x BLE分为三部分: Service Characteristic Descriptor 这三部分都用UUID作为唯一标识符.UUID为这种格式:0000ffe1

android -- 蓝牙 bluetooth (四)OPP文件传输

在前面android -- 蓝牙 bluetooth (一) 入门文章结尾中提到了会按四个方面来写这系列的文章,前面已写了蓝牙打开和蓝牙搜索,这次一起来看下蓝牙文件分享的流程,也就是蓝牙应用opp目录下的代码,作为蓝牙最基本的一个功能,这部分的代码在之前的版本中就已经有了,新旧版本代码对比很多类名都是一样的,这一部分新东西不多,写在这里帮助大家梳理下流程吧. 有没有这种感觉,智能手机的普及让我们提高了一点对蓝牙的关注,手机间使用蓝牙互传文件应该是最常用的应用之一,手机与电脑也可以通过蓝牙做同样的

android -- 蓝牙 bluetooth (五)接电话与听音乐

前段时间似乎所有的事情都赶在一起,回家.集体出游.出差,折腾了近一个月,终于算暂时清静了,但清静只是暂时,估计马上又要出差了,所以赶紧把蓝牙这一部分的文章了结下,按之前提到的目录,本文是关于蓝牙接打电话和听音乐的流程分析,对应蓝牙HFP/A2DP的profile,由于这部分也算是蓝牙的经典功能,所以代码流程并不是很复杂,当然不复杂仅是对于代码调用流程而言,对于HFP/A2DP协议相关的东东还没有精力去看,其难易程序也无法评价.下面从两个点HFP与A2DP来展开本文的代码跟踪: 正文开始之前,先说

深入了解Android蓝牙Bluetooth ——《总结篇》

在我的上两篇博文中讲解了有关android蓝牙的认识以及API的相关的介绍,蓝牙BLE的搜索,连接以及读取. 没有了解的童鞋们请参考: 深入了解Android蓝牙Bluetooth--<基础篇> 深入了解Android蓝牙Bluetooth--<进阶篇> 目前项目中的效果图: 接下来我们就对蓝牙BLE4.0进行一下总结. 蓝牙API Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level

Android学习笔记(一):基本概念

本文内容引用于<Android开发教程&笔记> Android的概念: Android是一个专门针对移动设备的软件及,它包括一个操作系统,中间件和一些重要的应用程序.Beta版的Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口. 特性 • 应用程序框架 支持组件的重用与替换• Dalvik 虚拟机 专为移动设备优化• 集成的浏览器 基于开源的 WebKit 引擎• 优化的图形库 包括定制的2D 图形库,3D 图形库基于

Android 学习资料分享(2015 版)

我是如何自学Android,资料分享(2015 版) Tikitoo2015.02.11 10:21 1713 字 3932 次阅读 自己学了两三个月的Android,最近花了一周左右的时间写了个App--Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的--<我是如何自学Android,资料分享>,如果是初学Android 的话,不应该错过的,而今天这篇分享好这篇文章,相对于第一次写的会有所提升,所以建议先把上一篇看了,再

android学习路线:如何成长为高级工程师

博主参加了2014 CSDN博客之星评选,帮我投一票吧.点击给我投票前言之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲android学习路线,所以我决定写一篇博客,来说明这个问题.既然有不少小伙伴来咨询这个问题,说明大家都还是想快速地提高技术,毕竟技术的提高是职业发展中不可或缺的一步,技术好了,才能得到认可,才能升职加薪.一般来说,快速提高技术是不太容易的,但是通过正确的方法加上辛勤的汗水是可以缩短这个过程的.或许有人会问,你凭什么来写这个学习路线

Android学习系列(17)--App列表之圆角ListView(续)

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜.上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快

Android学习笔记——关于onConfigurationChanged

从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: android:configChanges="orientation|keyboard|keyboardHidden" 通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChan