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