订阅后,我试图从回调中解析位置。但是,我遇到了错误。
有效载荷:
<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
如果您需要更多详细信息,请告诉我。