蓝牙-电子血压计
来源:互联网 发布:免费网络课程网站 编辑:程序博客网 时间:2024/05/01 13:06
实现目标:
1,连接血压计,获取到血压数值 2,连接任意的血压计,可以读取数据
步骤:
1)添加权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 2)检测蓝牙权限 private void checkPermissions() { String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION}; List<String> permissionDeniedList = new ArrayList<>(); for (String permission : permissions) { int permissionCheck = ContextCompat.checkSelfPermission(this, permission); if (permissionCheck == PackageManager.PERMISSION_GRANTED) { onPermissionGranted(permission); } else { permissionDeniedList.add(permission); } } if (!permissionDeniedList.isEmpty()) { String[] deniedPermissions = permissionDeniedList.toArray(new String[permissionDeniedList.size()]); ActivityCompat.requestPermissions(this, deniedPermissions, 12); }} private void onPermissionGranted(String permission) { switch (permission) { case Manifest.permission.ACCESS_FINE_LOCATION: //开启蓝牙 StartBle(); break; }} 3)开启蓝牙private void StartBle() { //蓝牙是否开启 if (isBluetoothEnable()) { issearchDevice(); } else { //开启蓝牙 openSetting(); //搜索蓝牙设备 issearchDevice(); }}public static boolean isBluetoothEnable() { bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); return bluetoothAdapter.isEnabled();}private void openSetting() { bluetoothAdapter.enable();} 4)搜索蓝牙设备,并连接 private final SearchResponse mSearchResponse = new SearchResponse() { @Override public void onSearchStarted() { } @Override public void onDeviceFounded(SearchResult device) { if (!mDevices.contains(device)) { mDevices.add(device); mMac=mDevices.get(0).getAddress(); Toast.makeText(MainActivity.this, "搜索到蓝牙设备" + mDevices.size(), Toast.LENGTH_SHORT).show(); // 连接蓝牙设备 //连接状态的监听 ClientManager.getClient().registerConnectStatusListener(mDevices.get(0).getAddress(), mConnectStatusListener); connectDevice(); } } @Override public void onSearchStopped() { if (mDevices.size() == 0) { Toast.makeText(MainActivity.this, "没有搜索到蓝牙设备0", Toast.LENGTH_SHORT).show(); } } @Override public void onSearchCanceled() { if (mDevices.size() == 0) { Toast.makeText(MainActivity.this, "没有搜索到蓝牙设备1", Toast.LENGTH_SHORT).show(); } }}; private final BleConnectStatusListener mConnectStatusListener = new BleConnectStatusListener() { @Override public void onConnectStatusChanged(String mac, int status) mConnected = (status == STATUS_CONNECTED); connectDeviceIfNeeded(); }}; private void connectDeviceIfNeeded() { if (!mConnected) { connectDevice(); }}private void connectDevice() { BleConnectOptions options = new BleConnectOptions.Builder() .setConnectRetry(3) .setConnectTimeout(20000) .setServiceDiscoverRetry(3) .setServiceDiscoverTimeout(10000) .build(); //连接设备 ClientManager.getClient().connect(mDevices.get(0).getAddress(), options, new BleConnectResponse() { @Override public void onResponse(int code, BleGattProfile profile) { if (code == REQUEST_SUCCESS) { Toast.makeText(MainActivity.this, "连接成功蓝牙设备" , Toast.LENGTH_SHORT).show(); text_address.setText(mDevices.get(0).getAddress()); sendOrder(); } } }); 5)发送命令 private void sendOrder() { ClientManager.getClient().write(mMac, mService, mCharacter, ByteUtils.stringToBytes("FDFDFA050D0A"), mWriteRsp); 6)读取数据 private void readData() { ClientManager.getClient().notify(mMac, mService, mReadCharacter, mNotifyRsp);}
参考资料:
点击打开链接1 http://www.cnblogs.com/xxzjyf/p/x_x_z_j_y_f.html
点击打开链接2 https://github.com/dingjikerbo/BluetoothKit
阅读全文
0 0
- 蓝牙-电子血压计
- 电子血压计并非人人适用
- 电子血压计遇到的问题
- 电子血压计是使用电池好还是使用电源好
- 开发低功耗蓝牙4.0血压计连接与收发数据
- 血压计算法
- 蓝牙4.0(BLE)电子烟方案
- 接触血压计板
- 血压计板子问题分析
- 电子
- 电子
- 电子
- 电子
- 电子
- NEC开发新型可穿戴轻触血压计
- 血压计代码学习笔记2017.6.2
- 血压计调板学习笔记2017.6.9
- 蓝牙
- Cmder--windows 系统命令行神器
- matlab随机数生成
- Linux Unit5
- Tornado框架03-options和日志
- python 接口自动化测试--代码实现(七)
- 蓝牙-电子血压计
- selenium之模态框处理+检测元素是否多层嵌套
- 数据结构实验之串三
- Tornado框架04-配置文件和路由
- 面向对象
- AngularJS实现存入文本,搜索文本,敏感字符
- AngularJS实现存入文本,搜索,敏感字符
- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
- SASS入门介绍及安装