无法将SimplePayload强制转换为GeoLocation

时间:2019-03-14 08:14:46

标签: java android xmpp smack

订阅后,我试图从回调中解析位置。但是,我遇到了错误。

有效载荷:

<geoloc xmlns='http://jabber.org/protocol/pubsub#event'>
   <lat xmlns='http://jabber.org/protocol/pubsub#event'>50.709793237066556</lat><lon xmlns='http://jabber.org/protocol/pubsub#event'>96.68853629387607</lon>
<dir xmlns='http://jabber.org/protocol/pubsub#event'>-2.0</dir>
</geoloc>

代码:

private val itemEventListener: (ItemPublishEvent<Item>) -> Unit = { event ->
    if (event.items.size > 0) {
        (event.items[0] as? PayloadItem<GeoLocation>)?.payload?.let { payload ->
            val bear = payload.bearing ?: 0.0
            driverLocationUpdateEvent.postValue(SmackLocation(latitude = payload.lat, longitude = payload.lon, bearing = bear))
        }
    }
}

错误:

java.lang.ClassCastException : org.jivesoftware.smackx.pubsub.SimplePayload cannot
 be cast to org.jivesoftware.smackx.geoloc.packet.GeoLocation

如果您需要更多详细信息,请告诉我。

0 个答案:

没有答案