Я хотел передать MediaStream
объект в Fragment
в Activity
, используя Navigation Component
. Класс MediaStream
относится к WebRTC
. Таким образом, я не мог прикоснуться к нему, чтобы сделать его пригодным для обработки или сериализации для передачи объекта.
Вот код из фрагмента:
// Creating a PeerConnection with two callbacks
// one is triggered when an ICE candidate is received
// the other one is triggered when a MediaStream is received
localPeer = peerConnectionFactory.createPeerConnection(
rtcConfig,
object: CustomPeerConnectionObserver("localPeerCreation"){
override fun onIceCandidate(iceCandidate: IceCandidate?) {
// not relevant for this talk
}
override fun onAddStream(mediaStream: MediaStream?) {
super.onAddStream(mediaStream)
// TODO: create a new Activity and pass media stream to it for displaying
StreamsFragmentDirections.actionStreamsFragmentToStreamActivity(mediaStream)
}
})!!
Как TODO строка подразумевает, что моей первоначальной целью было передать объект MediaStream
в новое действие, которое должно отображать поток. Но я не знал, как это сделать. В редакторе навигационных графиков я выбрал <inferred type>
в качестве типа для mediastream
, но это не сработало, как ожидалось. Здесь соответствующая часть из схемы навигации xml:
<activity
android:id="@+id/streamActivity"
android:name="com.john.elia.ui.activities.StreamActivity"
android:label="StreamActivity" >
<argument
android:name="mediaStream" />
</activity>
Но компилятор жалуется, говоря, что ожидал Int, но нашел MediaStream. Как я могу передать объект MediaStream
? Во всех примерах, которые я обнаружил, они показывают только, как передавать примитивные типы, такие как String, Int et c. Как насчет объектов с пользовательскими типами?