蓝牙开发

本文档介绍了蓝牙开发的基本流程,包括添加权限、扫描蓝牙设备、创建广播接收器、通过观察者模式传递数据以及在主线程中防止阻塞的异步读取。虽然代码未经全面优化,适用于招商投标的DEMO演示,但对于理解蓝牙设备交互有一定帮助。
摘要由CSDN通过智能技术生成
* 前几天售前拿来个电子秤,扔地上说,明天要拿这个取招商,功能就是称完之后在app显示重量...
* 内心一万个cnm,没有需求,没有原型,没有评估。还明天就要!大写的服。
* 抱怨太多也没用。问了下是什么通信协议,--->蓝牙发送数据。
*
* 不多说了,撸起袖子干吧。
* 问了生产商,没有sdk,没有文档。只有说明书,靠。等等...说明书上有解析协议。
* 然后开始。。。翻了下git.不太理想。自己撸吧。

都有注释。。

​

package com.basexhgx.xhgx.bthutils;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;

/**
 * Create: 2018/9/20 14:14
 *
 * @author: Winstronzeng zwq_ay@163.com
 * Description:  扫描蓝牙工具类,扫描设置
 * Version: 1.0
 **/

public class SearchBluetooth {
    BluetoothAdapter mBluetootadapter;


    //TODO  静态单例内部类
    private SearchBluetooth() {
        mBluetootadapter = BluetoothAdapter.getDefaultAdapter();
    }

    public static SearchBluetooth getInstance() {
        return SearchBluetooth2.t;
    }

    private static class SearchBluetooth2 {
        private static SearchBluetooth t = new SearchBluetooth();
    }

    /**
     * 扫描蓝牙设备
     * <p>
     * mBluetootadapter.cancelDiscovery();//停止扫描
     * mBluetootadapter.startDiscovery();//开始扫描附件蓝牙
     * 通过广播接收扫描到的蓝牙设备。并通过配对后进行 socket连接传输数据
     */
    public void doSearchBluetooth() {

        if (null == mBluetootadapter) {
            mBluetootadapter = BluetoothAdapter.getDefaultAdapter();
        }
        if (!mBluetootadapter.isEnabled()) {
            //TODO 校验蓝牙是否打开
            //不做提示,强行打开,此方法需要权限&lt;uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" /&gt;
            boolean enable = mBluetootadapter.enable();
            if (enable) {
                //TODO 扫描蓝牙设备
                mBluetootadapter.cancelDiscovery();
                mBluetootadapter.startDiscovery();
            }
        } else {
            //TODO 扫描蓝牙设备
            mBluetootadapter.cancelDiscovery();//停止扫描
            mBluetootadapter.startDiscovery();//开始扫描附件蓝牙

        }

    }

    public void stopSearchBluetooth() {
        //TODO  停止扫描蓝牙
        if (null != mBluetootadapter) {
            mBluetootadapter.cancelDiscovery();
        }
    }

    public void doConnetBluetooth(int states, BluetoothDevice btDevice, BluetoothAsyncTask bluetoothAsyncTask) {
        if (states == BluetoothDevice.BOND_NONE || states == BluetoothDevice.BOND_BONDED) {
            //TODO  没有配对
            try {
                //通过工具类ClsUtils,调用createBond方法
                boolean bond = BluetoothClsUtils.createBond(btDevice.getClass(), btDevice);
                if (bond) {
                    //创建连接
                    mBluetootadapter.cancelDiscovery();//创建连接前,最好关闭扫描。否则会导致连接上的蓝牙断开。
                    bluetoothAsyncTask.execute("98:D3:32:30:95:B4");
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if (states == BluetoothDevice.BOND_BONDED) {
                //TODO  已经配对直接链接

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值