關於藍牙開發

轉載一篇藍牙開發的文章〜html

原博地址:http://www.cnblogs.com/menglin2010/archive/2011/11/02/2232923.htmljava

Android深刻淺出系列之Bluetooth—藍牙操做(一)

 

  一:什麼是藍牙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地址創建通信的通道進行文件的傳輸。

     

圖十

相關文章
相關標籤/搜索