歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android藍牙開發淺析

由於近期正在開發一個通過藍牙進行數據傳遞的模塊,在參考了有關資料,並詳細閱讀了Android的官方文檔後,總結了Android中藍牙模塊的使用。

1. 使用藍牙的響應權限

  1. <uses-permission android:name="android.permission.BLUETOOTH" />  
  2. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  

2. 配置本機藍牙模塊

在這裡首先要了解對藍牙操作一個核心類BluetoothAdapter

  1. BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();  
  2. //直接打開系統的藍牙設置面板   
  3. Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);  
  4. startActivityForResult(intent, 0x1);  
  5. //直接打開藍牙   
  6. adapter.enable();  
  7. //關閉藍牙   
  8. adapter.disable();  
  9. //打開本機的藍牙發現功能(默認打開120秒,可以將時間最多延長至300秒)   
  10. discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);//設置持續時間(最多300秒)Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);  

3.搜索藍牙設備

使用BluetoothAdapter的startDiscovery()方法來搜索藍牙設備

startDiscovery()方法是一個異步方法,調用後會立即返回。該方法會進行對其他藍牙設備的搜索,該過程會持續12秒。該方法調用後,搜索過程實際上是在一個System Service中進行的,所以可以調用cancelDiscovery()方法來停止搜索(該方法可以在未執行discovery請求時調用)。

請求Discovery後,系統開始搜索藍牙設備,在這個過程中,系統會發送以下三個廣播:

ACTION_DISCOVERY_START:開始搜索

ACTION_DISCOVERY_FINISHED:搜索結束

ACTION_FOUND:找到設備,這個Intent中包含兩個extra fields:EXTRA_DEVICE和EXTRA_CLASS,分別包含BluetooDevice和BluetoothClass。

我們可以自己注冊相應的BroadcastReceiver來接收響應的廣播,以便實現某些功能

  1. // 創建一個接收ACTION_FOUND廣播的BroadcastReceiver   
  2. private final BroadcastReceiver mReceiver = new BroadcastReceiver() {  
  3.     public void onReceive(Context context, Intent intent) {  
  4.         String action = intent.getAction();  
  5.         // 發現設備   
  6.         if (BluetoothDevice.ACTION_FOUND.equals(action)) {  
  7.             // 從Intent中獲取設備對象   
  8.             BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);  
  9.             // 將設備名稱和地址放入array adapter,以便在ListView中顯示   
  10.             mArrayAdapter.add(device.getName() + "\n" + device.getAddress());  
  11.         }  
  12.     }  
  13. };  
  14. // 注冊BroadcastReceiver   
  15. IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);  
  16. registerReceiver(mReceiver, filter); // 不要忘了之後解除綁定  
Copyright © Linux教程網 All Rights Reserved