編輯:Android開發實例
使用BluetoothAdapter類,你能夠在Android設備上查找周邊的藍牙設備然後配對(綁定),藍牙通訊是基於唯一地址MAC來相互傳輸的,考慮到安全問題Bluetooth通訊時需要先配對。然後開始相互連接,連接後設備將會共享同一個RFCOMM通道以便相互傳輸數據,目前這些實現在Android 2.0或更高版本SDK上實現。
一、查找發現 findding/discovering devices
對於Android查找發現藍牙設備使用BluetoothAdapter類的startDiscovery()方法就可以執行一個異步方式獲取周邊的藍牙設備,因為是一個異步的方法所以我們不需要考慮線程被阻塞問題,整個過程大約需要12秒時間,這時我們緊接著注冊一個BroadcastReceiver 對象來接收查找到的藍牙設備信息,我們過濾ACTION_FOUND這個 Intent動作來獲取每個遠程設備的詳細信息,通過附加參數在Intent字段EXTRA_DEVICE 和 EXTRA_CLASS, 中包含了每個BluetoothDevice 對象和對象的該設備類型 BluetoothClass ,示例代碼
private final BroadcastReceiver cwjReceiver = 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);
myArrayAdapter.add(device.getName() + " android123 " + device.getAddress()); //獲取設備名稱和mac地址
}
}
};
// 注冊這個 BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(cwjReceiver, filter);
最後android123提醒大家需要注意的是,記住在Service或Activity中重寫onDestory()方法,使用unregisterReceiver方法反注冊這個BroadcastReceiver對象保證資源被正確回收。
一些其他的狀態變化有 ACTION_SCAN_MODE_CHANGED 額外參數 EXTRA_SCAN_MODE 和 EXTRA_PREVIOUS_SCAN_MODE以及SCAN_MODE_CONNECTABLE_DISCOVERABLE、SCAN_MODE_CONNECTABLE和SCAN_MODE_NONE,
二、配對綁定 bnded/paired device
在Android中配對一個藍牙設備可以調用BluetoothAdapter類的getBondedDevices()方法可以獲取已經配對的設備,該方法將會返回一個BluetoothDevice數組來區分每個已經配對的設備,示例代碼如下:
Set<BluetoothDevice> pairedDevices = cwjBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) //如果獲取的結果大於0,則開始逐個解析
{
for (BluetoothDevice device : pairedDevices) {
myArrayAdapter.add(device.getName() + " android123 " + device.getAddress()); //獲取每個設備的名稱和MAC地址添加到數組適配器myArrayAdapter中。
}
}
很多網友不明白如何讓自己的手機被其他藍牙設備發現如何設置,下面我們就一起來說說
三、允許發現 enabling discoverability
如果需要用戶確認操作,不需要獲取底層藍牙服務實例,可以通過一個Intent來傳遞ACTION_REQUEST_DISCOVERABLE參數
,這裡通過startActivityForResult來強制獲取一個結果,重寫startActivityForResult()方法獲取執行結果,返回結果有RESULT_OK和RESULT_CANCELLED分別代表開啟和取消(失敗),當然最簡單的方法是直接執行,示例代碼如下
Intent cwjIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
cwjIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(cwjIntent);
接下來系統會提示用戶是否允許,對話框如下
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
View Android所有的控件都是View或者View的子類,它其實表示的就是屏幕上的一塊矩形區域,用一個Rect來表示,left,top表示View相對於它