Android Bluetooth開發1

 1、獲取本地藍牙適配器

 BluetoothAdapter mAdapter= BluetoothAdapter.getDefaultAdapter();

 2、打開藍牙

      if(!mAdapter.isEnabled()){

//彈出對話框提示用戶是後打開

Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enabler, REQUEST_ENABLE);

      //不做提示,強行打開

      // mAdapter.enable();

}

3、搜索設備
1)第一步,mAdapter.startDiscovery()

2)定義BroadcastReceiver,

    BroadcastReceiver mReceiver = new BroadcastReceiver() {  
        public void onReceive(Context context, Intent intent) {  
            String action = intent.getAction();  
            //找到設備  
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {  
                BluetoothDevice device = intent  
                        .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);  
      
                if (device.getBondState() != BluetoothDevice.BOND_BONDED) {  
      
                    Log.v(TAG, "find device:" + device.getName()  
                            + device.getAddress());  
                }  
            }  
            //搜索完成  
            else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED  
                    .equals(action)) {  
                setTitle("搜索完成");  
                }  
            }  
        }  
    };  

  這樣,沒當查找到新設備或是搜索完成,相應的操作都在上段代碼的兩個if裏執行了,不過前提是你要先註冊

BroadcastReceiver,具體代碼如下

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);  
    registerReceiver(mReceiver, filter);  
    filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);  
    registerReceiver(mReceiver, filter);
(這段代碼,一般寫在onCreate()裏..)

  4、建立連接

首先Android sdk(2.0以上版本)支持的藍牙連接是通過BluetoothSocket建立連接,服務器端(BluetoothServerSocket)和客戶端(BluetoothSocket)需指定同樣的UUID,才能建立連接,因爲建立連接的方法會阻塞線程,所以服務器端和客戶端都應啓動新線程連接


1)服務器端:

//UUID格式一般是"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"可到
//http://www.uuidgenerator.com 申請

BluetoothServerSocket serverSocket = mAdapter. listenUsingRfcommWithServiceRecord(serverSocketName,UUID);
serverSocket.accept();

2)客戶端:
//在BroadcastReceiver獲取了BLuetoothDevice
BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID);
clienSocket.connect();


5、數據傳遞

通過以上操作,就已經建立的BluetoothSocket連接了,數據傳遞是通過流的形式

1)獲取流
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
2)寫出、讀入
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章