android之蓝牙通信(一)(检测蓝牙、开启蓝牙、扫描附近蓝牙设备)
来源:互联网 发布:淘宝怎么追加评价手机 编辑:程序博客网 时间:2024/05/14 15:40
最近项目需要做蓝牙连接蓝牙秤设备,获取称重数据,然后就去研究了下蓝牙相关知识,看过一堆一堆的博客文章,然后开始写,依然踏了很多的坑,自己各种办法试了又试,终于完善得差不多了,然后现在项目做完了有空就写下博客记录下。
对于蓝牙通信方面,比如蓝牙聊天,其实跟蓝牙连接蓝牙秤差不多。如果是app连接蓝牙秤,比手机连接手机聊天少了那么一两个步骤。其实可以这么理解,手机蓝牙连接蓝牙外设备(非手机),那么就是将外设备作为服务器,手机作为客户端来进行连接。如果是手机和手机蓝牙聊天,那么双方都是作为服务器和客户端,手机A和B,A作为服务器给B发送消息,B作为客户端进行接收;同理A接收B的消息的时候,B是服务器给A发送消息,A作为客户端来接受。一个发送一个接收,蓝牙通信就是这样的,那么主要的两个操作就是刚刚说的,如果需要发送功能,那么就需要自己作为服务器,主要方法就是执行socket.accept()来连接客户端,给客户端发送消息;如果需要接受数据的功能,那么需要自己作为客户端,主要方法就是执行socket.connect()来连接服务器,接收服务器的消息。
所以其实蓝牙通信主要就是上面说的两个方面,一个是接收消息,一个是发送消息;主要进行的两个操作就是accept()和connect(),其他的什么开启蓝牙,检测蓝牙是否开启,扫描附近蓝牙等都是次要的,也比较简单。
对于简单的蓝牙检测,开启,扫描等我就贴核心代码简略说下了。
正常的操作应该是:
1.检测手机是否支持蓝牙,支持的话,如果蓝牙没开启就开启蓝牙,如果不支持弹出提示
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); //获取蓝牙适配器 if (bluetoothAdapter != null) { //有蓝牙功能 if (!bluetoothAdapter.isEnabled()) { //蓝牙未开启 new Thread(new Runnable() { @Override public void run() { bluetoothAdapter.enable(); //开启蓝牙(还有一种方法开启,我就不说了,自己查去) } }).start(); } else { if (!bluetoothAdapter.isDiscovering()) { //如果没有在扫描设备 bluetoothAdapter.startDiscovery();//扫描附近蓝牙设备,然后做接下来的操作,比如扫描附近蓝牙等 } else { IApplication.showToast("正在扫描"); //弹出Toast提示 } } } else { //无蓝牙功能 IApplication.showToast("当前设备未找到蓝牙功能"); //弹出Toast提示 }
2.获取扫描结果(注册蓝牙扫描结果的广播,然后接收)
if (action.equals(BluetoothDevice.ACTION_FOUND)) { //搜索到蓝牙设备 BluetoothDevice btd = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (btd.getBondState() != BluetoothDevice.BOND_BONDED) { //如果没有配对过 callback.found(btd); //使用接口回调给需要的activity } } else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) { //搜索结束 callback.finished(); //使用接口回调给需要的activity }3.在activity中获取传过来的扫描结果
@Override public void found(BluetoothDevice btd) { //搜索到蓝牙设备 deviceList.add("未配对设备:" + btd.getName() + "\n" + "设备地址:" + btd.getAddress()); adapter.notifyDataSetChanged(); //用来显示扫描到的蓝牙列表 } @Override public void finished() { if (deviceList == null || deviceList.size() == 0) {//未扫描到蓝牙设备 deviceList.add("未扫描到可用蓝牙设备"); adapter.notifyDataSetChanged(); //更新蓝牙列表 progressDialog.dismiss(); //隐藏正在扫描的dialog } }另外,已经匹配过的蓝牙是需要单独获取的
/** * 获取已配对的蓝牙设备 */ private void findAvalibleDevice() { Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices(); if (bluetoothAdapter != null && bluetoothAdapter.isDiscovering()) { deviceList.clear(); adapter.notifyDataSetChanged(); } if (devices.size() > 0) { //存在已经配对过的蓝牙设备 for (BluetoothDevice item : devices) { deviceList.add("已配对设备:" + item.getName() + "\n" + "设备地址:" + item.getAddress()); } adapter.notifyDataSetChanged(); } else { deviceList.add("不存在配对的蓝牙设备"); adapter.notifyDataSetChanged(); } }
额,先写到这了,有点事。。。等有空补上,在下篇会重点说明蓝牙进行连接、获取数据等。
0 0
- android之蓝牙通信(一)(检测蓝牙、开启蓝牙、扫描附近蓝牙设备)
- android 蓝牙通讯实现手机蓝牙的开启,并扫描附近可见的蓝牙设备
- Android 蓝牙开发(一)蓝牙通信
- Android 蓝牙开发(一)蓝牙通信
- Android 蓝牙开发(一)蓝牙通信
- Android 蓝牙开发(一)蓝牙通信
- Android 扫描附近的蓝牙设备并连接蓝牙音响
- 蓝牙通信-搜索附近的蓝牙设备
- Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备(转)
- android 蓝牙通信(一)
- Android开发之蓝牙通信(一)
- Android开发之蓝牙通信(一)
- 蓝牙通信(一)
- 蓝牙通信(一)
- 蓝牙开启&& 被附近的其它蓝牙设备发现
- Android 蓝牙通信开发(一)搜索蓝牙设备
- Android开发蓝牙篇之蓝牙设备开启、搜索周边蓝牙设备
- Android蓝牙(一)
- Java设计模式之单例模式
- php中字符串
- Hadoop 简介 及 安装
- 实用的Python库(会一直持续更新。。。)
- Java项目增加验证码支持
- android之蓝牙通信(一)(检测蓝牙、开启蓝牙、扫描附近蓝牙设备)
- 实现Activity侧滑返回效果
- 时间的朋友-罗胖
- Android Studio获取开发版SHA1和发布版SHA1以及MD5
- masterJ2SE篇003——使用脚本启动java程序
- SIGTERM SIGINT
- 如何清除statspack相关表的历史数据
- javascript入门基础篇重点 第六节
- Selection.GetFiltered