一:什么是蓝牙
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地址建立通讯的通道进行文件的传输。
图十
分享到:
相关推荐
蓝牙耳机一拖二是什么意思 蓝牙耳机一拖二操作方法【详解】.docx
Android蓝牙相关操作源代码,包括蓝牙扫描、连接、通讯相关一操作.
android端移动开发的蓝牙的开发,及其配置,蓝牙打开,蓝牙扫描,蓝牙关闭等一系列操作,很全面
采用kotlin 对蓝牙进行打开和关闭,以及搜索蓝牙设备,与其他蓝牙设备配对,并将所有配对的信息进行显示。相关说明看 https://mp.csdn.net/mp_blog/creation/editor/119547298
在使用手机时,蓝牙通信给我们带来很多方便。那么在Android手机中怎样进行蓝牙开发呢?本文以实例的方式讲解Android蓝牙开发的知识。... 在这里首先要了解对蓝牙操作一个核心类BluetoothAdapter。 Bl
IBLeLib是一个安卓Android平台的蓝牙库,可以方便的实现蓝牙的搜索、连接、数据读取的操作
蓝牙遥控器软件,可以将你的手机变成一部电脑遥控器,使用手机可以控制电脑的鼠标操作、键盘的输入,如果你的手机具有手写功能,还可以将你的手机变成手写板。 这个软件分为两部分,一个是安装到手机上,另一个安装...
BlueSoleil是IVT公司推出的一款多语言版蓝牙驱动产品,它秉承了BlueSoleil系列一贯的简洁易用的功能特点,以及美观友好的操作界 面,轻松帮您实现台式机或笔记本等各种计算机平台间的无线连接;无线访问种类繁多的...
这是一个关于用代码控制蓝牙的开关及搜索的示例
-一台设备作为服务端,一台作为客户端,两台设备需要先蓝牙配对成功,然后才能开始打开APP进行操作。 - 一台手机作为服务端,右上方顶部ActionBar有一个按钮,点击后从本地图库添加图片和拍照获取图片。中间是...
Android 蓝牙BLE全面解析以及智能车锁开发实例一、蓝牙BLE产生背景——蓝牙的发展历程 二、蓝牙BLE的基本概念 三、蓝牙BLE的架构介绍 1. 蓝牙BLE架构概览 2. 简述BLE如何发送数据包 2.1 广播方式 2.2 连接方式 四、...
由于蓝牙4.0协议拥有极低的运行和待机功耗,使用一 粒纽扣电池甚至可连续工作数年之久;同时还有低成本、跨 厂商互操作性、3毫秒低延迟、AES.128加密等诸多特色, 可以广泛应用于计步器、心律监视器、智能仪表、...
BM3508 模块是一款符合蓝牙标准的双模蓝牙产品,目前支持的协议包括 BR/EDR/LE,支持 UART ...三者集成在一个小封装的邮票孔 PCB 上,开发人员可以通过串口(UART)进行数据的收发操作,简化了开发难度节省了开发成本
Android-BLE,AndroidBLE 蓝牙框架,包括扫描、连接、设置通知、发送数据、读取、接收数据和 OTA 升级以及各种直观的回调,近乎一行代码植入项目,可扩展配置蓝牙相关操作。.zip
而蓝牙技术是一种短距离、 低功耗的无线通信技术,采用跳频机制进行数据传送,故能极大地提高数据传送的抗干扰性 能。对于数据采集系统的应用而言,两者的结合大大简化了分布采集设备繁琐的配 置和系统 复杂度,且...
因为系统的蓝牙操作库是用delegate实现的,步骤比较繁多,操作很零散,需要写一堆的代理方法,特别麻烦 所以我用block方式重写了,蓝牙管理的所有代码在HLBluetooth目录中。 又因为项目中要用蓝牙控制打印机...
摘 要:基于对Linux 下蓝牙协议栈BlueZ 源代码的分析,给出BlueZ的组织结构和特点。分析蓝牙USB 传输驱动机制和数据处理过程, 给出实现蓝牙设备驱动的重要数据结构和流程,并总结Linux 下开发蓝牙USB 设备驱动的...
A simple and efficient library for Bluetooth(BLE). 一个简洁高效的蓝牙库,用于IOS和OSX。
BTW5.0也具有支持增强数据速率(EDR)技术的功能(Broadcom BCM2045单芯片蓝牙无线接受器也支持),这个功能提供非EDR蓝牙设备几乎3倍的吞吐量,并包括对下一代操作系统的64位系统支持。 最广泛的软件功能简介 ...
BlueToothExc_Plus蓝牙API编程实例,用windowsAPI编写的一个蓝牙识别和串口通信的例子。可以在VS2010上编译通过