android8.1 BLE从设备开发MAC地址随机问题
???? 在BLE作為從設備開發時,發現MAC地址會隨機變化,修改
system/bt/include/bt_target.h
???
#define BLE_LOCAL_PRIVACY_ENABLED FALSE???
或者也可以在修改隨機生成MAC的地方,寫成固定的MAC地址
system/bt/stack/btm/btm_ble_multi_adv.cc
? void RegisterAdvertiser(
????? base::Callback<void(uint8_t /* inst_id */, uint8_t /* status */)> cb)
????? override {
??? AdvertisingInstance* p_inst = &adv_inst[0];
??? for (uint8_t i = 0; i < inst_count; i++, p_inst++) {
????? if (p_inst->in_use) continue;
????? p_inst->in_use = true;
????? // set up periodic timer to update address.
????? if (BTM_BleLocalPrivacyEnabled()) {
??????? p_inst->own_address_type = BLE_ADDR_RANDOM;
??????? GenerateRpa(Bind(
??????????? [](AdvertisingInstance* p_inst,
?????????????? base::Callback<void(uint8_t /* inst_id */, uint8_t /* status */)>
?????????????????? cb,
?????????????? RawAddress bda) {
????????????? //?p_inst->own_address = bda;
????????????? p_inst->own_address = *controller_get_interface()->get_address();
????????????? alarm_set_on_mloop(p_inst->adv_raddr_timer,
???????????????????????????????? BTM_BLE_PRIVATE_ADDR_INT_MS,
???????????????????????????????? btm_ble_adv_raddr_timer_timeout, p_inst);
????????????? cb.Run(p_inst->inst_id, BTM_BLE_MULTI_ADV_SUCCESS);
??????????? },
??????????? p_inst, cb));
????? } else {
??????? p_inst->own_address_type = BLE_ADDR_PUBLIC;
??????? p_inst->own_address = *controller_get_interface()->get_address();
??????? cb.Run(p_inst->inst_id, BTM_BLE_MULTI_ADV_SUCCESS);
????? }
????? return;
??? }
??? LOG(INFO) << "no free advertiser instance";
??? cb.Run(0xFF, ADVERTISE_FAILED_TOO_MANY_ADVERTISERS);
? }
參考博客:Android源碼個個擊破之應用藍牙掃描界面_51CTO博客_藍牙掃描apk
總結
以上是生活随笔為你收集整理的android8.1 BLE从设备开发MAC地址随机问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提莫攻击 findPoisonedDur
- 下一篇: 【Unity实战100例】文件压缩Zip