蓝牙-电子血压计

来源:互联网 发布:免费网络课程网站 编辑:程序博客网 时间: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