Android蓝牙4.0的数据通讯
生活随笔
收集整理的這篇文章主要介紹了
Android蓝牙4.0的数据通讯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 我在兩家公司都用到了app與BLE設備通訊,當時也是什么都不懂,在網上各種搜索,各種查資料,總算弄出來了。在這里記錄下來,希望對有需要的人有些幫助。
? 1.檢測手機是否支持藍牙4.0(一般手機4.3以上的android系統都支持)
???
<span style="font-size:14px;"> if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {showMsg(R.string.ble_not_supported);finish();}</span> ?? 2.檢測藍牙是否打開,提示用戶打開藍牙(在此之前需要加相應的權限)????? 添加權限: <span style="font-size:14px;"> <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/><uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/></span>
?????? 獲取藍牙適配器
????????
<span style="font-size:14px;">final BluetoothManager bluetoothManager =(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);bluetoothAdapter = bluetoothManager.getAdapter();如果藍牙處于關閉狀態,則通過下面代碼提示用戶啟動藍牙:Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);</span>????? 3.啟動關閉藍牙,獲取藍牙狀態??????????
?????????? 判斷藍牙狀態:bluetoothAdapter.isEnabled()
?????????? 開啟藍牙:bluetoothAdapter.enable();
?????????? 關閉藍牙:bluetoothAdapter.disable();
??????
????? 4.藍牙啟動后,就該搜索設備了
???????????
?????????? 開啟搜索:?bluetoothAdapter.startLeScan(mLeScanCallback);
??????? ?? 停止搜索: bluetoothAdapter.stopLeScan(mLeScanCallback);
?????????? 搜索回調:
?????????????????????
private BluetoothAdapter.LeScanCallback mLeScanCallback =new BluetoothAdapter.LeScanCallback() {@Overridepublic void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {runOnUiThread(new Runnable() {@Overridepublic void run() {//在這里將搜到的設備顯示到界面}});}};????????????????? 5.建立連接
?????????
???????????
public boolean connect(BluetoothDevice device ) {if (device == null) {Log.w(TAG, "Device not found. Unable to connect.");return false;}mBluetoothGatt = device.connectGatt(this, false, mGattCallback);return true;} ???????????????????????????????????? 連接時需要注冊一個回調接口: private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {//檢測連接狀態變化@Overridepublic void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {if (newState == BluetoothProfile.STATE_CONNECTED) {} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {}}@Overridepublic void onServicesDiscovered(BluetoothGatt gatt, int status) {}@Overridepublic void onCharacteristicRead(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic,int status) {}//接收藍牙回傳數據@Overridepublic void onCharacteristicChanged(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic) {System.out.println("接收數據");byte[] data=characteristic.getValue();}//檢測用戶向藍牙寫數據的狀態@Overridepublic void onCharacteristicWrite(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic, int status) {Log.e(TAG, "write status"+":"+status);if(status==BluetoothGatt.GATT_SUCCESS){System.out.println("--------write success----- status:");}super.onCharacteristicWrite(gatt, characteristic, status);}};?????? 斷開連接:
????????????? ?mBluetoothGatt.disconnect();
?6.發送數據
???? //設置特性數據回傳通知
???????
總結
以上是生活随笔為你收集整理的Android蓝牙4.0的数据通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国电信路由器设置虚拟服务器,中国电信天
- 下一篇: 关于ansys仿真