android 开发之蓝牙开发
最近项目开发中蓝牙打印机需要用到蓝牙,所以在这里对蓝牙知识进行一个梳理和总结。
安卓6.0权限问题:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
<!-- 允许程序连接到已配对的蓝牙设备 --><uses-permission android:name="android.permission.BLUETOOTH"/><!-- 允许程序发现和配对蓝牙设备 --><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><!-- 允许程序发现和配对蓝牙设备 --><uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/><!--地理位置--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
boolean result = mBluetoothAdapter.enable();
b、通过一个intent:
6. if (!mBluetoothAdapter.isEnabled()) //未打开蓝牙,才需要打开蓝牙 7. { 8. Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 9. startActivityForResult(intent, REQUEST_OPEN_BT_CODE); //自己定义的code,结果码10. //会以Dialog样式显示一个Activity , 我们可以在onActivityResult()方法去处理返回值 11. }
5、关闭蓝牙
public class BtUtil {/*** 判断蓝牙是否打开** @return boolean*/public static boolean isOpen(BluetoothAdapter adapter) {if (null != adapter) {return adapter.isEnabled();}return false;}/*** 搜索蓝牙设备*/public static void searchDevices(BluetoothAdapter adapter) {// 寻找蓝牙设备,android会将查找到的设备以广播形式发出去if (null != adapter) {adapter.startDiscovery();}}/*** 取消搜索蓝牙设备*/public static void cancelDiscovery(BluetoothAdapter adapter) {if (null != adapter) {adapter.cancelDiscovery();}}/*** register bluetooth receiver** @param receiver bluetooth broadcast receiver* @param activity activity*/public static void registerBluetoothReceiver(BroadcastReceiver receiver, Activity activity) {if (null == receiver || null == activity) {return;}IntentFilter intentFilter = new IntentFilter();//start discoveryintentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);//finish discoveryintentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//bluetooth status changeintentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);//found deviceintentFilter.addAction(BluetoothDevice.ACTION_FOUND);//bond status changeintentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);//pairing deviceintentFilter.addAction("android.bluetooth.device.action.PAIRING_REQUEST");activity.registerReceiver(receiver, intentFilter);}/*** unregister bluetooth receiver** @param receiver bluetooth broadcast receiver* @param activity activity*/public static void unregisterBluetoothReceiver(BroadcastReceiver receiver, Activity activity) {if (null == receiver || null == activity) {return;}activity.unregisterReceiver(receiver);}}
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);switch (device.getBondState()) {case BluetoothDevice.BOND_BONDING://正在配对Log.d("BlueToothTestActivity", "正在配对......");break;case BluetoothDevice.BOND_BONDED://配对结束Log.d("BlueToothTestActivity", "完成配对");connectBlt(device);break;case BluetoothDevice.BOND_NONE://取消配对/未配对Log.d("BlueToothTestActivity", "取消配对");default:break;}
更多关于BluetoothDevice类的更多介绍,请参考该农民伯伯的该篇博客:
这个是本人写的蓝牙打印机demo,里面有对蓝牙搜索进行封装可以参考一下
android 开发之蓝牙开发相关推荐
- android Ble4.0蓝牙开发之搜索慢、startLeScan()过时,6.0以上不需要定位权限也能快速搜索到蓝牙设备
项目中需要用到android Ble蓝牙4.0开发技术,于是开启了蓝牙填坑之旅,说实话,蓝牙开发坑真多,跳出一个又进入下一个,每次遇到 问题,就觉得不可能解决了,还好在自己的摸索中,都一一的化解了,以 ...
- Android BLE低功耗蓝牙开发
啦啦啦在上一个项目中有用到BLE低功耗蓝牙开发,当时baidu google了很多资料,但大多数都是千篇一律,英文文档我这种渣渣又看不懂...总之刚开始查的很痛苦.所以要把自己的踩坑之路写下来记录下, ...
- 【Android】BLE 蓝牙开发流程篇
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 4 天,点击查看活动详情 前言 本文旨在梳理 BLE 蓝牙开发的主要流程,其中涉及到其他的知识,将会单独成文梳理.如有任何疑问, ...
- python 蓝牙开发_蓝牙开发快速入门
本文旨在作为入门蓝牙开发的一个简单介绍 安装BlueZ和PyBluez $ sudo apt install libglib2.0-dev libbluetooth-dev bluetooth $ p ...
- 【Bluetooth开发】蓝牙开发入门
BLE 蓝牙设备在生活中无处不在,但是我们也只是将其作为蓝牙模块进行使用,发送简单的AT命令实现数据收发. 那么,像对于一些复杂的使用场合:"车载蓝牙"."智能手表&qu ...
- Android ble covana,Android BLE低功耗蓝牙开发
最近做了一个智能硬件开发(针灸仪)的项目,有一部分涉及到低功耗蓝牙的开发,就是通过蓝牙和设备进行数据的交互,比如控制改设备的LED的开关,设备的开关机,设置设备的时间和温度等,下面就项目中遇到的坑一一 ...
- android 4.4 蓝牙开发总结(电视盒子)
6.0的蓝牙已经开发完毕,因为可以得到系统6.0的jar包,so也就开发的快些,更好些.4.4因为代码部分在setting模块里,部分在系统中,so不方便打成jar包.所以就通过广播接受改变状态之类的 ...
- android低耗能蓝牙开发,Android BLE低功耗蓝牙开发
最近做了一个智能硬件开发(针灸仪)的项目,有一部分涉及到低功耗蓝牙的开发,就是通过蓝牙和设备进行数据的交互,比如控制改设备的LED的开关,设备的开关机,设置设备的时间和温度等,下面就项目中遇到的坑一一 ...
- Android BLE低功耗蓝牙开发(下) BLE客户端(中央设备)与GATT服务的通讯
之前的文章简单实现了使用传统蓝牙进行通讯的DEMO,说是最简单其实只是夸张的写法~毕竟标题党横行,我们也得学学点~至少没有UC震惊部那么夸张. 然后,本来是要写Android开发之BlueTooth- ...
最新文章
- 为什么要进行数据归一化
- 图灵5周年系列活动之科普大爆炸(免费!)
- Android SurfaceView的生命周期
- Star: Ubuntu下配置和编译cpp-ethereum客户端启动GPU加速交易
- Java回调机制解析
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
- 2013年下半年信息系统项目管理师考试试卷(回忆版)
- unity3d 捕获系统日志,来处理一些问题
- java 什么是迭代器
- 程序设计工程师c语言,《C语言程序设计》自学百问.doc
- 第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全...
- python+selenium自动化driver.switch_to.frame用法
- 【一起学爬虫】PyQuery详解
- MySQL error(2014) Commands out of sync; you can't run this command now(情形2)
- Java中对文件的序列化和反序列化
- paip.提升用户体验----gcc c++ JIT-debugging 技术
- DX基础 | DXGI(DirectX Graphics Infrastructure)
- solus linux下载链接,Solus Linux下载_Solus 4.0 最新版_零度软件园
- vue项目屏幕自适应_vue项目自适应屏幕和浏览器
- 网卡构造:MAC与PHY的关系,GMAC介绍
热门文章
- Navicat for mysql 在WIN10下导入SQL不成功解决办法
- python数据集处理一些方法备份(长期更新)
- 测开基础串讲-Java基础-测开常用API之Random类
- 自定义View | 仿QQ运动步数进度效果
- 黄油刀的配置与使用——个人学习记录
- 12306车站信息爬取(4)——添加车票的票价信息
- aps是什么意思_aps是什么意思
- 股票买卖接口如何实现委托下单的功能?
- 2022 CCF中国软件大会(CCF ChinaSoft)“AI软件系统工程化技术与规范”论坛成功召开...
- ImageJ 用户手册——第四部分(ImageJ用户界面)