Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址

Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端通信技术,无奈一直心不在此,但是真当自己要使用的时候还是比较迷茫,所以最近也有意向来学习这一块,同时,把自己的学习经历分享出来

一.摘要

Android智能硬件前几年野一直不温不火的,到了现在却热火朝天了,各种智能手环,智能手表,智能家居等,而使用BLE这个方向也越来越多,而这方面的资料却是真的很少,可以说少得可怜,所以也打算往这块深入学习一下,有兴趣的可以一起学习!

二.新建工程BLEDemo

Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址_第1张图片

三.蓝牙权限

要想使用蓝牙,权限是少不了的
 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

四.蓝牙API

Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址_第2张图片
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创建并返回BluetoothServerSocketlistenUsingRfcommWithServiceRecord(String name,UUID uuid)

2.BluetoothClass

远程蓝牙设备,同BluetoothAdapter类似,有诸多相同的api,包括getName,getAddress,但是他是获取已经连接设备的信息的,相同的方法就不说了,说个不同的吧
//根据UUID创建并返回一个BluetoothSocketcreateRfcommSocketToServiceRecord(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基础搜索蓝牙设备显示列表

更多相关文章

  1. Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块
  2. Millennial Media:2011年8月全球移动设备广告市场占有率Android第
  3. 据报道,微软正考虑支持Windows手机或Android的多系统设备
  4. 通过wifi连接android设备的方法
  5. 自定义HID设备与Android设备通信
  6. Android 蓝牙对等通信初探
  7. 【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附De
  8. android之获取设备唯一标识符
  9. Android学习路线(十六)支持不同设备

随机推荐

  1. android 中buildToolsVersion和dependenc
  2. android zxing生成二维码
  3. .net程序员转战android第一篇---环境部署
  4. android submenu
  5. android的Drawable
  6. android assets/raw 大文件读取
  7. Android 双击和手势的图片缩放
  8. android HttpClient 上传图片
  9. Android 权限管理框架
  10. 迁移到Androidx的常用依赖映射