一:什麼是藍牙
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位址建立通訊的通道進行檔案的傳輸。
圖十