Android深入淺出系列之Bluetooth-藍牙操作(一)


一:什麼是藍牙

    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地址建立通訊的通道進行文件的傳輸。

     

圖十

 

 

 

舉例和生活相結合,做一條快樂的小<。)#)))≦兒
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章