Android BLE: android平台上连接ble(蓝牙低功耗设备)的demo,包含打开、扫描蓝牙、连接、通信、断开连接各种功能。

您所在的位置:网站首页 手机拍片子软件叫什么 Android BLE: android平台上连接ble(蓝牙低功耗设备)的demo,包含打开、扫描蓝牙、连接、通信、断开连接各种功能。

Android BLE: android平台上连接ble(蓝牙低功耗设备)的demo,包含打开、扫描蓝牙、连接、通信、断开连接各种功能。

2024-07-16 08:41:15| 来源: 网络整理| 查看: 265

参考网址https://www.jianshu.com/p/2dba7f067372,android蓝牙BLE(一) —— 扫描

新建工程。在工程的AndroidManifest添加蓝牙权限

在Activity也要动态申请权限,添加下面代码,在启动蓝牙功能前调用initPermission方法申请权限。

//申请多个权限 //1、首先声明一个数组permissions,将需要的权限都放在里面 String[] permissions = new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}; //2、创建一个mPermissionList,逐个判断哪些权限未授予,未授予的权限存储到mPerrrmissionList中 List mPermissionList = new ArrayList(); private final int mRequestCode = 200;//权限请求码 //权限判断和申请 private void initPermission() { mPermissionList.clear();//清空没有通过的权限 //逐个判断你要的权限是否已经通过 for (int i = 0; i < permissions.length; i++) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission( permissions[i]) != PackageManager.PERMISSION_GRANTED) { mPermissionList.add(permissions[i]);//添加还未授予的权限 } } } //申请权限 if (mPermissionList.size() > 0) {//有权限没有通过,需要申请 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(permissions, mRequestCode); } } } @Override public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { switch (permsRequestCode) { case 200:{ initPermission(); }break; } }

获取BluetoothManager和BluetoothAdapt,BluetoothAdapt具备启动蓝牙和扫描蓝牙列表的功能。

//首先获取BluetoothManager BluetoothManager bluetoothManager=(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE); //获取BluetoothAdapter BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();

判断蓝牙是否开启,蓝牙开启后开始扫描。

if (!mBluetoothAdapter.isEnabled()) { boolean enable = mBluetoothAdapter.enable(); //返回值表示 是否成功打开了蓝牙功能 if (enable){ return; } } if(android.os.Build.VERSION.SDK_INT >= 21) { //标记当前的为扫描状态 mScanning = true; //获取5.0新添的扫描类 if (mBLEScanner == null){ //mBLEScanner是5.0新添加的扫描类,通过BluetoothAdapter实例获取。 mBLEScanner = mBluetoothAdapter.getBluetoothLeScanner(); } //开始扫描 //mScanCallback是ScanCallback实例。 mBLEScanner.startScan(mScanCallback); } else { //标记当前的为扫描状态 mScanning = true; //5.0以下 开始扫描 //mLeScanCallback是BluetoothAdapter.LeScanCallback实例 mBluetoothAdapter.startLeScan(mLeScanCallback); } //超过SCAN_TIME时间后停止搜索 mHandler.postDelayed(new Runnable() { @Override public void run() { //停止扫描设备 if(android.os.Build.VERSION.SDK_INT >= 21) { //标记当前的为未扫描状态 mScanning = false; mBLEScanner.stopScan(mScanCallback); } else { //标记当前的为未扫描状态 mScanning = false; //5.0以下 停止扫描 mBluetoothAdapter.stopLeScan(mLeScanCallback); } } }, SCAN_TIME);

扫描的方法需要提供对应的callback,callback类里面的函数里面可以得到扫描得到的蓝牙列表。可以用个列表数组添加扫描得到的设备,记得在开始扫描蓝牙前把列表数组清空。

/** * 搜索蓝牙的结果 */ private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { //在这里可以把搜索到的设备保存起来 //device.getName();获取蓝牙设备名字 //device.getAddress();获取蓝牙设备mac地址 //这里的rssi即信号强度,即手机与设备之间的信号强度。 if(device.getName()==null){ return; } for(int i=0; i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭