摘要:現在的在安卓手機上很難搜索連接,在上是沒問題的,進行下列更改可以快速修復這個問題,但是會損失掉一些功能,不能通過指定的搜索到設備因為數組被改成了。本文禁止任何類型轉載
現在的FlutterBlue在安卓手機上很難搜索連接,在iOS上是沒問題的,進行下列更改可以快速修復這個問題,但是會損失掉一些功能,不能通過指定Service的UUID搜索到設備(因為uuids數組被改成了[])。
懶人可以直接用我fork之后修改的版本,修改YML文件的flutter_blue地址如下:
flutter_blue: git: url: git://github.com/mjl0602/flutter_blue.git
If you can’t use flutterblue connect device with Android Phone. You can try low version Api of Android. These apis are deprecated but worked very well in some Android Phone. These
Phones are bad support with new API: you can call the function successful, but scan and connect will be very slow and easy connect fail. To solve this problem, change file:
android/src/main/java/com/pauldemarco/flutterblue/
see new file on: https://github.com/mjl0602/fl...
This change didn"t solve this problem completely. To solve this problem, must add new args to control the api version. but not use Build.VERSION.SDK_INT. It"s works bad.
簡單的說,就是很多手機系統到了新版本,但是對新版本的硬件API支持的很差,強制換成老版本的用法就好了。希望作者加一個字段來控制具體用什么版本的API來搜索。
Change connect way.
// old code,hardly connect device on Red Mi Note 4 // BluetoothGatt gattServer = device.connectGatt(registrar.activity(), options.getAndroidAutoConnect(), mGattCallback); // improve MI phone connect speed. If didn"t call connect,Mi phone can"t connect success BluetoothGatt gattServer = device.connectGatt(registrar.activity(), false, mGattCallback); gattServer.connect();
Use old version api
// use old version api private void startScan(MethodCall call, Result result) { byte[] data = call.arguments(); Protos.ScanSettings settings; try { settings = Protos.ScanSettings.newBuilder().mergeFrom(data).build(); // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // startScan21(settings); // } else { startScan18(settings); // } result.success(null); } catch (Exception e) { result.error("startScan", e.getMessage(), e); } } private void stopScan() { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // stopScan21(); // } else { stopScan18(); // } }
Remove uuids arg.
// boolean success = mBluetoothAdapter.startLeScan(uuids, getScanCallback18()); boolean success = mBluetoothAdapter.startLeScan(getScanCallback18());本文禁止任何類型轉載
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72741.html
摘要:項目中用到模塊時,要注意以下問題用示例代碼安卓系統掃描藍牙設備就無法成功,而蘋果則沒問題。安卓和蘋果的設備不一樣,安卓為格式,蘋果為格式。 藍牙,平常你用的多嗎?上班路上戴著藍牙耳機聽音樂、看視頻打開藍牙分享個人熱點給小伙伴們解鎖共享單車時,打開藍牙就能迅速解鎖...... BLE—藍牙低能耗技術,方便了我們的生活,但是開發者在開發過程中卻遇到了不少坑,尤其對小白用戶來說坑真的太多了,...
摘要:二模塊原理藍牙模塊的通信示意圖如下兩個設備主控芯片或單片機分別連接各自的藍牙模塊,即將主控芯片與藍牙模塊的串口控制引腳交叉連接。如圖注藍牙模塊自帶轉電路。注博主演示的藍牙模塊雖然不是,但是功能和一樣。 ...
摘要:鍵盤使用說明索引均為出廠默認值升級固件軟件支持一些常見問題解答電池開關電池插座轉接小板連接首次使用測試步驟藍牙和切換鍵盤默認層默認觸發層的鍵配置的功能默認功能層配置的功能默認的快捷鍵藍牙配對藍牙參數藍牙地址管理升級固件 ...
閱讀 2376·2021-09-22 15:15
閱讀 640·2021-09-02 15:11
閱讀 1784·2021-08-30 09:48
閱讀 1884·2019-08-30 15:56
閱讀 1480·2019-08-30 15:52
閱讀 2042·2019-08-30 15:44
閱讀 431·2019-08-29 16:29
閱讀 1538·2019-08-29 11:06