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

    xiaoxiao2021-12-15  32

    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"/> 12 12

    四.蓝牙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) 123456789101112131415161718192021222324252627 123456789101112131415161718192021222324252627

    2.BluetoothClass

    远程蓝牙设备,同BluetoothAdapter类似,有诸多相同的api,包括getName,getAddress,但是他是获取已经连接设备的信息的,相同的方法就不说了,说个不同的吧 //根据UUID创建并返回一个BluetoothSocket createRfcommSocketToServiceRecord(UUIDuuid) 12 12

    3.BluetoothServerSocket

    看到Socket,你就大致知道这个玩意是干嘛的了,他和我们Android上的Socket用法还有点类似,我们来看一下常用的方法 //区别:后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行! accept() accept(inttimeout) //关闭通信 close() 12345 12345

    4.BluetoothSocket

    他和上面那个相反,他没有Server,就代表他是客户端,看看他有哪些常用的方法 //连接 connect() //关闭 close() //获取输入流 getInptuStream() //获取输出流 getOutputStream() //获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备 getRemoteDevice() 12345678910 12345678910 其他几个倒是不怎么用到

    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); } } 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 好的,这样就可以获取到相关信息了

    这篇算是一个开头,毕竟是由浅到深,我们慢慢来,Demo的话,就算了,代码都贴出来了,记得添加权限哦,我们下一篇就开始讲搜索和连接了

    Demo下载:http://download.csdn.net/detail/qq_26787115/9413448

    Android BLE与终端通信(二)——Android Bluetooth基础搜索蓝牙设备显示列表

    转载请注明原文地址: https://ju.6miu.com/read-1000390.html

    最新回复(0)