1、藍牙4.0簡介html
藍牙4.0標準包含兩個藍牙標準,準確的說,是一個雙模的標準,它包含傳統藍牙部分(也有稱之爲經典藍牙Classic Bluetooth)和低功耗藍牙部分(Bluetooth Low Energy)。這兩個部分適用於不一樣的應用或者應用條件。傳統藍牙是在以前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基礎上發展和完善起來的,低功耗藍牙是Nokia的Wibree標準上發展起來的。 android
傳統藍牙能夠用與數據量比較大的傳輸,如語音,音樂,較高數據量傳輸等,低功耗藍牙這樣應用於實時性要求比較高,可是數據速率比較低的產品,如遙控類的,如鼠標,鍵盤,遙控鼠標(Air Mouse),傳感設備的數據發送,如心跳帶,血壓計,溫度傳感器等。傳統藍牙有3個功率級別,Class1,Class2,Class3,分別支持100m,10m,1m的傳輸距離,而低功耗藍牙無功率級別,通常發送功率在7dBm,通常在空曠距離,達到20m應該。因此藍牙4.0是集成了傳統藍牙和低功耗藍牙兩個標準的,並不僅是低功耗藍牙。
數組
藍牙4.0是藍牙3.0+HS規範的補充,專門面向對成本和功耗都有較高要求的無線方案,較3.0版本更省電、低成本和跨廠商互操做性、3毫秒低延遲、超長有效鏈接距離、AES-128加密等;藍牙4.0可普遍用於衛生保健、體育健身、家庭娛樂、安全保障等諸多領域。一般用在藍牙耳機、藍牙音箱、計步器、心律監視器、智能儀表、傳感器物聯網等設備上,大大擴展藍牙技術的應用範圍。該技術擁有極低的運行和待機功耗,使用一粒鈕釦電池甚至可連續工做數年之久。安全
2、藍牙BLE簡介架構
BLE是藍牙低能耗的簡稱(Bluetooh Low Energy)。藍牙低能耗(BLE)技術是低成本、短距離、可互操做的魯棒性無線技術,工做在免許可的2.4GHz ISM射頻頻段。它從一開始就設計爲超低功耗(ULP)無線技術。它利用許多智能手段最大限度地下降功耗。ide
藍牙低能耗架構共有兩種芯片構成:單模芯片和雙模芯片。藍牙單模芯片能夠和其它單模芯片及雙模芯片通訊,此時後者須要使用自身架構中的藍牙低能耗技術部分進行收發數據。雙模芯片也能與標準藍牙技術及使用傳統藍牙架構的其它雙模芯片通訊。雙模芯片能夠在目前使用標準藍牙芯片的任何場合使用。這樣安裝有雙模芯片的手機、PC、我的導航設備(PND)或其它應用就能夠和市場上已經在用的全部傳統標準藍牙設備以及全部將來的藍牙低能耗設備通訊。單模芯片能夠用單節鈕釦電池(如3V、220mAh的CR2032)工做很長時間(幾個月甚至幾年)。post
3、android中藍牙開發ui
(1)權限及featurethis
<uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
finish();
}
(2)啓動藍牙加密
// Initializes Bluetooth adapter.
final BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
private BluetoothAdapter mBluetoothAdapter;
...
// Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth.
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
(3)搜索BLE設備
BluetoothAdapter.LeScanCallback
參數。所以你須要實現
BluetoothAdapter. LeScanCallback
接口,BLE設備的搜索結果將經過這個callback返回。搜索的示例代碼以下:
/**
* Activity for scanning and displaying available BLE devices.
*/
public class DeviceScanActivity extends ListActivity {
private BluetoothAdapter mBluetoothAdapter;
private boolean mScanning;
private Handler mHandler;
// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;
...
private void scanLeDevice(final boolean enable) {
if (enable) {
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
...
}
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
}
});
}
};
}
startLeScan(UUID[], BluetoothAdapter.LeScanCallback)
方法。其中UUID數組指定你的應用程序所支持的GATT Services的UUID;