Android 蓝牙4.0 Ble开发(一)

一,Ble 4.0简介

低功耗蓝牙,低成本、短距离、可互操作的鲁棒性无线技术,从蓝牙4.0开始支持,Android端是从Android4.3开始支持ble,但是是从android5.0开始支持手机作为外设端开发,在此(5.0)之前只能作为中央设备开发。

二,API

BluetoothAdapter  蓝牙适配器,通过它来获取蓝牙地址、蓝牙名字、绑定设备、扫描模式、蓝牙状态等参数(后面代码有详细说明)
BluetoothLeScanner 蓝牙扫描类
BluetoothDevice 蓝牙设备类
BluetoothGatt 蓝牙通信类,通过这个类来建立通信通道
BluetoothGattService 蓝牙通信通道服务类
BluetoothGattCallback:中央设备回调类。
BluetoothGattServer:外设提供数据类;
BluetoothGattServerCallback:外设回调类
BluetoothGattCharacteracteristic 蓝牙通信通道特征值类
BluetoothGattDescriptor 蓝牙通信通道特征值属性类

一个ble终端可以包含多个Service,一个Service可以包含多个Characteristic,一个Characteristic包含一个value和多个Descriptor,一个Descriptor包含一个value。其中Characteristic比较重要,用的比较多。Descriptor主要对Characteristic进行范围、单位的描述。

三,ble的分类

    中央设备(central):进行扫描,启动连接,在单一或多链路层作为主机。
    外围设备(periphery):广播发送者,可连接的设备,在单一链路层作为从机。
    广播者(Braodcaster):广播发送者,是不可连接的设备。
    观察者(Observer):扫描广播,不能够启动连接。
广播者和观察者不能建立连接。应用:温度传感器和温度显示器。
一个中央可以同时连接多个周边,但是一个周边只能连接一个中央。

四,作为中央设备示例

    1.初始化Ble
private void initBle() {
        //获取蓝牙管理类对象
        BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
        //获取蓝牙适配器
        adapter = manager.getAdapter();
        //判断是否支持蓝牙(此处并非是Ble)
        if (adapter == null) {
            Log.d(tag, "该设备没有蓝牙");
            return;
        } else {
            Log.d(tag, adapter.getAddress() //蓝牙地址
            + "\n" + adapter.getName()   //蓝牙名字
            + "\n" + adapter.getBondedDevices()//已匹配的设备
            + + "\n" + adapter.getScanMode() //扫描模式
            + "\n" + adapter.getState());//状态
            //判断蓝牙打开状态如果没打开直接打开
            if (!adapter.isEnabled()) {
                adapter.enable();
         }
//当然此处也可采用,通过用户点击来打开蓝牙
// Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);            //enableBtIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//context.startActivity(enableBtIntent);
}
//判定是否支持Ble
if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
            Toast.makeText(this, "该设备上不支持BLE", Toast.LENGTH_SHORT).show();
} else {
     Toast.makeText(this, "该设备上支持BLE", Toast.LENGTH_SHORT).show();
 }
     mac.setText("本机的蓝牙mac\n" + adapter.getAddress());
 }
2.扫描

    // lescan开始扫描ble设备
private void startLeScan(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Log.e(tag,"start bleScan");
        //获取扫描对象       mBluetoothLeScanner=adapter.getBluetoothLeScanner();
        //扫描结果的集合
 List<ScanFilter>bleScnFilter=new ArrayList<>();
 bleScnFilter.add(new ScanFilter.Builder().setDeviceAddress(address).build());
 //扫描设置
ScanSettings bleScanSetting= new ScanSettings.Builder().build();
//开始扫描
mBluetoothLeScanner.startScan(null, bleScanSetting, mBleScanCallback);
}else{
        Log.e(tag,"build not support LeScan");
}
}
3.扫描回调
    @Override
    public void onBatchScanResults(List<ScanResult> results) {
        super
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝牙4.0BLE开发完全手册——物联网开发技术实战》是一本专门介绍蓝牙4.0低功耗(Bluetooth Low Energy, BLE)开发技术并应用于物联网的实战指南。 该书从基础概念出发,分析了BLE技术的特点、优势和应用领域。首先介绍了蓝牙技术的发展历程,然后深入研究了BLE的基本原理和通信协议,包括物理层和协议栈的组成、BLE传输数据的方式以及BLE设备之间的连接和广播等内容。同时,还对BLE的安全性和功耗进行了详细的讲解。 随后,本书重点聚焦于BLE开发的实战应用。作者通过实例演示了如何使用iOS和Android平台上的开发工具来搭建一个BLE应用程序,包括手机与BLE设备之间的连接与通信、UUID的使用、服务和特征的定义以及数据的读写等操作。此外,还介绍了如何在物联网场景中使用BLE技术,如智能家居、智能健康等方面的应用。 该书以简明易懂的方式呈现了BLE技术的相关知识,并结合实际案例进行讲解,使读者可以快速上手并实践于物联网开发中。此外,书中还包括了常见问题和解决方案,以帮助读者解决开发过程中可能遇到的困难与挑战。 综上所述,《蓝牙4.0BLE开发完全手册——物联网开发技术实战》是一本全面介绍BLE开发技术的实用指南,是物联网开发者不可或缺的参考工具。无论是对于初学者还是已有一定经验的开发者来说,都能够从中获得宝贵的知识和实战经验,提升物联网开发的技能水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值