一:什么是蓝牙

    1:Bluetooth是目前使用最广泛的无线通讯协议,近距离无线通讯的标准。传说瑞典有个国王特别爱吃蓝莓导致自己的牙齿天天都是蓝色的,在他执政期间这位国王非常善于交际,能说会到,和邻国的搞得关系非常好,这个Bluetooth的发明者觉得蓝牙它的作用就是在近距离沟通周围的设备,跟这个国王很类似,于是起名叫蓝牙。

    2:主要针对短距离设备通讯(10米)

    3:无线耳机,无线鼠标,无线键盘

    

蓝牙标志

  二:蓝牙工作流程图

    首先两个设备上都要有蓝牙设备或者专业一点叫蓝牙适配器,以手机和电脑为例我画了如下流程图。其次在手机上进行扫描,扫描周围蓝蓝牙设备,先找到手机附近的电脑,然后给它发出一个信号需要进行蓝牙的配对,再次返回一个信号说明手机和电脑已经配对成功了,最后配对成功后可以进行文件传输了。这是一个最基本的一个流程。

  三:与蓝牙相关的最重要的两个API

    1:BuletoothAdapter

    这个类的对象代表了本地的蓝牙适配器,相当于蓝牙工作流程图中的手机里的蓝牙适配器,也就是说比如这个应用程序是运行在手机上,那么手机上的蓝牙适配器就是本地蓝牙适配器。

    2:BuletoothDevice

    这个类的对象代表了远程的蓝牙设备,相当于蓝牙工作流程图中的计算机里的蓝牙适配器,也就是说比如这个应用程序是运行在手机上,那么BuletoothDevice代表了你要连接的远程的那个设备上面的蓝牙适配器。

  四:硬件准备

    今天这个示例必须运行在具有安卓2.0SDK以上的手机上面,不能运行在模拟器上面,因为现在的模拟器是不能模拟蓝牙的,所以必须有个安卓的手机,另外要有台具有蓝牙适配器的电脑。手机和电脑来进行配对,只能通过手动来进行,不可能通过代码是实现配对,因为安全性的问题不能通过应用程序自动的来进行配对,一旦配对成功就可以进行文件的传输了。如何配对在这里就不讲解了。

五:如何蓝牙配对

本来是要拿手机和电脑作为调试的,但是我的电脑上面没有蓝牙适配器,所以就用蓝牙笔代替了。

1:插入手机

如果发现没有驱动系统会提示安装驱动

2 :下载豌豆荚

豌豆荚会自动安装手机对应型号的USB驱动,USB调试默认是打开的(一定要开启手机的USB调试),等待安装完成。

3 :打开在eclipse的DDMS视图里的Devices这一区域出现了你的手机设备的数字名称了。

4:打开手机上的“设置”

5:选择“无线和网络”

给蓝牙打上勾,此时手机头部的蓝牙小图标已打开,表示开启了蓝牙

6:扫描配对

拿起蓝牙笔,打开它的开关,点击手机上面的“扫描查找设备”

7:请求配对

输入密钥请求配对,然后等待配对成功

   六:实现效果

扫描已配对的远程蓝牙设备

代码步骤

    1:需要在AndroidMainfest.xml里声明蓝牙权限

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

    2:获得BluetoothAdapter对象

    3:判断当前设备中是否拥有蓝牙设备

    4:判断当前设备中的蓝牙设备是否已经打开

    5:得到所有已经配对的蓝牙设备对象

  七:代码

    1:布局文件main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
       >
    <TextView  
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/hello"
      />
      <Button
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="扫描周围的蓝牙设备"
     android:id="@+id/btn2"
    />
  </LinearLayout>

  2:代码文件MainActivity.java

  package com.szy.bluetooth;

  import java.util.Iterator;
  import java.util.Set;
  import android.app.Activity;
  import android.bluetooth.BluetoothAdapter;
  import android.bluetooth.BluetoothDevice;
  import android.content.Intent;
  import android.os.Bundle;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;

   public class MainActivity extends Activity {
      private Button mybutton = null;
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          //得到按钮
          mybutton = (Button)findViewById(R.id.btn2);
          //绑定监听器
          mybutton.setOnClickListener(new ButtonListener());
     }
  

  //监听器匿名类
     private class ButtonListener implements OnClickListener
     {
        public void onClick(View v)
      {
         //得到BluetoothAdapter对象
         BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
         //判断BluetoothAdapter对象是否为空,如果为空,则表明本机没有蓝牙设备
         if(adapter != null)
         {
            System.out.println("本机拥有蓝牙设备");
            //调用isEnabled()方法判断当前蓝牙设备是否可用
            if(!adapter.isEnabled())
            {     
               //如果蓝牙设备不可用的话,创建一个intent对象,该对象用于启动一个Activity,提示用户启动蓝牙适配器
               Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
               startActivity(intent);
            }
            //得到所有已经配对的蓝牙适配器对象
            Set<BluetoothDevice> devices = adapter.getBondedDevices();
            if(devices.size()>0)    
            {
               //用迭代
               for(Iterator iterator = devices.iterator();iterator.hasNext();)
               {
                  //得到BluetoothDevice对象,也就是说得到配对的蓝牙适配器
                  BluetoothDevice device = (BluetoothDevice)iterator.next();
                  //得到远程蓝牙设备的地址
                  Log.d("mytag",device.getAddress());

          }     
          }
       }
       else
       {
          System.out.println("没有蓝牙设备");
       }
     }           
      }
  }

  八:不连接安卓手机效果图

    因为找不到蓝牙设备所以会在DDMS视图下的系统信息里输出“没有蓝牙设备”。

 

    九:调试效果图

我们得到了蓝牙笔的蓝牙适配器的地址,我们接下来用MAC地址建立通讯的通道进行文件的传输。

Android深入浅出系列之Bluetooth—蓝牙操作(一)相关推荐

  1. Android深入浅出系列之Android工具的使用—调试桥ADB(二)

    阅读目录 一:调试桥ADB 二:ADB的主要功能有哪些? 一:调试桥ADB   adb是什么?adb有什么用?adb工具如何用? 是用来管理模拟器和真机的通用调试工具,该工具功能强大,直接打开cmd即 ...

  2. Android深入浅出系列之实例应用—弹出消息Toast对象的使用自定义方式(二)

    阅读目录 一:前言 二:实例 三:运行效果 一:前言 Android中定义了一个Toast对象,用以弹出一个窗口来给予用户帮助和提示,和对话框不同的是,Toast并不是以独占方式显示的,它并不会抢夺用 ...

  3. Android深入浅出系列之Android工具的使用—模拟器(一)

    前言 我们下载的SDK包里面有一个叫"Tools"的文件夹,里面为我们提供了许多与Android开发相关的工具,其中一些是必不可少的,现在我们就介绍一下模拟器 Android模拟器 ...

  4. Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用...

    前言 我们现在在随便一个手机上用手指在屏幕上滑来滑都可以去拖动图片,其实在Android里这很简单,下面我就给大家具体讲解一下. 思路   我们首先需要Gallery这个对象,俗称画廊对象,大家都知道 ...

  5. Android深入浅出系列之实例应用—手机页面之间的跳转

    在网页里,我们可以通过超级链接从一个网页跳转到另外一个网页,在手机里面,要如何实现手机页面之间的跳转呢? 原理:通过布局文件和setContentView()方法配合来实现.通过点击第一个布局文件ma ...

  6. Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)

    阅读目录 一:Toast 二:实现步骤 一:Toast Toast是Android专属的提示信息的对象,它的使用非常的简单,但是用途却非常的广泛,Toast就是一个简短的信息,将要告诉用户的信息以一个 ...

  7. Android深入浅出系列之Android开发环境搭建—SDK(三)

    安装SDK 1:下载SDK 只有下载了Android的,SDK(Software Development Kit)软件开发工具包,我们才能从事安卓的开发,SDK可以从Android的官方网站上下载,下 ...

  8. Android深入浅出系列课程---Lesson7 LLY110426_Android系统启动

    大家好,上一讲我们介绍了Activity状态保存,这一讲我们将进入Android系统启动. 一.课程目标: 从系统角度了解Android启动过程 二.重点难点:        下载源代码并且根据源代码 ...

  9. Android深入浅出系列课程---Lesson15LLY110602_Dalvik虚拟机概述

    大家好,上一讲我们介绍了Handler-不可缺少的异步,这一讲我们将进入Dalvik虚拟机概述. 课程目标: 概念性的知道Dalvik虚拟机基于JVM的改进及其对移动设备的好处: 1)dex file ...

最新文章

  1. elementui可编辑单元格_关于遥感解译点室内解译编号的读取编辑方法
  2. c语言打不开h文件,说那个“mem.h”头文件打不开 怎么改啊 高手们帮帮忙
  3. STM32学习1之ADC+DMA(使用定时器触发)
  4. db2表名大小写问题
  5. Android LruCache技术原理
  6. c++11 多线程编程(一)------初始
  7. jboss-remoting服务
  8. SQL Server导出MDF数据库文件
  9. win10 电池测试软件,Win10电池检测方法及查看Win10电池检测报告说明
  10. 作为非计算机专业的我,是如何拿下软考软件设计师的?
  11. 面试后说hold什么意思_为什么面试完,总是让你回去等通知?
  12. C语言中文网_java复习进度
  13. iOS基础:新浪微博授权机制、 版本新特性
  14. 毕设-基于LoRa的智能农业大棚(一)
  15. android 24节气及节日,iOS -- 获取24节气和节日
  16. 《绝地求生》玩家排名预测(2万5千字~大型综合实战)
  17. 在Windows 7 Media Center中无需电视调谐器观看电视节目
  18. 数字健康-共建共享 火绒安全将亮相2021中华医院信息网络大会(CHINC)
  19. 2022区块链应用全景及未来展望
  20. IDC 基础设施包括哪些,它们的用途?

热门文章

  1. 卸载微软拼音2003
  2. centos 6.5安装步骤
  3. 电脑设备管理器无端口显示怎么办?
  4. matlab from workplace,关于使用From workspace的问题
  5. PS10修复工具组(人物祛斑),PS12强大的画笔工具(手绘),PS13铅笔工具(颜色替换)
  6. mac小技巧之打印文件
  7. 【有奖众测】快服务开发者俱乐部第一期来咯!
  8. python_获取两个数,打印中间值
  9. 当你的才华撑不起你的野心的时候,你就应该努力
  10. 公众号怎么做?要怎么做才赚钱?