做了一个安卓手机通过蓝牙获取电子秤的重量的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行代码轻松搞定...相关推荐

  1. Android鬼点子 100行代码,搞定柱状图!

    最近,项目中遇到一个地方,要用到柱状图.所以这篇文章主要讲怎么搞一个柱子. 100行代码,搞定柱状图! 我的印象中柱子是这样的. 恩,简单,一个View直接放到xml,搞定! 但,设计师给的柱子是这样 ...

  2. Android沉浸式状态栏工具类,一句代码轻松搞定

    Android沉浸式状态栏工具类,一句代码轻松搞定 博客原文及源码地址:http://jaeger.itscoder.com/android/2016/03/27/statusbar-util.htm ...

  3. android如果手机屏锁忘记了怎么办,手机屏幕锁忘记图案怎么办 自己也能轻松搞定...

    手机屏幕锁忘记图案怎么办 自己也能轻松搞定 来源:www.18183.com作者:皮卡时间:2015-04-07 手机功能也越来越强大,甚至可以替代电脑,所以手机中存储着大量的个人隐私,很多用户习惯使 ...

  4. android电视盒配置自启动,电视盒子怎么开机自启动软件?巧用当贝市场,一招轻松搞定...

    一般情况下,智能电视开机之后出现的都是主页面,需要进行一些操作才可以直达你想要的内容.但是,如今的智能电视基本都可以设置"开机自启动",可以直达你想去的软件或内容,无需再进行任何操 ...

  5. android studio蓝牙低功耗,arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网

    arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网 nodered开发: esp32采用的蓝牙于普通的蓝牙不同,是低功耗蓝牙,手机用一般的蓝牙代码是连不上的.在本文中,不 ...

  6. Android BLE低功耗蓝牙开发

    啦啦啦在上一个项目中有用到BLE低功耗蓝牙开发,当时baidu google了很多资料,但大多数都是千篇一律,英文文档我这种渣渣又看不懂...总之刚开始查的很痛苦.所以要把自己的踩坑之路写下来记录下, ...

  7. Android 8.0 BLE 低功耗蓝牙开发记录

    Android 8.0 BLE 低功耗蓝牙开发记录(1-3)--------------(权限申请篇未完待续) 目的:开源博客,希望大家一起修改博客错误地方,共同完善并会鸣谢提供意见的朋友.为大家提供 ...

  8. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解 ...

  9. Android BLE(低功耗蓝牙)技术总结

    文章目录 前言 一.蓝牙介绍 1.什么是蓝牙? 2.蓝牙版本介绍 二.低功耗蓝牙(BLE) 1.BLE介绍 2.经典蓝牙(Classic Bluetooth)与低功耗蓝牙(BLE)的区别 3.低功耗蓝 ...

最新文章

  1. 巴菲特评科技股:投资 IBM 是个错误,还会增持苹果,亚马逊简直是奇迹
  2. java drools5_Java Drools5.1 规则流基础【示例】
  3. (未完成...)Python3网络爬虫(2):利用urllib.urlopen向有道翻译发送数据并获得翻译结果...
  4. 【PHP】curl_init() 如何排错????
  5. 海康/大华 IpCamera RTSP地址和格式
  6. 关于对Enum的理解
  7. redis集群的搭建
  8. 第九十期:哪种人是软件设计中的稀缺型人才?
  9. python利用pygame框架实现类似大鱼吃小鱼游戏 (松鼠吃松鼠) code from making games with python and pygame
  10. 红帽Linux6.0镜像文件在哪里下载,Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件-下载地址...
  11. Matlab 2020b安装教程
  12. mysql dbutil_通过dbutil操作数据库
  13. 苹果微信分身版ios_苹果ios微信分身三开助手
  14. 22二叉树非递归遍历算法
  15. pytorch 中文手册
  16. python实验收获与反思 100字_期中考试总结与反思100字
  17. java基于uni-app框架的民宿客房预订系统 小程序
  18. D社创始人 苟方韬:当二次元恋上区块链,如何引爆流量
  19. 程序存储器 指令寄存器 程序计数器 地址寄存器
  20. VMware安装macOS High Sierra 10.13苹果系统并设置共享文件夹详细教程(图文)

热门文章

  1. android手机的智能备忘录,智能备忘录手机版
  2. 从网络测速,看网络程序对网速的影响
  3. 一张图看懂嵌入式与PC启动流程
  4. 3DMAX角色建模教程
  5. 铺地砖问题 java
  6. javaIO——PipedReader 和 PipedWriter 实现模拟即时聊天
  7. 解决回调地狱终极方法 - ES7新增 - async 和 await
  8. 我的FOXBASE旅程 (转)
  9. 简易黑客初级教程:黑客技术,分享教学
  10. 2021年中国物联网(IoT),保障公共安全市场趋势报告、技术动态创新及2027年市场预测