2017-04-21 4 views
2

Je développe actuellement une application Android sur Android Studio pour détecter et utiliser iBeacons. La partie où je dois détecter la balise et obtenir ses paramètres est terminée, mais je suis confronté à des problèmes pour changer la valeur de ces paramètres pour un iBeacon spécifique avec les API qui sont disponibles sur le système Android. J'ai vu que différentes fonctions comme setId1 (UUID), setId2 (Major), setId3 (Minor) sur la classe Beacon.Builder() peuvent être utilisées pour modifier les valeurs mais je suis un peu perdu pour savoir comment utiliser Cela fonctionne sur une balise spécifique.Comment modifier la valeur des paramètres d'iBeacon (UUID, Major, Minor, TxPower) grâce au SDK sur Android

Telle est la définition de ma classe que j'ai créé pour le Beacon:

class IdBeacon { 
    private String UUID; 
    private String Major; 
    private String Minor; 
    private String Distance; 
    private String RSSI; 
    private String TxPower; 

    public IdBeacon (String UUID, String Major, String Minor, String Distance, String RSSI, String TxPower){ 
     this.UUID = UUID; 
     this.Major = Major; 
     this.Minor = Minor; 
     this.Distance = Distance; 
     this.RSSI = RSSI; 
     this.TxPower = TxPower; 
    } 

    public String getUUID() { return UUID; } 
    public void setUUID(String UUID) { this.UUID = UUID; } 

    public String getMajor() { return Major; } 
    public void setMajor(String major) { Major = major; } 

    public String getMinor() { return Minor; } 
    public void setMinor(String minor) { Minor = minor; } 

    public String getDistance() { return Distance; } 
    public void setDistance(String distance) { Distance = distance } 

    public String getRSSI() { return RSSI; } 
    public void setRSSI(String RSSI) { this.RSSI = RSSI; } 

    public String getTxPower() { return TxPower; } 
    public void setTxPower(String txPower) { this.TxPower = txPower; } 
} 

Ceci est le code pour obtenir les différentes valeurs des paramètres du IBeacon:

String distance = String.valueOf(beacons.iterator().next().getDistance()); 
String Uuid = String.valueOf(beacons.iterator().next().getId1()); 
String major = String.valueOf(beacons.iterator().next().getId2()); 
String minor = String.valueOf(beacons.iterator().next().getId3()); 
String Rssi = String.valueOf(beacons.iterator().next().getRssi()); 
String TxPower = String.valueOf(beacons.iterator().next().getTxPower()); 

arrayIdBeacon.clear(); 
arrayIdBeacon.add(new IdBeacon(Uuid,major,minor,distance,Rssi,TxPower)); 

Et ce est la déclaration de mon ArrayAdapter pour traiter l'affichage des paramètres de mon iBeacon pour mon affichage:

public BeaconAdapter(Context context, ArrayList<IdBeacon> idBeacons){ 
    super(context, 0,idBeacons); 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 

    IdBeacon beacon = getItem(position); 

    if (convertView == null){ 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.mylist, parent, false); 
    } 

    TextView tvUuid = (TextView) convertView.findViewById(R.id.ValUUID); 
    TextView tvMajor = (TextView) convertView.findViewById(R.id.ValMajor); 
    TextView tvMinor = (TextView) convertView.findViewById(R.id.ValMinor); 
    TextView tvDist = (TextView) convertView.findViewById(R.id.ValDist); 
    TextView tvRSSI = (TextView) convertView.findViewById(R.id.ValRSSI); 
    TextView tvTxPower = (TextView) convertView.findViewById(R.id.tvTxPower); 

    if (beacon != null){ 
     tvUuid.setText(beacon.getUUID()); 
     tvMajor.setText(beacon.getMajor()); 
     tvMinor.setText(beacon.getMinor()); 
     tvDist.setText(beacon.getDistance()); 
     tvRSSI.setText(beacon.getRSSI()); 
     tvTxPower.setText(beacon.getTxPower()); 
    } 

    return convertView; 
} 

Répondre

0

La classe Beacon.Builder() dans la bibliothèque de balises Android est utilisée pour construire de nouveaux objets balises dans le but de transmettre une publicité de balise à partir de l'appareil Android lui-même.

La bibliothèque ne prend pas en charge la modification des configurations de balises matérielles externes, par exemple, la modification de la mineure. C'est vrai parce qu'il n'y a pas de mécanisme standard pour le faire. Chaque fabricant de matériel de balise a son propre système pour changer la configuration, dont beaucoup sont propriétaires et non documentés.

Ligne de fond: pour modifier la configuration de la balise matérielle par programme, vous aurez besoin d'un SDK spécifique de votre fournisseur de balises.