Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端通信技术,无奈一直心不在此,但是真当自己要使用的时候还是比较迷茫,所以最近也有意向来学习这一块,同时,把自己的学习经历分享出来
一.摘要
Android智能硬件前几年野一直不温不火的,到了现在却热火朝天了,各种智能手环,智能手表,智能家居等,而使用BLE这个方向也越来越多,而这方面的资料却是真的很少,可以说少得可怜,所以也打算往这块深入学习一下,有兴趣的可以一起学习!
二.新建工程BLEDemo
三.蓝牙权限
要想使用蓝牙,权限是少不了的
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
四.蓝牙API
Android所有关于蓝牙开发的类都在android.bluetooth包下
1.BluetoothAdapter
蓝牙适配器,获取本地蓝牙,常用的方法有:
//开始搜索
startDiscovery()
//取消搜索
cancelDiscovery()
//直接打开蓝牙
enable()
//直接关闭蓝牙
disable()
//弹窗申请权限打开蓝牙
Intemtenabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler,reCode);
//获得本地蓝牙名字
getName()
//本地蓝牙地址
getAddress()
//获取本地蓝牙适配器
getDefaultAdapter()
//根据蓝牙地址获取远程蓝牙设备
getRemoteDevice(String address)
//获取本地蓝牙适配器当前状态
getState()
//判断当前是否正在查找设备
isDiscovering()
//判断蓝牙是否打开
isEnabled()
//根据名称,UUID创建并返回BluetoothServerSocket
listenUsingRfcommWithServiceRecord(String name,UUID uuid)
2.BluetoothClass
远程蓝牙设备,同BluetoothAdapter类似,有诸多相同的api,包括getName,getAddress,但是他是获取已经连接设备的信息的,相同的方法就不说了,说个不同的吧
//根据UUID创建并返回一个BluetoothSocket
createRfcommSocketToServiceRecord(UUIDuuid)
3.BluetoothServerSocket
看到Socket,你就大致知道这个玩意是干嘛的了,他和我们Android上的Socket用法还有点类似,我们来看一下常用的方法
//区别:后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行!
accept()
accept(inttimeout)
//关闭通信
close()
4.BluetoothSocket
他和上面那个相反,他没有Server,就代表他是客户端,看看他有哪些常用的方法
//连接
connect()
//关闭
close()
//获取输入流
getInptuStream()
//获取输出流
getOutputStream()
//获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备
getRemoteDevice()
其他几个倒是不怎么用到
5.BluetoothClass.Device
6.BluetoothClass.Device.Major
7.BluetoothClass.Service
8.BluetoothDevice
五.搭建蓝牙环境
这里指的不是说要下载什么,只是我们运用蓝牙的时候需要做的一些准备
package com.lgl.bledemo;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private BluetoothAdapter mBluetoothAdapter;
private static final int REQUEST_ENABLE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取本地蓝牙适配器
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
//判断是否硬件支持蓝牙
if (mBluetoothAdapter == null) {
Toast.makeText(this, "本地蓝牙不可用", Toast.LENGTH_SHORT).show();
//退出应用
finish();
}
//判断是否打开蓝牙
if (!mBluetoothAdapter.isEnabled()) {
//弹出对话框提示用户是后打开
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, REQUEST_ENABLE);
//不做提示,强行打开
// mBluetoothAdapter.enable();
}
//获取本地蓝牙名称
String name = mBluetoothAdapter.getName();
//获取本地蓝牙地址
String address = mBluetoothAdapter.getAddress();
//打印相关信息
Log.i("BLE Name", name);
Log.i("BLE Address", address);
}
}
好的,这样就可以获取到相关信息了
这篇算是一个开头,毕竟是由浅到深,我们慢慢来,Demo的话,就算了,代码都贴出来了,记得添加权限哦,我们下一篇就开始讲搜索和连接了
Demo下载:http://download.csdn.net/detail/qq_26787115/9413448
Android BLE与终端通信(二)——Android Bluetooth基础搜索蓝牙设备显示列表
Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址的更多相关文章
- Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表
Android BLE与终端通信(二)--Android Bluetooth基础搜索蓝牙设备显示列表 摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟, ...
- Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探
Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
Android BLE与终端通信(四)--实现服务器与客户端即时通讯功能 前面几篇一直在讲一些基础,其实说实话,蓝牙主要为多的还是一些概念性的东西,当你把概念都熟悉了之后,你会很简单的就可以实现一些逻 ...
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
- Android BLE与终端通信(三)——client与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--client与服务端通信过程以及实现数据通信 前面的终究仅仅是小知识点.上不了台面,也仅仅能算是起到一个科普的作用.而同步到实际的开发上去,今天就来延续前两篇 ...
- php获取ios或android通过文件头(header)传过来的坐标,通过百度接口获取具体城市和地址,并存入到session中。
首先,在function.php方法文件中封装一个获取header头文件的方法. if (!function_exists('getallheaders')) { function getallhea ...
- Android BLE开发——Android手机与BLE终端通信初识
蓝牙BLE官方Demo下载地址: http://download.csdn.net/detail/lqw770737185/8116019参考博客地址: http://www.eoeandr ...
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...
- Android和BLE模块连接通信
首先,进行一下科普: 1.BLE(Bluetooth Low Energy),蓝牙4.0核心profile,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输,缺点:数据传输速率低,由于其具有低 ...
随机推荐
- JBOSS EAP6 系列二 客户端访问位于EAR中的EJB时,jndi name要遵守的规则
EJB 的 jndi语法(在整个调用远程ejb的过程中语法的遵循是相当重要的) 参见jboss-as-quickstarts-7.1.1.CR2\ejb-remote\client\src\main\ ...
- Dynamics CRM2013 流程拷贝
在CRM中工作流是一个非常不错的功能,在实际业务场景中能满足各种业务需求.在我们设置一个工作流的时候,同一个实体一个逻辑功能可能需要多个工作流来实现,而多个工作流的不同之处可能只是启动时间或者是步骤中 ...
- 【一天一道LeetCode】#225. Implement Stack using Queues
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Impleme ...
- Hibernate之持久化状态
可持久化对象有以下三种状态: 临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失.随时可能被垃圾回收器 ...
- Android开发学习之路--Broadcast Receiver之初体验
学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...
- blob2clob/clob2blob研究
一.两种方法实现 blob到clob的转换 CREATE OR REPLACE FUNCTION blob2clob(v_blob_in IN BLOB) RETURN CLOB IS v_fi ...
- 小文本——Cookies
http协议的无状态性导致在需要会话的场景下寸步难行,例如一个网站为了方便用户,在一段时间内登录过改网站的浏览器客户端实现自动登录,为实现这种客户端与服务器之间的会话机制需要额外的一些标识,http头 ...
- 《java入门第一季》模拟用户登陆注册案例集合版
需求:校验用户名和密码,登陆成功后玩猜数字小游戏. 在这里先写集合版.后面还有IO版.数据库版. 一.猜数字小游戏类: 猜数字小游戏的代码见博客:http://blog.csdn.net/qq_320 ...
- 联发科安卓6.0项目的到来的第一个难题:tar的分包与并包
tar 分包压缩与合并 今天是个高兴的日子,迎来了新项目----联发科平板.但是遇到了难题,tar的分包压缩与合并居然在资料书上找不 到,于是我赶紧百度,找到了相关资料. 在工程目录下遇到了大量的gz ...
- 4.5、Libgdx运行日志管理
(原文:http://www.libgdx.cn/topic/47/4-5-libgdx%E8%BF%90%E8%A1%8C%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86) ...