2023年8月 bug總結

2021-08-07 13:13:10 字數 1432 閱讀 6460

1.android 6.0獲取不到藍芽位址或者獲取到錯誤的藍芽位址(02:00:00:00:00:00)

(所有藍芽操作必須在真機進行,否則,輕則沒有反應,重則crash)

很多同學通過

bluetoothadapter mbluetoothadapter = bluetoothadapter.getdefaultadapter();

獲取到藍芽之後,直接呼叫getaddress獲取本機藍芽mac位址,結果缺獲取到了02:00:00:00:00:00。

然後所有的android6.0以上的手機都是這樣。據說6.0以下沒有這個問題,我沒試過全部機型,只試了乙個sumsang s3 android 4.1 ,是可以獲取到位址的。

解決方案有兩個:

第一中:(推薦,簡單)

只需要呼叫下面的 一行**就能獲取到,而且不需要任何的許可權

string mac = android.provider.settings.secure.getstring(this.getcontentresolver(), 「bluetooth_address」);

這樣就能獲取到本機的mac

說一下這種方案的缺點,因為每個版本的sdk都可能修改了,所以這種方法在android4.1上返回null的,大家注意,我在網上查的,有同學說4.3的手機是好用的,我不確定,最好每個版本都試一次。所以我給的解決方案是,判斷sdk版本

android.os.build.version.sdk_int

大於等於6.0那麼就用我說的這種和方法,小於就用getaddress。

再一次鄭重承諾,我沒有測試過android所有 的版本,不確定是什麼結果,所以,一切以實驗結果為準!!

因為我們能獲取到本台裝置的名字,也能獲取到這台裝置連線過的裝置mac(這裡獲取到的mac是真實的mac位址),所以我們就可以通過名字來獲取到相應的裝置mac。

有了這個思路,我們可以這樣操作,比如現在有a,b兩台裝置,你想獲取a的藍芽位址,那麼你首先需要a,b有連線,然後再b裝置上獲取連線的裝置,然後通過a裝置的名字就能拿到他的藍芽位址了。(模擬map的key-value)

我上面說的乙個漏洞是什麼意思呢?因為藍芽的名字是可以使用者預設修改的,所以就有可能得到的裝置name是一樣的,這時候就不能唯一的確定該裝置的藍芽位址了。所以如果能形成一種約定,name是唯一的,那麼這種方法也是可行的

下面貼一下獲取

bluetoothadapter adapter = bluetoothadapter.getdefaultadapter();     

setdevices = adapter.getbondeddevices();

for(int i=0

; i

2.可以不安裝jdk,直接安裝android studio來跑android專案

2023年9月 bug總結

1.延遲載入的流程 最近在公司看見這麼一段 做的是掃瞄藍芽,並且鏈結的,但是業務有點複雜,我就不貼業務邏輯的 了,只看這個延遲載入。private void scanledevice final boolean enable 5000 try else 5000 catch exception e ...

2023年12月英語總結

ministory的學習雖然沒有進行下去,但是基本的學習方法也已經掌握。基本的套路如下 第一,理解材料。要先學會了解材料。多聽,聽並模仿,不懂的地方要學會查閱了解背景很重要,有助於我們對故事的理解,而不是死記硬背。交流故事大意,在交流中學習成長。第二,跟讀。模仿的時候有誇張 有趣 有動作這樣才能讓我...

2023年8月總結

總體來說這個月是在導師的帶領下完成了第乙個專案,並且成功上線。服務端早在上個月就完成了基本功能的開發,這個月主要的任務是完善後續複雜功能的開發以及與客戶端聯調。在聯調這方面,其實服務端需要做的事情比較少,更多的是協助客戶端開發。這也是我第一次接觸到聯調,在這個過程中加深了對客戶端的理解,以及學習了許...