1. 程式人生 > >android 藍芽BLE掃描和wifi掃描總結

android 藍芽BLE掃描和wifi掃描總結

做室內定位的程式設計師應該都知道,在android 5.0之後,google推出了藍芽掃描新介面,我們在實測中發現出一些問題,現在給大家列出,以供參考:

1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startLeScan(callback)方法,官方在5.0之後不建議使用,實測此方法,4.3至目前6.0版本還是很穩定的,毫秒級無限返回藍芽資料,很穩定,就是很耗電;

2.android5.0(Build.VERSION_CODES.LOLLIPOP)谷歌建議使用BluetoothAdapter.getBluetoothLeScanner().startScan(

mScanCallback),實測效果不盡人意,大哥總是帶頭讓人測試api,好歹自己測測嘛,這個介面很不穩定,前幾十秒掃描非常穩定,快速返回很多個BLE裝置後(大概持續1-2分鐘),然後藍芽自動靜默,回撥方法無任何資料返回,我們幾百臺BLE裝置實測。

①:另外實測中大部分市面上的android4.3系統之上的手機,小米低配系列和華為低配系列會出現掃描幾分鐘甚至幾十秒之後,手機藍芽底層崩潰,logcat報出底層藍芽模組報錯,只能重啟才有效,不過最近MIUI6之後,發現例紅米1s藍芽掃描可以無限支援藍芽掃描介面,說明是系統ROM的問題;

②:三星系列手機,note是最差的,接收到BLE藍芽訊號很不穩定,可能出現較遠出的BLE裝置訊號突然很高的情況;S4,S5掃描正常。

③:魅族藍芽是最差的,兩款魅族手機,我不清楚型號了,應該是中配版的,實測掃描開啟幾秒後,logcat報出底層藍芽崩潰,無法返回任何資訊。

④:介面反饋最正常的肯定是Google android實驗室榜樣機Nexus系列,也僅限於1中老介面

android 6.0以上,藍芽掃描和wifi掃描方法預設需要定位許可權支援,還需要在定位許可權中把掃描設定開啟,實測如果這兩項不開,返回掃描結果集不報錯但數量為0。如下圖:


最後建議大家:API有風險,修改需謹慎,哪怕是我Google大帝,也有偷懶的時候

相關推薦

android BLE掃描wifi掃描總結

做室內定位的程式設計師應該都知道,在android 5.0之後,google推出了藍芽掃描新介面,我們在實測中發現出一些問題,現在給大家列出,以供參考: 1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startL

(一)Android的第一步操作—— —— 掃描本機是否存在裝置

 1.進行操作前要把藍芽許可權開啟       在AndroidManifest中新增許可權命令 <uses-permission android:name="android.permission.BLUETOOTH" /> 2.繼承OnClickLis

【車載人體健康檢測器專案】Android例項(微控制器模組通訊)

1、Android藍芽程式設計   藍芽3.0及以下版本程式設計需要使用UUID,UUID是通用唯一識別碼(Universally Unique Identifier),這是一個軟體構建的標準,也是被開源基金會組織應用在分散式計算環境領域的一部分。在藍芽3.0及下一版本中,UUID被用於唯一

Android BLE開發詳解

轉載請註明出處。    https://blog.csdn.net/kong_gu_you_lan/article/details/81009800 1.介紹 藍芽是一種短距離的無線通訊技術,可以實現固定裝置、移動裝置之間的資料交換。一般將藍芽分為兩大類,藍芽3.0規範之前的

Android 抓包分析

轉自:https://blog.csdn.net/wangbf_java/article/details/81269149 藍芽通訊其實和http通訊有點類似,http通過介面互動抓取資料包也很方便,但是到了藍芽就沒那麼方便了,本文就是介紹如何實現藍芽資料包的抓取。 怎麼抓包 首先設定在手機

AndroidBLE

Android的BLE就是低功耗藍芽,是在Android4.3之後才支援的功能。 在這個BLE的層級關係中一個低功耗藍芽可以有多個Service,而一個Service可以有多個Characteristic。 Service可以看做一個功能的集合,sevice有自己的獨立唯一的16位的UUID

Android BLE 4.0 屬性判斷

 * Characteristic proprty: Characteristic is broadcastable. * 可以廣播,二進位制0001 */publicstaticfinalint PROPERTY_BROADCAST = 0x01;  /** * Characteristic proper

android ble

    如果不瞭解androd ble就先學ble整個得大致通訊流程,如果大致通訊流程瞭解了,就利用封裝好得 ble庫,應該對你幫助很大。android ble連線資料大致也沒幾個步驟,但是對於剛涉水藍芽的小夥伴可能會一臉矇蔽,怎麼弄就是不成功,下邊講解,直接從程式碼中講解1

Android BLE 中onCharacteristicChanged不走回調的解決方案

做個小筆記,具體有關Android 藍芽Ble的問題請看下面兩篇文章,寫的很實用 最近在做一個智慧硬體的專案,遇到一個問題浪費了我三天時間,所以決定把它記錄下來。我訪問各大論壇沒有一個明確的

AndroidBLE的詳細講解

我今天分享的主題是 Android 上低功耗藍芽的實踐。這個主題比較小眾。我在過去的一年多的時間裡,主要是在做低功耗藍芽相關的開發。接觸過程中發現,BLE 的開發和通常的 Android APP 的開發有點不一樣,這裡需要訪問硬體資源,而且涉及到一些協議相關的內容,而且

android BLE多連線

最近做藍芽BLE的開發,此專案和網上別人的稍微有點不同,手機需要連線多個BLE裝置,此部分網上的資料很少,所以拿出來和大家分享一下 //初始化private void initBt() { manager = BluetoothManager.getInstanc

android 通訊實現手機的開啟,並掃描附近可見的裝置

藍芽是一種重要的短距離無線通訊協議,廣泛應用於各種裝置(手機,醫療,汽車等)。藍芽是比較常用的無線通訊裝置,早研究成為手機的標配。現在的安卓手機基本上都有藍芽,所有通過藍芽對資料有很好的硬體基礎 在Android中,與藍芽有關的類和介面在android.bluetooth包

Android-低功耗(BLE)-客戶端(主機/中心裝置)服務端(從機/外圍裝置)

一.Android 低功耗藍芽(BLE)的API簡介 從Android 4.3(API 18)才支援低功耗藍芽(Bluetooth Low Energy, BLE)的核心功能, BLE藍芽協議是GATT協議, BLE相關類不多, 全都位於android

Androidsocket實現視訊實時傳輸,以及圖片文字傳輸

目標 兩臺手機裝置之間能夠正常進行藍芽配對(藍芽模組兒和硬體掛鉤,所以需要兩臺真機) socket實現藍芽文字傳輸 實現圖片傳輸 實現實時視訊傳輸 程式碼下載:https://download.csdn.net/download/m0_37781149/10434336

開發(二)掃描裝置

一、申請位置許可權 在Android6.0以後要掃描藍芽裝置,還需要請求位置許可權: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <

BLE GATT完全分析運用

轉載自: https://blog.csdn.net/yueqian_scut/article/details/50752314 很多人都做過藍芽開發,很多人也能夠通過仿照GATT例程的方式新增一個屬性服務,但是很多人都未必能夠清晰地理解BLE的屬性profile,也很容易被屬性Attri

低功耗BLE之連線事件、連線引數更新方法

連線事件 在一個連線當中,主裝置會在每個連線事件裡向從裝置傳送資料包。一個連線事件是指主裝置和從裝置之間相互發送資料包的過程。連線事件的進行始終位於一個頻率,每個資料包會在上個數據包發完之後等待 

android4.0BLE及2.0 2.1 apk 串列埠助手帶16個自定義按鍵自定義指令 字元接收 十六進位制或字元傳送

android藍芽4.0BLE apk 帶16個自定義按鍵和自定義指令 字元接收 https://pan.baidu.com/s/1eRSfprO android藍芽2.0 2.1 apk 帶16個自定義按鍵和自定義指令 字元接收  帶自動連線 https://pan.b

Android 開發 —— BLE

藍芽——BLE 介紹 1.BLE 是 Bluetooth Low Energy 的縮寫,意思為低功耗藍芽。由藍芽技術聯盟(Bluetooth SIG)設計的無線通訊技術,主要用於醫療,健身,安全和家庭娛樂行業。 與傳統藍芽相比,藍芽低功耗旨在大幅降低功耗

Android 獲得連線裝置的Mac地址名稱

adapter = BluetoothAdapter.getDefaultAdapter(); int a2dp = adapter.getProfileConnectionState(BluetoothProfile.A2DP); int headset = adap