蓝牙技术(BlueTooth)——(一)

一,概述

    蓝牙是一种短距离的无线通信技术标准。

    蓝牙协议分为4层,即核心协议层,电缆替代协议层,电话控制协议层,和      采纳的其它协议层。

    这4中协议中最重要的是核心协议。蓝牙的核心协议包括基带,链路管理,逻辑链路控制和适应协议四部分。其中链路管理(LMP)负责蓝牙组件间连接的建立。逻辑链路控制与适应协议(L2CAP)位于基带协议层上,属于数据链路层,是一个为高层传输和应用层协议屏蔽基带协议的适配协议。

二,代码打开蓝牙的方式

  方式一:  

  if(bluetoothAdapter==null || !bluetoothAdapter.isEnabled()){
                    Intent enableBtIntent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(enableBtIntent,1);
                }

   第二种方式:

 <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

 BluetoothAdapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
        bluetoothAdapter.enable();
        bluetoothAdapter.disable();

三,通过代码搜索蓝牙设备

1,搜索普通蓝牙设备

//3,扫描附近的设备

                if(bluetoothAdapter.isDiscovering()){
                    bluetoothAdapter.cancelDiscovery();
                }else{
                    //每次扫描之前都先判断一下是否存在已久配对的设备
                    Set<BluetoothDevice> paireDevices=bluetoothAdapter.getBondedDevices();
                    if(paireDevices.size()>0){
                        for(BluetoothDevice device :paireDevices){
                            Map map=new HashMap();
                            map.put("deviceName",device.getName());
                            map.put("deviceAddress",device.getAddress());
                            map.put("bluetooth_status","已配对");

                            deviceList.add(map);

                        }
                        Log.i("之前已经绑定过的设备:",deviceList.toString());
                    }
                    bluetoothAdapter.startDiscovery();//开始搜索

/*监听扫描过程中的变化*/
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            // When discovery finds a device
            if (BluetoothDevice.ACTION_FOUND.equals(action))
            {
                // Get the BluetoothDevice object from the Intent
                // 通过EXTRA_DEVICE附加域来得到一个BluetoothDevice设备
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

                // If it's already paired, skip it, because it's been listed already
                // 如果这个设备是不曾配对过的,添加到list列表
                if (device.getBondState() != BluetoothDevice.BOND_BONDED)
                {
                    Message msg=new Message();
                    msg.what=1;
                    Bundle bundle=new Bundle();
                    bundle.putString("deviceName",device.getName());
                    bundle.putString("deviceAddress",device.getAddress());
                    msg.setData(bundle);
                    handler.sendMessage(msg);

                    Map map=new HashMap();
                    map.put("deviceName",device.getName());
                    map.put("deviceAddress",device.getAddress());
                    Log.i("扫描到的新设备:",map.toString());
                    Log.i("加入新设备之后,扫描到的总设备:",deviceList.toString());
                }
                // When discovery is finished, change the Activity title
            }
            else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action))
            {
                Log.i("扫描结束------扫描到的总设备:",deviceList.toString());
               handler.obtainMessage(0).sendToTarget();
            }
        }
    };

2,搜索BLE设备

 // Device scan callback.
    private BluetoothAdapter.LeScanCallback mLeScanCallback =
            new BluetoothAdapter.LeScanCallback() {
                @Override
                public void onLeScan(final BluetoothDevice device, int rssi,
                                     byte[] scanRecord) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Map map=new HashMap();
                            map.put("deviceName",device.getName());
                            map.put("deviceAddress",device.getAddress());
                            map.put("bluetooth_status","BLE设备");
                            Log.i("扫描到新的BLE设备:",map.toString());
                            deviceList.add(map);
                        }
                    });
                }
            };

    // Stops scanning after 10 seconds.
    private static final long SCAN_PERIOD = 10000;
    private void scanLeDevice(final boolean enable) {
        if (enable) {
            // Stops scanning after a pre-defined scan period.
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mScanning = false;
                    bluetoothAdapter.stopLeScan(mLeScanCallback);
                }
            }, SCAN_PERIOD);

            mScanning = true;
            bluetoothAdapter.startLeScan(mLeScanCallback);
        } else {
            mScanning = false;
            bluetoothAdapter.stopLeScan(mLeScanCallback);
        }

    }

四,如何用蓝牙进行数据传输

     通过蓝牙传输数据与Socket类似。在网络中使用Socket和ServerSocket控制客户端和服务端的数据读写。而蓝牙通讯也由客户端和服务端Socket来完成。蓝牙客户端Socket是BluetoothSocket,蓝牙服务端Socket是BluetoothServerSocket。这两个类都在android.bluetooth包中。

      无论是BluetoothSocket,还是BluetoothServerSocket,都需要一个UUID来标识,格式如下:

      此UUID是一个8-4-4-4-12的字符串。

      UUID相当于Socket的端口,而蓝牙地址相当于Socket的IP。

      两个蓝牙设备进行连接时,需要使用同一个UUID。一些时候,很多型号的手机(可能是安卓机和水果机)之间使用了不同的程序也可以使用蓝牙进行通讯。表面上看,他们之间几乎不肯能使用同一个UUID。

      实际上,UUID和TCP的端口一样,也有一些默认的值。例如,讲蓝牙模拟成串口的服务就使用了一个标准的UUID:00001101-0000-1000-8000-00805F9B34FB.除此之外,还有很多标准的UUID,比如:

    信息同步服务:00001104-0000-1000-8000-00805F9B34FB.

    文件传输服务:00001106-0000-1000-8000-00805F9B34FB。

PS:附加上写的BLE设备扫描apk:http://download.csdn.net/detail/lhc2207221755/9629293

 

 

时间: 2024-10-17 09:27:24

蓝牙技术(BlueTooth)——(一)的相关文章

Android Bluetooth蓝牙技术使用流程详解_Android

在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情. 一:蓝牙设备之间的通信主要包括了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输 二:具体编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,如果返回为空,则无法继续执行了.例如: BluetoothAdapter mBluetoothAdapter = Blueto

Android Bluetooth蓝牙技术使用流程详解

在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情. 一:蓝牙设备之间的通信主要包括了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输 二:具体编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,如果返回为空,则无法继续执行了.例如: BluetoothAdapter mBluetoothAdapter = Blueto

Android Bluetooth蓝牙技术初体验

一:Bluetooth包简介 Android平台提供了一个android.bluetooth的包,里面实现蓝牙设备之间通信的蓝牙API.总共有8个类,常用的四个类如下: BluetoothAdapter类 代表了一个本地的蓝牙适配器.它是所有蓝牙交互的入口点.利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket(作为服务器端)来监听来自其他设备的连接. BluetoothDevice类 代表了一个远端的蓝牙设备

基于蓝牙技术的无线接入网

摘要:当前,如何实现移动用户的无缝因特网接入成为通信领域研究的一大热点,本文首先介绍了基于蓝牙技术的两种无线接入技术的原理,在此基础上简单讨论了它的路由技术,提出了针对越区切换问题的一种简单解决方案,最后给出了蓝牙接入网中微微网的几种实现方案. 1 概述 随着笔记本电脑和个人数字助理(PDA)的逐渐普及,人们对通信技术的期望越来越高,希望随时都能够接入因特网,实现移动互联. 无线接入网的概念就是指在该网内存在着多个无线接入点,移动终端通过它附近的无线接入点接入到局域网.此时的移动终端可以访问该局

蓝牙技术新突破:瞄准物联网,连接140亿设备

2015年,全球IoT领域快速成长.而中国各大知名品牌在IoT领域的业务部署和战略投资,显示出了对于智能家居市场的重视.为此,蓝牙技术联盟近日开放全部蓝牙网关架构,以助力开发者快速地为蓝牙产品增至蓝牙网关. 蓝牙技术联盟开发者计划总监何根飞(Steve Hegenderfer)近日在北京媒体见面会上表示,这个全新架构,让所有人都能够对固定式的具有蓝牙功能的传感器做远程检测与控制,也借此扩展了物联网领域的潜在应用. "蓝牙技术的演进将进一步为包括智能家居.工业自动化.基于位置的服务和智能基础设施等

蓝牙技术联盟:蓝牙成为云计算及物联网重要组成部分

蓝牙技术联盟http://www.aliyun.com/zixun/aggregation/35685.html">首席营销官卓文泰(Suke Jawanda)近日表示,通过蓝牙连接将云数据安全传输到网络服务和应用中,是云计算乃至物联网的重要组成部分.蓝牙技术大规模生态系统预计将在五年内取得引人注目的成果,据估算在2017年前蓝牙设备的出货量将累积达到200亿. 前不久,微软Windows 8操作系统宣布全面支持蓝牙4.0,这意味着蓝牙4.0可在任何使用Windows 8 的产品上运行,例

蓝牙技术联盟推出4.0版蓝牙技术

12月21日消息,蓝牙技术联盟(Bluetooth Special Interest Group, SIG)18日宣布推出采用核心规格4.0版的蓝牙低耗能无线技术,主要应用于医疗保健.运动与健身.安全及家庭娱乐等全新的市场. 蓝牙技术联盟执行董事麦弗利博士(Michael Foley, Ph. D.)表示:"随着今天蓝牙低耗能无线技术的发布,产品设计师将开始寻找进入市场的最佳时机!同时,各类新产品的蓝牙低耗能技术认证已开始进行,这意味着我们取得了又一个为蓝牙无线技术开拓新市场的重要里程碑.&qu

蓝牙技术联盟CTO:2014年有90%的笔记本装蓝牙

蓝牙技术联盟首席技术总监Andy Glass 11月19日消息,蓝牙技术联盟首席技术总监Andy Glass昨日对新浪科技表示,目前,已经有接近100%的智能手机装有蓝牙设备,到2014年,将有90%的笔记本装上蓝牙设备. Andy Glass表示,现在每周都会有50多个新的蓝牙产品获得认证,每周有3000万蓝牙的设备出货,在目前的市场上,共有30亿的蓝牙设备. 在手机领域,"基本上80%的手机都有,而在智能手机上,这一比例接近100%,现在笔记本和台式机上的蓝牙比例没有手机高,但是,到2014

iBeacon蓝牙技术点亮物联网化智慧城市

物联网时代,以大数据.云计算.移动.社交为主的创新技术正在颠覆传统的生活.工作模式.10月31日,"2014年首届天津智慧城市建设与发展高峰论坛"在天津开幕,此次峰会中,一款应用最新iBeacon蓝牙技术的"智慧城市"App成为了一道科技新亮点,它使与会者在参会期间充分体验移动互联网与物联网时代的"智慧会议". 应用于此次峰会中的"智慧城市"App是基于iBeacon CS平台开发的一站式会务信息化移动客户端.它将物联网化的基

《低功耗蓝牙开发权威指南》——第1章什么是低功耗蓝牙技术

第1章什么是低功耗蓝牙技术如果我能看得更远的话,那是因为我站在巨人的肩膀上.-艾萨克·牛顿(Isaac Newton)低功耗蓝牙是一种全新的技术,是当前可以用来设计和使用的功耗最低的无线技术.作为经典蓝牙的扩展,低功耗蓝牙沿用了蓝牙商标,并且借鉴了很多父辈的技术,然而,由于针对的设计目标和市场领域均与经典蓝牙有所不同,低功耗蓝牙应被视为一种不同的技术.经典蓝牙的设计目的在于统一全球各地的计算和通信设备,让手机与笔记本电脑互相连接.不过事实证明,蓝牙最为广泛的应用还是音频传输,比如将音频从手机传到