Как я могу разобрать идентификатор маяка в моем коде?(Android) - PullRequest
1 голос
/ 01 апреля 2019

Я хочу разобрать идентификатор маяка в своем коде, но я не знаю, как это сделать.

Вот мой код:

.onEnter(new Function1<ProximityZoneContext, Unit>() {
                @Override
                public Unit invoke(ProximityZoneContext proximityContext) {
                    beacon_data.onNext(proximityContext.getDeviceId());
                    //beacon_data.onComplete();
                    Log.d("BeaconOnEnter",proximityContext.getDeviceId());
                    return null;
                }
            })
            .onExit(new Function1<ProximityZoneContext, Unit>() {
                @Override
                public Unit invoke(ProximityZoneContext proximityContext) {
                    Log.d("BeaconOnExit",proximityContext.getDeviceId());
                    return null;
                }
            })
            .onContextChange(new Function1<Set<? extends ProximityZoneContext>, Unit>() {
                @Override
                public Unit invoke(Set<? extends ProximityZoneContext> proximityZoneContexts) {
                    /*Iterator<? extends ProximityZoneContext> iter = proximityZoneContexts.iterator();
                    while(iter.hasNext()){
                        Log.d("BeaconOnContext",iter.toString());
                    }*/
                    Log.d("BeaconOnContext",proximityZoneContexts.toString());
                    return null;
                }
            })

Это интерфейс ProximityZoneContext.

interface ProximityZoneContext {
val deviceId: String
val tag: String
val attachments: Map<String, String>}

А это EstimoteProximityZoneContext.

internal data class EstimoteProximityZoneContext(
    override val deviceId: String,
    override val tag: String,
    override val attachments: Map<String, String>) : ProximityZoneContext

И это результат.

D / BeaconOnEnter: 96116cc225803b78ad43e6461dbd4125

D / BeaconOnContext: [EstimoteProximityZoneContext (DeviceId = 96116cc225803b78ad43e6461dbd4125, тег = monitoringexample-8й, вложение = {}), EstimoteProximityZoneContext (DeviceId = 45ccdc54e8f2c30f692f594c8ca7eb06, тег = monitoringexample-8й, вложение = {}), EstimoteProximityZoneContext(deviceId = 16791f300532ddf9032c92e11a9d1d38, тег = monitorexample-8mi, attachments = {})]

D / BeaconOnExit: 45ccdc54e8f2c30f692f594c8ca7eb06

1024 * I 1022 deviceId IЯ пробовал много способов, но это не сработало.

onEnter, функция onExit может распечатать идентификатор с помощью функции getDeveiceId ().

Однако это не относится к onContextChange.

Как мне разобрать это?

1 Ответ

0 голосов
/ 01 апреля 2019

Я решил это. Я не знал, как использовать набор.

ProximityZoneContext[] contextsArray = 
    proximityZoneContexts.toArray(new ProximityZoneContext[0]);
String beacon1ID = contextsArray[0].getDeviceId();
String beacon2ID = contextsArray[1].getDeviceId();
String beacon3ID = contextsArray[2].getDeviceId();

Получилось!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...