欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android ble蓝牙低功耗开发简单应用

程序员文章站 2024-03-24 21:08:52
...

关于蓝牙回调方法传递数据展示

这是我第一次接触蓝牙开发,所以基本上都不是和了解,做出来的东西也没有考虑到多线程的问题,就是公司自己的小demo,功能就是取出蓝牙里面传递的数据并且读出信息
1.蓝牙使用主要依赖的是 BluetoothAdapter 和 BluetoothManager ,基本的打开蓝牙就不说了直接使用


   // 初始化蓝牙适配器
        btm = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        if (btm == null) {
            return;
        }
        bta = btm.getAdapter();
        // 打开蓝牙
        if (bta == null || !bta.isEnabled()) {
            mToast = Toast.makeText(this, "请打开蓝牙", Toast.LENGTH_LONG);
            mToast.setGravity(Gravity.CENTER_HORIZONTAL,0,0);
            mToast.show();
            onBackPressed();
        } else {
            bta.startLeScan(oldBtsc);
            // 设置扫描时间
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    bta.stopLeScan(oldBtsc);
                }
            }, 60*1000*30);
        }

这段代码是打开蓝牙,设定了一个结束时间,可以将代码封装到方法里面,然后onCreate里面调用

打开蓝牙适配器后就能直接取到信息,通过广播启动后的回调

  /**
     * 广播启动后的回调函数
     */
    private BluetoothAdapter.LeScanCallback oldBtsc = new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
      //这边可以写业务逻辑,scanRecord 就是你接受的蓝牙传递给你的信息,基本上都会有对应的处理信息的逻辑,我们公司的不能写出来,
      //就是自己思考,我这边使用了adapter显示数据,由于有更新的信息,所以使用的notifyDataSetChanged方法

                    adapter.notifyDataSetChanged();
                }
            }
        };
    };

最后退出本页面时在onDestroy关比适配器 其他就自己考虑了