新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSBLE掃描和廣播
場(chǎng)景介紹

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、細(xì)河網(wǎng)站維護(hù)、網(wǎng)站推廣。
通過 BLE 掃描和廣播提供的開放能力,可以根據(jù)指定狀態(tài)獲取外圍設(shè)備、啟動(dòng)或停止 BLE 掃描、廣播。
接口說明
| 接口名 | 功能描述 |
|---|---|
| startScan(List | 進(jìn)行 BLE 藍(lán)牙掃描,并使用 filters 對(duì)結(jié)果進(jìn)行過濾。 |
| stopScan() | 停止 BLE 藍(lán)牙掃描。 |
| getDevicesByStates(int[] states) | 根據(jù)狀態(tài)獲取連接的外圍設(shè)備。 |
| BleCentralManager(BleCentralManagerCallback callback) | 獲取中心設(shè)備管理對(duì)象。 |
| 接口名 | 功能描述 |
|---|---|
| onScanCallback(BleScanResult result) | 掃描到 BLE 設(shè)備的結(jié)果回調(diào)。 |
| onStartScanFailed(int resultCode) | 啟動(dòng)掃描失敗的回調(diào)。 |
| 接口名 | 功能描述 |
|---|---|
| BleAdvertiser(Context context, BleAdvertiseCallback callback) | 用于獲取廣播操作對(duì)象。 |
| startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse) | 進(jìn)行 BLE 廣播,第一個(gè)參數(shù)為廣播參數(shù),第二個(gè)為廣播數(shù)據(jù),第三個(gè)參數(shù)是掃描和廣播數(shù)據(jù)參數(shù)的響應(yīng)。 |
| stopAdvertising() | 停止 BLE 廣播。 |
| startResultEvent(int result) | 廣播回調(diào)結(jié)果。 |
中心設(shè)備進(jìn)行 BLE 掃描
- 進(jìn)行 BLE 掃描之前先要繼承 BleCentralManagerCallback 類實(shí)現(xiàn) onScanCallback 和 onStartScanFailed 回調(diào)函數(shù),用于接收掃描結(jié)果。
- 調(diào)用BleCentralManager(BleCentralManagerCallback callback)接口獲取中設(shè)備管理對(duì)象。
- 獲取掃描過濾器,過濾器為空時(shí)為不使用過濾器掃描,然后調(diào)用 startScan()開始掃描 BLE 設(shè)備,在回調(diào)中獲取掃描到的 BLE 設(shè)備。
// 實(shí)現(xiàn)掃描回調(diào)
public class ScanCallback implements BleCentralManagerCallback{
Listresults = new ArrayList();
@Override
public void onScanCallback(BleScanResult var1) {
// 對(duì)掃描結(jié)果進(jìn)行處理
results.add(var1);
}
@Override
public void onStartScanFailed(int var1) {
HiLog.info(TAG,"Start Scan failed,Code:" + var1);
}
}
// 獲取中心設(shè)備管理對(duì)象
private ScanCallback centralManagerCallback = new ScanCallback();
private BleCentralManager centralManager = new BleCentralManager(centralManagerCallback);
// 創(chuàng)建掃描過濾器然后開始掃描
List filters = new ArrayList();
centralManager.startScan(filters);
外圍設(shè)備進(jìn)行 BLE 廣播
- 進(jìn)行 BLE 廣播前需要先繼承 advertiseCallback 類實(shí)現(xiàn) startResultEvent 回調(diào),用于獲取廣播結(jié)果。
- 調(diào)用接口 BleAdvertiser(Context context, BleAdvertiseCallback callback)獲取廣播對(duì)象,構(gòu)造廣播參數(shù)和廣播數(shù)據(jù)。
- 調(diào)用 startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse) 接口開始 BLE 廣播。
// 實(shí)現(xiàn) BLE 廣播回調(diào)
private BleAdvertiseCallback advertiseCallback = new BleAdvertiseCallback() {
@Override
public void startResultEvent(int result) {
if(result == BleAdvertiseCallback.RESULT_SUCC){
// 開始 BLE 廣播成功
}
else {
// 開始 BLE 廣播失敗
}
}
};
// 獲取 BLE 廣播對(duì)象
private BleAdvertiser advertiser = new BleAdvertiser(this,advertiseCallback);
// 創(chuàng)建 BLE 廣播參數(shù)和數(shù)據(jù)
private BleAdvertiseData data = new BleAdvertiseData.Builder()
.addServiceUuid(SequenceUuid.uuidFromString(Server_UUID)) // 添加服務(wù)的 UUID
.addServiceData(SequenceUuid.uuidFromString(Server_UUID),new byte[]{0x11}) // 添加廣播數(shù)據(jù)內(nèi)容
.build();
private BleAdvertiseSettings advertiseSettings = new BleAdvertiseSettings.Builder()
.setConnectable(true) // 設(shè)置是否可連接廣播
.setInterval(BleAdvertiseSettings.INTERVAL_SLOT_DEFAULT) // 設(shè)置廣播間隔
.setTxPower(BleAdvertiseSettings.TX_POWER_DEFAULT) // 設(shè)置廣播功率
.build();
// 開始廣播
advertiser.startAdvertising(advertiseSettings,data,null); 新聞標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSBLE掃描和廣播
網(wǎng)頁網(wǎng)址:http://m.fisionsoft.com.cn/article/cdjcghp.html


咨詢
建站咨詢
