歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android藍牙開發淺析

Android藍牙開發淺析

日期:2017/3/1 10:24:09   编辑:Linux編程

由於近期正在開發一個通過藍牙進行數據傳遞的模塊,在參考了有關資料,並詳細閱讀了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