此例子基于 android demo

Android的蓝牙开发,虽然不多用,但有时还是会用到, 
Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试需要两部手机;

      由于公司用到了蓝牙,所以学习了一下,也和大家分享一下!

总体来说和网络 socket 很相似,监听,连接,成功后,发送数据;

  我将蓝牙分成了客户端和服务端,下载地址:

  http://download.csdn.net/detail/q610098308/8681065

  第一步:

先要在AndroidManifest.xml里加入权限

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

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



    看下api,Android所有关于蓝牙开发的类都在android.bluetooth包下,如下图,只有8个类

                

  

1、获取本地蓝牙适配器

       // Get local Bluetooth adapter

      mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

        if(mBluetoothAdapter==null)                 //如果为空可能不存在蓝牙,退出;

        {

             Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();

             return;

        }

       

      2、打开蓝牙

      if(!mAdapter.isEnabled()){

            //弹出对话框提示用户是后打开

            Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

             startActivityForResult(enabler, REQUEST_ENABLE);

           //不做提示,强行打开

           // mAdapter.enable();

}



   3, 建立连接,服务器端(BluetoothServerSocket)和客户端(BluetoothSocket)需指定同样的UUID,才能建立连接,因为建立连接的方法会阻塞线程,所以服务器端和客户端都应启动新线程连接

 1)服务器端:

  

// Unique UUID for this application

    private static final UUID MY_UUID_SECURE =

        UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");

    private static final UUID MY_UUID_INSECURE =

        UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");



BluetoothServerSocket serverSocket = mAdapter. listenUsingRfcommWithServiceRecord(serverSocketName,MY_UUID_SECURE);



serverSocket.accept();



2)客户端:



//还记得我们刚才在BroadcastReceiver获取了BLuetoothDevice么?



BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID MY_UUID_INSECURE);



clienSocket.connect();



4、数据传递,通过以上操作,就已经建立的BluetoothSocket连接了,数据传递无非是通过流的形式



1)获取流



inputStream = socket.getInputStream();



outputStream = socket.getOutputStream();



2)写出、读入

                    // Read from the InputStream

                    bytes = mmInStream.read(buffer);

                    mmOutStream.write(buffer);          




demo是包括客户端和服务端;分别放到两个手机上就可以通信;大家改改应该就可以用;

http://download.csdn.net/detail/q610098308/8628675

http://download.csdn.net/detail/q610098308/8681065




android 蓝牙 通信 bluetooth的更多相关文章

  1. Android蓝牙通信功能开发

    1. 概述 Bluetooth 是几乎现在每部手机标准配备的功能,多用于耳机 mic 等设备与手机的连接,除此之外,还可以多部手机之间建立 bluetooth 通信,本文就通过 SDK 中带的一个聊天 ...

  2. Android蓝牙通信总结

    这篇文章要达到的目标: 1.介绍在Android系统上实现蓝牙通信的过程中涉及到的概念. 2.在android系统上实现蓝牙通信的步骤. 3.在代码实现上的考虑. 4.例子代码实现(手持设备和蓝牙串口 ...

  3. Qt on Android 蓝牙通信开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...

  4. Android蓝牙通信具体解释

    蓝牙通信的大概过程例如以下: 1.首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket.获取输入输出流 4,读取和写入数据 5.断开连接关闭蓝牙 还要发送配对码发送进行推断! 以下是全部的源码:不 ...

  5. Android蓝牙通信

    Android为蓝牙设备之间的通信封装好了一些调用接口,使得实现Android的蓝牙通信功能并不困难.可通过UUID使两个设备直接建立连接. 具体步骤: 1. 获取BluetoothAdapter实例 ...

  6. (转)android 蓝牙通信编程

    转自:http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样 ...

  7. android 蓝牙通信编程讲解

    以下是开发中的几个关键步骤: 1,首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket,获取输入输出流 4,读取和写入数据 5,断开连接关闭蓝牙 下面是一个demo 效果图: SearchDevi ...

  8. Android蓝牙技术Bluetooth使用流程(具体解释)

    一:蓝牙设备之间的通信主要包含了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的传输数据 二:详细编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAd ...

  9. Android 蓝牙通信——AndroidBluetoothManager

    转载请说明出处! 作者:kqw攻城狮 出处:个人站 | CSDN To get a Git project into your build: Step 1. Add the JitPack repos ...

随机推荐

  1. 【tips】自动化测试工具 - selenium和phantomJS

    ### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...

  2. at24c02系列和at24c256系列的比较

    编号的含义: at24c02系列包括的有: 128(1K),256(2K),512(4K),1024(8K),2048(16K)字节(B) at24c256系列包括的有: 16384(128K),32 ...

  3. 1. Jenkins 入门使用

    1. 下载jenkins https://pkg.jenkins.io/redhat-stable/ sudo wget -O /etc/yum.repos.d/jenkins.repo https: ...

  4. idea 编译级别的设置

    File->Settings Project Structure

  5. 【Codeforces 1063B】Labyrinth

    [链接] 我是链接,点我呀:) [题意] 你可以往左最多x次,往右最多y次 问你从x,y出发最多能到达多少个格子 只能往上下左右四个方向走到没有障碍的格子 [题解] 假设我们从(r,c)出发想要到固定 ...

  6. 【Codeforces 356A】Knight Tournament

    [链接] 我是链接,点我呀:) [题意] n个人矩形m场比赛 每场比赛由编号为li~ri且之前没有被淘汰的人进行. 已知第i场的winner是xi winner会把这一场其他所有的人都淘汰. 问你n个 ...

  7. 基础算法(java版本)

    Practice Author: Dorae Date: 2018年10月11日13:57:44 转载请注明出处 具体代码请移步git 基础算法 图 Prim Kruskal Dijkstra Flo ...

  8. E - 不容易系列之(4)――考新郎 错排数公式

    国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:  首先,给每位新娘打扮得几乎一模一 ...

  9. - > 贪心基础入门讲解五——任务执行顺序

    分析: 本题可以抽象成,从一个整数开始,每次减去a,再加上b (a,b都是正数),要求每次操作都不产生负数. 针对本题a[i] = R[i], b[i] = R[i] – O[i],注意O[i] &l ...

  10. 《Sams Teach Yourself Windows® Workflow Foundation in 24 Hours》读书笔记目录

    目录 1 Part I - The Basics 1.1 Hour 1 - Understanding Windows Workflow Foundation 1.2 Hour 2 - A Spin ...