Android源码下载:Bluetooth_4.3 BLE蓝牙通信
创始人
2025-01-10 17:40:54
0次

功能分类:工具

支持平台:Android

运行环境:Eclipse

开发语言:Java

开发工具:Eclipse

源码大小:1.37MB

源码下载地址:http://down.51cto.com/data/1984795

源码简介

该Demo主要是兼容了支持BLE的Android4.3终端设备之间的蓝牙通信。

主要功能包含:

1、蓝牙的开启、关闭;

2、周围蓝牙开启设备的搜索、建连

3、成功建连后,通过蓝牙向对方发送消息。

注:要想观察发送/接收消息,必须双方都安装了此APP。

源码运行截图

APP打开蓝牙时,对蓝牙的请求

蓝牙通信

[[128207]]

搜索周围安装该APP的蓝牙设备

设置蓝牙的某些属性值

源码片段

  1. private void scanLeDevice(final boolean enable) { 

            if (enable) { 

  2.             // Stops scanning after a pre-defined scan period. 

                mHandler.postDelayed(new Runnable() { 

  3.                 @Override 

                    public void run() { 

  4.                     mScanning = false; 

                        mBluetoothAdapter.stopLeScan(mLeScanCallback); 

  5.                     invalidateOptionsMenu(); 

                    } 

  6.             }, SCAN_PERIOD); 

      

  7.             mScanning = true; 

                mBluetoothAdapter.startLeScan(mLeScanCallback); 

  8.         } else { 

                mScanning = false; 

  9.             mBluetoothAdapter.stopLeScan(mLeScanCallback); 

            } 

  10.         invalidateOptionsMenu(); 

        } 

  11.   

        // Adapter for holding devices found through scanning. 

  12.     private class LeDeviceListAdapter extends BaseAdapter { 

            private ArrayList mLeDevices; 

  13.         private LayoutInflater mInflator; 

      

  14.         public LeDeviceListAdapter() { 

                super(); 

  15.             mLeDevices = new ArrayList(); 

                mInflator = DeviceScanActivity.this.getLayoutInflater(); 

  16.         } 

      

  17.         public void addDevice(BluetoothDevice device) { 

                if(!mLeDevices.contains(device)) { 

  18.                 mLeDevices.add(device); 

                } 

  19.         } 

      

  20.         public BluetoothDevice getDevice(int position) { 

                return mLeDevices.get(position); 

  21.         } 

      

  22.         public void clear() { 

                mLeDevices.clear(); 

  23.         } 

      

  24.         @Override 

            public int getCount() { 

  25.             return mLeDevices.size(); 

            } 

  26.   

            @Override 

  27.         public Object getItem(int i) { 

                return mLeDevices.get(i); 

  28.         } 

      

  29.         @Override 

            public long getItemId(int i) { 

  30.             return i; 

            } 

  31.   

            @Override 

  32.         public View getView(int i, View view, ViewGroup viewGroup) { 

                ViewHolder viewHolder; 

  33.             // General ListView optimization code. 

                if (view == null) { 

  34.                 view = mInflator.inflate(R.layout.listitem_device, null); 

                    viewHolder = new ViewHolder(); 

  35.                 viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address); 

                    viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name); 

  36.                 view.setTag(viewHolder); 

                } else { 

  37.                 viewHolder = (ViewHolder) view.getTag(); 

                } 

  38.   

                BluetoothDevice device = mLeDevices.get(i); 

  39.             final String deviceName = device.getName(); 

                if (deviceName != null && deviceName.length() > 0) 

  40.                 viewHolder.deviceName.setText(deviceName); 

                else 

  41.                 viewHolder.deviceName.setText(R.string.unknown_device); 

                viewHolder.deviceAddress.setText(device.getAddress()); 

  42.   

                return view; 

  43.         } 

        } 

  44.   

        // Device scan callback. 

  45.     private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { 

      

  46.         @Override 

            public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { 

  47.             runOnUiThread(new Runnable() { 

                    @Override 

  48.                 public void run() { 

                        mLeDeviceListAdapter.addDevice(device); 

  49.                     mLeDeviceListAdapter.notifyDataSetChanged(); 

                    } 

  50.             }); 

            } 

  51.     }; 

     

源码下载地址:http://down.51cto.com/data/1984795

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...