
我刚好做过这方面的研究,直接拿我之前做过的笔记了,欢迎关注、采纳、持续交流Andorid问题
一共有 五大方法:(推荐第五种)
1设备ID(DEVICE_ID)
Android系统为开发者提供的用于标识手机设备的标识码。它会根据不同的手机设备返回IMEI,MEID或者ESN码(IMEI是手机的身份z,MEID是CDMA制式(电信运营的)的专用身份z;IMEI是15位,MEID是14位)。
l 获取方法
TelephonyManager tm = (TelephonyManager) contextgetSystemService(ContextTELEPHONY_SERVICE);String DEVICE_ID =tmgetDeviceId();
l 注意点:
没有通话的硬件功能,无法获得DEVICE_ID。
需要READ_PHONE_STATE权限,部分用户会怀疑软件的安全性。
(Android 60 以上需要用户手动赋予该权限)
厂商定制系统中的Bug,可能是一串0或者一串号。
2 SIM卡序列号
不同SIM卡的序列号不同
l 获取办法
TelephonyManager tm = (TelephonyManager)contextgetSystemService(ContextTELEPHONY_SERVICE);String simSerialNum = tmgetSimSerialNumber();
l 注意点
手机未装SIM卡或者不可用时,返回 null
也需要 READ_PHONE_STATE 权限。
3 设备序列号(SERIAL)
l 获取办法
String serialNum = androidosBuildSERIAL;l 注意点
所有的CDMA 设备对于却返回一个空值
Android系统23版本以上
4 ANDROID_ID
在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被wipe后该值会被重置。
l 获取办法
String ANDROID_ID = SystemgetString(getContentResolver(), SettingsSystemANDROID_ID);l 注意点
定制系统的Bug:不同的设备可能会产生相同的,有些设备返回的值为null。
在 Android 42 及以上, 设备启用多用户功能后,每个用户的 Android_ID 不相同。
部分设备的ANDROID_ID和TelephonyManagergetDeviceId()返回相同的值
5 自定义UUID(本人推荐)
public class Installation {private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(contextgetFilesDir(), INSTALLATION);
try {
if (!installationexists()) writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) flength()];
freadFully(bytes);
fclose();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUIDrandomUUID()toString();
outwrite(idgetBytes());
outclose();
}
}
以一个虚拟项目为例,来看看如何准备给某连锁店的第二家分店进行Beacon铺设前的准备工作。
一、 材料准备
10套AprilBeacon241(固件版本201以上,包括芯片、外壳、电池)
标签纸
手机(iPhone4s以上,支持AprilBeacon V12+ 以及第三方Beacon检测应用)
屏蔽袋
蓝丁胶
笔
这些器材,除手机和笔以外都可以在淘宝的搜索AprilBrother官方店买到。
ps:AprilBeacon硬件也可兼容Android 43+,,但 *** 作流程不同,本篇仅介绍iOS下实践。
二、 安装前准备
步骤一:ID规划
1 每个完整的iBeacon id都是由三段组成,分别是Proximity UUID(一段32位的16进制数)、Major(范围:0-65532)、Minor(范围:0-65532)。使用的企业需要在安装前就规划好id规范,方便以后业务的展开。
比如我们实施的某连锁店项目规划id为88888888-4444-4444-4444-CCCCCCCCCCCC。 那么Major可以用于表达不同的门店,Minor用于表达特定门店内的Beacon编号。比如说咱们这个例子,就沿用UUID=88888888-4444-4444-4444-CCCCCCCCCCCC;Major=2,代表2号店;Minor代表2号店中顺序增长的不同Beacon设备。
2 规划好id后,可以给我们的标签纸上写上规划好的id(图2),我们这次一共预置10个id,即0-9代表以后的Minor。这些标签纸到时将贴在Beacon上。
3 为所有Beacon电池上电装壳。打开AprilBeacon应用,第一页可以检测到10个Beacon ,按UUID进行排序。
步骤二:批量预置ID
4 打开工具页,选择批量修改。填写proximityUUID为88888888-4444-4444-4444-CCCCCCCCCCCC,Major为2,Minor为0并打开递增。Measured Power留空,Advertising Freq按需选择数字代表100ms的倍数,比如我们在室内导航项目中使用,可以设置稍快就填3,代表300ms发射一次。选择密码,设置Beacon新密码为12位, "123456789012"。
5 点击开始批量修改后App会轮寻所有它能连接上的Beacon,排序进行修改。此时系统会提示输入Beacon的密码,出厂时默认为AprilBrother(图5),这次改正后就可以改为"123456789012"。那下次就该输入"123456789012"。这个密码是保证出厂后各应用企业自己的Beacon不备无关人员篡改的基础,此密码请妥善保存,如果不幸丢失就只有重新烧写Beacon了。
重新打开AprilBeacon应用看第一页 ,这时由于没设置发射器(相当于一个白名单)的缘故,一个Beacon也找不到。
第三页发射器里增加一个叫sample的设置
就可以观察到这10个新Beacon了!
步骤三:贴标签
6 贴签就是把第2步写好的标签贴在对应Beacon的外壳上,方便工人施工的时候识别。现在由于现场Beacon数量太多,一下不容易逮住谁是谁。必须使用之前准备好的屏蔽袋了。把所有预置好id的Beacon放入屏蔽袋,只保留一个在外边,就可以很容易的区别它是谁,选择标签贴上 。重复这个过程直到完成。
ps:告诉你个小技巧,当身边没有屏蔽袋时,可以选择用微波炉替代,质量好的微波炉的屏蔽效果还不错,一般也比较容易找到。
7 把所有Beacon排列整齐用蓝丁胶轻轻粘在一起,形成一个“糖葫芦”,就做好了准备工作,去施工现场部署的时候就可以轻松清楚了。
三、 现场安装
每个项目都需要自行规划Beacon的安置位置,这点无需多言。但是安装过程中有些通用注意事项:
规划位置最好别依赖现场给的CAD图,规划图和现场实际情况往往有差别。要去实地考察一次,核对下图的正确性,也找下位置。了解现场环境颜色,颜色浅的最好选择浅色壳子。比如说我们实施的一个医院项目,就要求用白色壳子。
所有部署资料做好留底工作,方便以后维护,以后的维护也采用替代的方式,没发现一个故障Beacon就单独update新的替代Beacon的id为故障Beacon的ID。
所有安装尽量保持一致性,尽量安装在绝缘材质上。比如安装在展台时候尽量保持每个展台的相对位置和材质一致。不一致的材质对于射频信号吸收率不一致。安装在塑料材质上的Beacon可能比金属材质表面的beacon信号强好多。这种不一致会导致对不同beacon的距离计算失准。严重时需要在施工现场进行校准(校准过程可参考此)。
好了,至此,Beacon已经完美安装。猪已经准备好了,就等刮风了。祝各位飞行愉快!
以一个虚拟项目为例,来看看如何准备给某连锁店的第二家分店进行Beacon铺设前的准备工作。
一、 材料准备
10套AprilBeacon241(固件版本201以上,包括芯片、外壳、电池)
标签纸
手机(iPhone4s以上,支持AprilBeacon V12+ 以及第三方Beacon检测应用)
屏蔽袋
蓝丁胶
笔
这些器材,除手机和笔以外都可以在淘宝的搜索AprilBrother官方店买到。
ps:AprilBeacon硬件也可兼容Android 43+,,但 *** 作流程不同,本篇仅介绍iOS下实践。
二、 安装前准备
步骤一:ID规划
1 每个完整的iBeacon id都是由三段组成,分别是Proximity UUID(一段32位的16进制数)、Major(范围:0-65532)、Minor(范围:0-65532)。使用的企业需要在安装前就规划好id规范,方便以后业务的展开。
比如我们实施的某连锁店项目规划id为88888888-4444-4444-4444-CCCCCCCCCCCC。 那么Major可以用于表达不同的门店,Minor用于表达特定门店内的Beacon编号。比如说咱们这个例子,就沿用UUID=88888888-4444-4444-4444-CCCCCCCCCCCC;Major=2,代表2号店;Minor代表2号店中顺序增长的不同Beacon设备。
2 规划好id后,可以给我们的标签纸上写上规划好的id(图2),我们这次一共预置10个id,即0-9代表以后的Minor。这些标签纸到时将贴在Beacon上。
3 为所有Beacon电池上电装壳。打开AprilBeacon应用,第一页可以检测到10个Beacon ,按UUID进行排序。
步骤二:批量预置ID
4 打开工具页,选择批量修改。填写proximityUUID为88888888-4444-4444-4444-CCCCCCCCCCCC,Major为2,Minor为0并打开递增。Measured Power留空,Advertising Freq按需选择数字代表100ms的倍数,比如我们在室内导航项目中使用,可以设置稍快就填3,代表300ms发射一次。选择密码,设置Beacon新密码为12位, "123456789012"。
5 点击开始批量修改后App会轮寻所有它能连接上的Beacon,排序进行修改。此时系统会提示输入Beacon的密码,出厂时默认为AprilBrother(图5),这次改正后就可以改为"123456789012"。那下次就该输入"123456789012"。这个密码是保证出厂后各应用企业自己的Beacon不备无关人员篡改的基础,此密码请妥善保存,如果不幸丢失就只有重新烧写Beacon了。
重新打开AprilBeacon应用看第一页 ,这时由于没设置发射器(相当于一个白名单)的缘故,一个Beacon也找不到。
第三页发射器里增加一个叫sample的设置
就可以观察到这10个新Beacon了!
步骤三:贴标签
6 贴签就是把第2步写好的标签贴在对应Beacon的外壳上,方便工人施工的时候识别。现在由于现场Beacon数量太多,一下不容易逮住谁是谁。必须使用之前准备好的屏蔽袋了。把所有预置好id的Beacon放入屏蔽袋,只保留一个在外边,就可以很容易的区别它是谁,选择标签贴上 。重复这个过程直到完成。
ps:告诉你个小技巧,当身边没有屏蔽袋时,可以选择用微波炉替代,质量好的微波炉的屏蔽效果还不错,一般也比较容易找到。
7 把所有Beacon排列整齐用蓝丁胶轻轻粘在一起,形成一个“糖葫芦”,就做好了准备工作,去施工现场部署的时候就可以轻松清楚了。
三、 现场安装
每个项目都需要自行规划Beacon的安置位置,这点无需多言。但是安装过程中有些通用注意事项:
规划位置最好别依赖现场给的CAD图,规划图和现场实际情况往往有差别。要去实地考察一次,核对下图的正确性,也找下位置。了解现场环境颜色,颜色浅的最好选择浅色壳子。比如说我们实施的一个医院项目,就要求用白色壳子。
所有部署资料做好留底工作,方便以后维护,以后的维护也采用替代的方式,没发现一个故障Beacon就单独update新的替代Beacon的id为故障Beacon的ID。
所有安装尽量保持一致性,尽量安装在绝缘材质上。比如安装在展台时候尽量保持每个展台的相对位置和材质一致。不一致的材质对于射频信号吸收率不一致。安装在塑料材质上的Beacon可能比金属材质表面的beacon信号强好多。这种不一致会导致对不同beacon的距离计算失准。严重时需要在施工现场进行校准(校准过程可参考此)。
好了,至此,Beacon已经完美安装。猪已经准备好了,就等刮风了。祝各位飞行愉快!
不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用StringhashCode(),再加上一个UUID,这里有详细的代码》》
我的世界UUID怎么得,目前有哪些途径能够获得呢UUID是唯一识别码,用来在游戏识别玩家用的,正版玩家的UUID是不会改变,但盗版玩家就不一定。很多玩家都想要得到UUID。九游小编带来了UUID的获取方法,一起来看看下文吧!
我的世界
获得实体UUID的方法:
1、使用entitydata获得UUIDLeast、Most
然后使用PCB将其转换成UUID
2、使用say
@e
(将@e换成任何您想知道uuid的实体的选择器)然后按下shift同时按下输出在聊天栏里的该实体名字
这种方法是,以一些特定的信息为基础,生成设备的唯一标识。
首先,算法角度,常用的有UUID、摘要两种。这两种算法都是以特定的数据为基础,生成一个唯一的、固定长度的字符串。这里选择UUID。
其次,计算的基础数据,建议选择divice_id和android_id。原因是,1)这两个标识虽然不能抵抗wipe *** 作,但受用户的行为影响比较小;2)如果正常获取,都是唯一的;③如果不能正常获取,结果也是固定的,不会频繁变化。
再次,优先级的考虑。从这两个标识的缺点考虑。
1)device_id。
①不能标识非手机设备,例如Pad。
②权限问题,因为用户的反感。
③获取异常,厂商定制系统中存在的bug,致使返回结果为空,或者为一串“0”或“”。
④对于双卡双待手机,会返回两个device_id。
2)android_id。
①Android23以前,系统Bug,导致不同的设备产生相同的结果:9774d56d682e549c。
②有些可能返回null。
③设备差异:对于CDMA设备,与device_id返回相同的值。
综合考虑,device_id不能标识某些pad,以及用户的权限问题,是我们不能接受的,所以优先使用android_id。对于android_id返回为null的情况,再考虑使用device_id。
最后,当android_id和device_id都返回异常的情况,我们可以随机生成一个UUID。
Android蓝牙编程的基本步骤:1获取蓝牙适配器BluetoothAdapterblueadapter=BluetoothAdaptergetDefaultAdapter();如果BluetoothAdapter为null,说明android手机没有蓝牙模块。判断蓝牙模块是否开启,blueadapterisEnabled()true表示已经开启,false表示蓝牙并没启用。2启动配置蓝牙可见模式,即进入可配对模式Intentin=newIntent(BluetoothAdapterACTION_REQUEST_DISCOVERABLE);inputExtra(BluetoothAdapterEXTRA_DISCOVERABLE_DURATION,200);startActivity(in);,200就表示200秒。3获取蓝牙适配器中已经配对的设备Setdevice=blueadaptergetBondedDevices();4还需要在androidManifestxml中声明蓝牙的权限接下来就是根据自己的需求对BluetoothAdapter的 *** 作了。
以上就是关于如何获取Android唯一标识全部的内容,包括:如何获取Android唯一标识、startbeacondiscovery的参数uuid怎么获取、Android如何获取到唯一的设备ID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)