android 蓝牙耗电量,安卓Android BLE低功耗蓝牙接受数据详解 只需100行代码轻松搞定...
做了一个安卓手机通过蓝牙获取电子秤的重量的Demo,在此写下以供大家参考和讨论.
先上代码,着急用的可以迅速参考,后面再写说明
我跳过了扫描过程,直接根据蓝牙设备地址进行连接,可以运行官方Demo来获取蓝牙设备地址以及UUID
/** * 蓝牙接收数据Demo * 蓝牙地址和UUID可以通过BLE官方Demo来获取 */
public class MainActivity extends AppCompatActivity {
private TextView tv;
private ScrollView sv;
private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothGatt mBluetoothGatt;
private String mDeviceAddress = "00:15:83:30:80:CC";//蓝牙设备地址
public final static UUID UUID_SERVICE =
UUID.fromString("0000ffe0-0000-1000-8000-00805f9b34fb");//蓝牙设备的Service的UUID
public final static UUID UUID_NOTIFY =
UUID.fromString("0000ffe1-0000-1000-8000-00805f9b34fb");//蓝牙设备的Characteristic的UUID
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
tv.append((String) msg.obj);
sv.fullScroll(View.FOCUS_DOWN);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
sv = (ScrollView) findViewById(R.id.sv);
//获取BluetoothManager
mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
//获取BluetoothAdapter
mBluetoothAdapter = mBluetoothManager.getAdapter();
//如果蓝牙没有打开 打开蓝牙
if (!mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.enable();
}
//根据蓝牙地址获取BluetoothDevice
BluetoothDevice bluetoothDevice = mBluetoothAdapter.getRemoteDevice(mDeviceAddress);
//如果Gatt在运行,将其关闭
if (mBluetoothGatt != null) {
mBluetoothGatt.close();
mBluetoothGatt = null;
}
//连接蓝牙设备并获取Gatt对象
mBluetoothGatt = bluetoothDevice.connectGatt(MainActivity.this, true, bluetoothGattCallback);
}
/** * 蓝牙返回数据函数 * 方法体在service中,不得在方法体中使用更新界面的操作以及Toast,否则程序无法运行!!! */
private BluetoothGattCallback bluetoothGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {//连接状态改变
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {//连接成功
setText("连接成功");
//搜索Service
mBluetoothGatt.discoverServices();
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {//断开连接
setText("连接断开");
}
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {//服务被发现
//根据UUID获取Service中的Characteristic,并传入Gatt中
mBluetoothGatt.setCharacteristicNotification(gatt.getService(UUID_SERVICE).getCharacteristic(UUID_NOTIFY), true);
}
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {//数据改变
String data = new String(characteristic.getValue());
Log.e("log", data);
setText(data);
}
};
//添加文本
private void setText(String text) {
Message message = new Message();
message.obj = text;
handler.sendMessage(message);
}
//关闭Activity的时候需要关闭Gatt
@Override
protected void onDestroy() {
super.onDestroy();
mBluetoothGatt.close();
mBluetoothGatt = null;
}
}
官方Demo使用方法
主界面,上面的条目即为搜索到的蓝牙设备
如:BT05为蓝牙设备名 ,00:15:83:30:80:CC为蓝牙地址
点进去之后为蓝牙设备中的service,点开service里面有characteristic,characteristic中含有需要的数据
点击最后一个characteristic的效果
图中的标红数字即为我需要的数据
记录下service的UUID和characteristic的UUID,以供使用
代码量并不多,注释也比较详细,大家可以直接看上面代码
需要注意的是在bluetoothGattCallback方法在一个Service中,不能在方法体中进行更新界面或者Toast.
下面放源码,不过需要更改蓝牙地址和UUID才能使用,修改成自己的设备的地址和UUID.
CSDN:http://download.csdn.net/download/woqq863787405/9691490
网盘:https://pan.baidu.com/s/1b8t5oi
最后,我只是刚入门的新手,可能有的地方不对或者不漏洞,欢迎大家指出.
android 蓝牙耗电量,安卓Android BLE低功耗蓝牙接受数据详解 只需100行代码轻松搞定...相关推荐
- Android鬼点子 100行代码,搞定柱状图!
最近,项目中遇到一个地方,要用到柱状图.所以这篇文章主要讲怎么搞一个柱子. 100行代码,搞定柱状图! 我的印象中柱子是这样的. 恩,简单,一个View直接放到xml,搞定! 但,设计师给的柱子是这样 ...
- Android沉浸式状态栏工具类,一句代码轻松搞定
Android沉浸式状态栏工具类,一句代码轻松搞定 博客原文及源码地址:http://jaeger.itscoder.com/android/2016/03/27/statusbar-util.htm ...
- android如果手机屏锁忘记了怎么办,手机屏幕锁忘记图案怎么办 自己也能轻松搞定...
手机屏幕锁忘记图案怎么办 自己也能轻松搞定 来源:www.18183.com作者:皮卡时间:2015-04-07 手机功能也越来越强大,甚至可以替代电脑,所以手机中存储着大量的个人隐私,很多用户习惯使 ...
- android电视盒配置自启动,电视盒子怎么开机自启动软件?巧用当贝市场,一招轻松搞定...
一般情况下,智能电视开机之后出现的都是主页面,需要进行一些操作才可以直达你想要的内容.但是,如今的智能电视基本都可以设置"开机自启动",可以直达你想去的软件或内容,无需再进行任何操 ...
- android studio蓝牙低功耗,arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网
arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网 nodered开发: esp32采用的蓝牙于普通的蓝牙不同,是低功耗蓝牙,手机用一般的蓝牙代码是连不上的.在本文中,不 ...
- Android BLE低功耗蓝牙开发
啦啦啦在上一个项目中有用到BLE低功耗蓝牙开发,当时baidu google了很多资料,但大多数都是千篇一律,英文文档我这种渣渣又看不懂...总之刚开始查的很痛苦.所以要把自己的踩坑之路写下来记录下, ...
- Android 8.0 BLE 低功耗蓝牙开发记录
Android 8.0 BLE 低功耗蓝牙开发记录(1-3)--------------(权限申请篇未完待续) 目的:开源博客,希望大家一起修改博客错误地方,共同完善并会鸣谢提供意见的朋友.为大家提供 ...
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解 ...
- Android BLE(低功耗蓝牙)技术总结
文章目录 前言 一.蓝牙介绍 1.什么是蓝牙? 2.蓝牙版本介绍 二.低功耗蓝牙(BLE) 1.BLE介绍 2.经典蓝牙(Classic Bluetooth)与低功耗蓝牙(BLE)的区别 3.低功耗蓝 ...
最新文章
- 巴菲特评科技股:投资 IBM 是个错误,还会增持苹果,亚马逊简直是奇迹
- java drools5_Java Drools5.1 规则流基础【示例】
- (未完成...)Python3网络爬虫(2):利用urllib.urlopen向有道翻译发送数据并获得翻译结果...
- 【PHP】curl_init() 如何排错????
- 海康/大华 IpCamera RTSP地址和格式
- 关于对Enum的理解
- redis集群的搭建
- 第九十期:哪种人是软件设计中的稀缺型人才?
- python利用pygame框架实现类似大鱼吃小鱼游戏 (松鼠吃松鼠) code from making games with python and pygame
- 红帽Linux6.0镜像文件在哪里下载,Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件-下载地址...
- Matlab 2020b安装教程
- mysql dbutil_通过dbutil操作数据库
- 苹果微信分身版ios_苹果ios微信分身三开助手
- 22二叉树非递归遍历算法
- pytorch 中文手册
- python实验收获与反思 100字_期中考试总结与反思100字
- java基于uni-app框架的民宿客房预订系统 小程序
- D社创始人 苟方韬:当二次元恋上区块链,如何引爆流量
- 程序存储器 指令寄存器 程序计数器 地址寄存器
- VMware安装macOS High Sierra 10.13苹果系统并设置共享文件夹详细教程(图文)