轉載一篇藍牙開發的文章〜html
原博地址:http://www.cnblogs.com/menglin2010/archive/2011/11/02/2232923.htmljava
一:什麼是藍牙android
1:Bluetooth是目前使用最普遍的無線通信協議,近距離無線通信的標準。傳說瑞典有個國王特別愛吃藍莓致使本身的牙齒每天都是藍色的,在他執政期間這位國王很是善於交際,能說會到,和鄰國的搞得關係很是好,這個Bluetooth的發明者以爲藍牙它的做用就是在近距離溝通周圍的設備,跟這個國王很相似,因而起名叫藍牙。安全
2:主要針對短距離設備通信(10米)網絡
3:無線耳機,無線鼠標,無線鍵盤app
二:藍牙工做流程圖eclipse
首先兩個設備上都要有藍牙設備或者專業一點叫藍牙適配器,以手機和電腦爲例我畫了以下流程圖。其次在手機上進行掃描,掃描周圍藍藍牙設備,先找到手機附近的電腦,而後給它發出一個信號須要進行藍牙的配對,再次返回一個信號說明手機和電腦已經配對成功了,最後配對成功後能夠進行文件傳輸了。這是一個最基本的一個流程。佈局
三:與藍牙相關的最重要的兩個APIpost
1:BuletoothAdapterurl
這個類的對象表明了本地的藍牙適配器,至關於藍牙工做流程圖中的手機裏的藍牙適配器,也就是說好比這個應用程序是運行在手機上,那麼手機上的藍牙適配器就是本地藍牙適配器。
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地址創建通信的通道進行文件的傳輸。
圖十