如何以编程方式在 android(对于自己的移动设备)中设置 iBeacon 消息 ID(UUID、Major、Minor)?

How to set iBeacon message id (UUID, Major, Minor) in android (for own mobile device) programatically?

我的应用程序必须通过蓝牙广播 iBeacon 消息。 iBeacon 消息应该固定在特定的 UUID,Major 和 Minor。

如何在不使用任何第 3 方应用程序的情况下完成? (我对图书馆没意见,我只是不希望用户需要另一个应用程序来使用这个应用程序。我更喜欢这个应用程序在使用时是独立的)。

编辑:我只用 google ble 文档构建它,没有使用任何其他库。不过,我愿意实施任何让它发挥作用的建议。

最简单的方法是使用完全免费和开源的Android Beacon Library

  1. 将此添加到您的 build.gradle 依赖项中:

     dependencies {
        implementation 'org.altbeacon:android-beacon-library:2+'
     }
    
  2. 粘贴此代码以启动发射器:

     Beacon beacon = new Beacon.Builder()
        .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
        .setId2("1")
        .setId3("2")
        .setManufacturer(0x004c)
        .setTxPower(-59)
        .build();
     BeaconParser beaconParser = new BeaconParser()
        .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
     BeaconTransmitter beaconTransmitter = new 
     BeaconTransmitter(getApplicationContext(), beaconParser); 
     beaconTransmitter.startAdvertising(beacon);
    

如果你真的不想针对第三方库进行编译,欢迎你复制 BeaconTransmitter 的源代码,但这更难做到:

https://github.com/AltBeacon/android-beacon-library/blob/master/src/main/java/org/altbeacon/beacon/BeaconTransmitter.java