android生成uuid
1. android怎樣獲取藍牙uuid
import
android.telephony.TelephonyManager;
//引入相關包
TelephonyManager
tm
=
(TelephonyManager)
this.getSystemService(TELEPHONY_SERVICE);
tm.getDeviceId();//得到設備唯一ID,(GSM手機的
IMEI
和
CDMA手機的
MEID)
2. 如何為每部Android手機生成一個唯一的ID
這種方法是,以一些特定的信息為基礎,生成設備的唯一標識。
首先,演算法角度,常用的有UUID、摘要兩種。這兩種演算法都是以特定的數據為基礎,生成一個唯一的、固定長度的字元串。這里選擇UUID。
其次,計算的基礎數據,建議選擇divice_id和android_id。原因是,1)這兩個標識雖然不能抵抗wipe操作,但受用戶的行為影響比較小;2)如果正常獲取,都是唯一的;③如果不能正常獲取,結果也是固定的,不會頻繁變化。
再次,優先順序的考慮。從這兩個標識的缺點考慮。
1)device_id。
①不能標識非手機設備,例如Pad。
②許可權問題,因為用戶的反感。
③獲取異常,廠商定製系統中存在的bug,致使返回結果為空,或者為一串「0」或「*」。
④對於雙卡雙待手機,會返回兩個device_id。
2)android_id。
①Android2.3以前,系統Bug,導致不同的設備產生相同的結果:9774d56d682e549c。
②有些可能返回null。
③設備差異:對於CDMA設備,與device_id返回相同的值。
綜合考慮,device_id不能標識某些pad,以及用戶的許可權問題,是我們不能接受的,所以優先使用android_id。對於android_id返回為null的情況,再考慮使用device_id。
最後,當android_id和device_id都返回異常的情況,我們可以隨機生成一個UUID。
3. Android 設備唯一標識
IMEI 國際移動設備身份碼 目前GSM/WCDMA/LTE手機終端需要使用IMEI號碼,在單卡工程中一個手機號對應一個IMEI號,雙卡手機則會對應兩個IMEI號,一張是手機卡對應一個。
需要許可權 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Mac 指的就是我們設備網卡的唯一設別碼,該碼全球唯一,一般稱為物理地址,硬體地址用來定義設備的位置,硬體標識,刷機和恢復出廠設置不擦除,並且大多數android都有wifi模塊
一般是指wifi模塊或者藍牙模塊的mac地址。
缺點:
Android-Q以後 有新的Api獲取mac地址,SDK未開放Api,暫不能測試
在設備首次運行的時候,系統會隨機生成一64位的數字,並把這個數值以16進制保存下來,這個16進制的數字就是ANDROID_ID,但是如果手機恢復出廠設置這個值會發生改變,如果設備被root,這個值可以任意改變。
缺點
Android 8.0 以後
Android 8.0以前
Android 8.0以後
UUID(Universally Unique Identifier)全局唯一標識符,是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。
每次調用都會生成一個全新的標識符
因為每次調用都生成新的,通常使用UUID都會存儲下來或者和其它欄位拼接使用,CUID庫就使用了 uuid來拼接device_id欄位
Advertising ID(廣告ID)是由Google Play服務提供的用戶特定的,唯一的,可重置的廣告ID,適用於廣告用例。如果你應用程序想要使用廣告ID,你的設備就必須安裝Google Play Service
缺點:
Instance ID的作用域為創建它的應用, 這樣可以防止他人利用該標識符跟蹤用戶在不同應用中的行為。 此外,此標識符還可以輕松地進行重置,因為用戶可以清除應用數據或重新安裝應用後重置。
缺點:
4. android 藍牙socket通信 uuid 怎麼生成的
看你走什麼協議
比方說你使用下面鏈接這種串口透傳的藍牙模塊通信,那麼UUID就是:
SPP_UUID = "00001101-0000-1000-8000-00805F9B34FB"
http://www.modiatek.com/proct/html/?54.html