2017-02-02 23 views
1

下午好。我正在開發一個android應用程序,並且正在嘗試將這個estimote beacon與應用程序集成在一起。事情是我希望能夠發現一個特定的設備改變設備的UUID,次要的,主要的。如何通過estimote android sdk更改estimote信標的UUID?

要發現和範圍我使用的信標:

beaconManager.startRanging(region); 

      beaconManager.setRangingListener(new BeaconManager.RangingListener() { 
       @Override 
       public void onBeaconsDiscovered(Region region, List<Beacon> list) { 

        if (!list.isEmpty()) { 

         for(Beacon b : list){ 

          if (b.getMacAddress().equals(macaddress)){ 

%%Now that i have the Beacon b I would like to change it's UUID, major and minor. 
          } 
         } 
        } 
       } 
      }); 

有人可以幫我嗎?我知道,爲了更改UUID,我需要連接到estimote雲,但我還沒有完全知道如何(他們網站上的示例使用BeaconConnection,這已被棄用)。

+0

您不能更改iBeacon的UUID。 –

+0

@AjayShrestha是的,你可以爲estimote –

回答

1

我使用這種方法,我發現在Estimote andriod sdk,它被Estimote棄用,但通過在android studio中使用適當的api設置解決問題。

我還沒有找到替代解決方案,但如果我發現我會更新我的答案。

private void editBeacon(final Beacon beacon, UUID newUuid, int newMinor, int newMajor) { 
    connection = new BeaconConnection(this, beacon, new BeaconConnection.ConnectionCallback() { 
     @Override 
     public void onAuthorized(BeaconInfo beaconInfo) { 

     } 

     @Override 
     public void onConnected(BeaconInfo beaconInfo) { 
      Log.d(TAG, "Authenticated to beacon. Info: " + beaconInfo); 
      Log.d(TAG, "Advertising internal: " + connection.advertisingIntervalMillis().get()); 
      Log.d(TAG, "Broadcasting transmitPower: " + connection.broadcastingPower().get()); 
     } 

     @Override 
     public void onAuthenticationError(EstimoteDeviceException exception) { 
      Log.d(TAG, "Authentication Error: " + exception); 
     } 

     @Override 
     public void onDisconnected() { 
      Log.d(TAG, "Disconnected"); 
     } 
    }); 

    connection.authenticate(); 

    // Interact with beacon. 

    // You can update beacon's properties in following way: 
    connection.edit() 
      .set(connection.proximityUuid(), newUuid) 
      .set(connection.major(), newMajor) 
      .set(connection.minor(), newMinor) 
      .commit(new BeaconConnection.WriteCallback() { 
       @Override 
       public void onSuccess() { 
       } 

       @Override 
       public void onError(EstimoteDeviceException exception) { 
       } 
      }); 

    // Do not forget to close connection. 
    connection.close(); 
} 
相關問題