Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android藍牙通信概述

Android藍牙通信概述

編輯:Android開發教程

通常情況下,我們對藍牙的操作主要有:開啟和關閉藍牙、搜索周邊設備、能被周邊設備所發現、獲取配對設備、藍牙設備間的數據傳輸。

1、打開藍牙(當然首先要確保你的手機是有藍牙設備的)

藍牙設備主要分為兩部分,一部分為本地設備,另一部分為遠程設備。

BluetoothAdapter——本地設備,對藍牙操作首先就需要有一個BluetoothAdapter實例。常用的幾個方法如下:

cancelDiscovery()——取消本地藍牙設備的搜索操作,如果本地設備正在進行搜索,那麼調用該方法後將停止搜索操作。

Disable()——關閉藍牙設備。

Enable()——打開藍牙設備。相信大家都有過打開藍牙的經歷,一般情況下都會彈出一個窗口,說正在請求打開藍牙設備,你是不是允許雲雲。

getAddress()——獲取藍牙設備的MAC地址。

GetDefaultAdapter()——獲取本地的藍牙設備

getName()——獲取本地藍牙的名稱

getRemoteDevice(String address)——根據遠程設備的MAC地址來獲取遠程設備

startDiscovery()——藍牙設備開始搜索周邊設備
   BuletoothDevice——遠程設備。

它所包含的方法和BluetoothAdapter一樣,不再累述。

View Code   
 // 獲取本地的藍牙適配器實例  
             BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();  
             if(adapter!=null)  
             {  
                 if(!adapter.isEnabled())  
                 {  
                     //通過這個方法來請求打開我們的藍牙設備  
                     Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);  
                     startActivity(intent);  
                 }  
             }  
             else
             {  
                 System.out.println("本地設備驅動異常!");  
             }

2、搜索周邊設備

對於Android查找發現藍牙設備使用BluetoothAdapter類的startDiscovery()方法就可以執行一個異步方式獲取周邊的藍牙設備,因為是一個異步的方法所以我們不需要考慮線程被阻塞問題,整個過程大約需要12秒時間,這時我們可以注冊一個 BroadcastReceiver 對象來接收查找到的藍牙設備信息,我們通過Filter來過濾ACTION_FOUND這個 Intent動作以獲取每個遠程設備的詳細信息,通過Intent字段EXTRA_DEVICE 和 EXTRA_CLASS可以獲得包含了每個BluetoothDevice 對象和對象的該設備類型 BluetoothClass。

實現一個自己的BroadCastReceiver類,並注冊這個類。

View Code   
     private class BluetoothReciever extends BroadcastReceiver {  
       
         @Override
         public void onReceive(Context context, Intent intent) {  
             // TODO Auto-generated method stub  
             String action = intent.getAction();  
             if (BluetoothDevice.ACTION_FOUND.equals(action)) {  
                 BluetoothDevice device = intent  
                         .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);  
                 System.out.println(device.getAddress());  
             }  
         }  
       
     }
IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);  
bluetoothReceive = new BluetoothReciever();  
registerReceiver(bluetoothReceive, intentFilter);

因為在注冊一個Receiver後,程序並不知道該何時去回收它,所以需要我們自己重寫Activity類的onDestroy()方法。

@Override
     protected void onDestroy() {  
         // TODO Auto-generated method stub  
         unregisterReceiver(bluetoothReceive);  
         super.onDestroy();  
     }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved