如何获取Android唯一标识

如何获取Android唯一标识,第1张

我刚好做过这方面的研究,直接拿我之前做过的笔记了,欢迎关注、采纳、持续交流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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9338052.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存