Updates & fixes
parent
eea701907d
commit
3107d1e86d
@ -1,58 +1,58 @@
|
||||
package com.ejada.hmg.opentok
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.LinearLayout
|
||||
import com.ejada.hmg.R
|
||||
import io.flutter.plugin.common.StandardMessageCodec
|
||||
import io.flutter.plugin.platform.PlatformView
|
||||
import io.flutter.plugin.platform.PlatformViewFactory
|
||||
|
||||
class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
|
||||
|
||||
companion object {
|
||||
private lateinit var view: LocalVideoPlatformView
|
||||
|
||||
fun getViewInstance(context: Context): LocalVideoPlatformView {
|
||||
if(!this::view.isInitialized) {
|
||||
view = LocalVideoPlatformView(context)
|
||||
}
|
||||
|
||||
return view
|
||||
}
|
||||
}
|
||||
|
||||
override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
|
||||
return getViewInstance(context)
|
||||
}
|
||||
}
|
||||
|
||||
class LocalVideoPlatformView(context: Context) : PlatformView {
|
||||
private val videoContainer: LocalVideoContainer = LocalVideoContainer(context)
|
||||
|
||||
val container get() = videoContainer.publisherContainer
|
||||
|
||||
override fun getView(): View {
|
||||
return videoContainer
|
||||
}
|
||||
|
||||
override fun dispose() {}
|
||||
}
|
||||
|
||||
class LocalVideoContainer @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyle: Int = 0,
|
||||
defStyleRes: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyle, defStyleRes) {
|
||||
|
||||
var publisherContainer: FrameLayout private set
|
||||
|
||||
init {
|
||||
val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true)
|
||||
publisherContainer = view.findViewById(R.id.publisher_container)
|
||||
}
|
||||
}
|
||||
//package com.ejada.hmg.opentok
|
||||
//
|
||||
//import android.content.Context
|
||||
//import android.util.AttributeSet
|
||||
//import android.view.LayoutInflater
|
||||
//import android.view.View
|
||||
//import android.widget.FrameLayout
|
||||
//import android.widget.LinearLayout
|
||||
//import com.ejada.hmg.R
|
||||
//import io.flutter.plugin.common.StandardMessageCodec
|
||||
//import io.flutter.plugin.platform.PlatformView
|
||||
//import io.flutter.plugin.platform.PlatformViewFactory
|
||||
//
|
||||
//class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
|
||||
//
|
||||
// companion object {
|
||||
// private lateinit var view: LocalVideoPlatformView
|
||||
//
|
||||
// fun getViewInstance(context: Context): LocalVideoPlatformView {
|
||||
// if(!this::view.isInitialized) {
|
||||
// view = LocalVideoPlatformView(context)
|
||||
// }
|
||||
//
|
||||
// return view
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
|
||||
// return getViewInstance(context)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//class LocalVideoPlatformView(context: Context) : PlatformView {
|
||||
// private val videoContainer: LocalVideoContainer = LocalVideoContainer(context)
|
||||
//
|
||||
// val container get() = videoContainer.publisherContainer
|
||||
//
|
||||
// override fun getView(): View {
|
||||
// return videoContainer
|
||||
// }
|
||||
//
|
||||
// override fun dispose() {}
|
||||
//}
|
||||
//
|
||||
//class LocalVideoContainer @JvmOverloads constructor(
|
||||
// context: Context,
|
||||
// attrs: AttributeSet? = null,
|
||||
// defStyle: Int = 0,
|
||||
// defStyleRes: Int = 0
|
||||
//) : LinearLayout(context, attrs, defStyle, defStyleRes) {
|
||||
//
|
||||
// var publisherContainer: FrameLayout private set
|
||||
//
|
||||
// init {
|
||||
// val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true)
|
||||
// publisherContainer = view.findViewById(R.id.publisher_container)
|
||||
// }
|
||||
//}
|
@ -1,170 +1,170 @@
|
||||
package com.ejada.hmg.opentok
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import android.view.ViewGroup
|
||||
import com.facebook.stetho.urlconnection.StethoURLConnectionManager
|
||||
import com.opentok.android.*
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
||||
|
||||
enum class OpenTokSDKState {
|
||||
LOGGED_OUT,
|
||||
LOGGED_IN,
|
||||
WAIT,
|
||||
ERROR
|
||||
}
|
||||
|
||||
class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){
|
||||
private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView
|
||||
private lateinit var localVideoPlatformView: LocalVideoPlatformView
|
||||
|
||||
init {
|
||||
remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context)
|
||||
flutterEngine
|
||||
.platformViewsController
|
||||
.registry
|
||||
.registerViewFactory("remote-video-container", RemoteVideoFactory())
|
||||
|
||||
localVideoPlatformView = LocalVideoFactory.getViewInstance(context)
|
||||
flutterEngine
|
||||
.platformViewsController
|
||||
.registry
|
||||
.registerViewFactory("local-video-container", LocalVideoFactory())
|
||||
}
|
||||
|
||||
private var session: Session? = null
|
||||
private var publisher: Publisher? = null
|
||||
private var subscriber: Subscriber? = null
|
||||
|
||||
|
||||
|
||||
private val sessionListener: Session.SessionListener = object: Session.SessionListener {
|
||||
override fun onConnected(session: Session) {
|
||||
// Connected to session
|
||||
Log.d("MainActivity", "Connected to session ${session.sessionId}")
|
||||
|
||||
publisher = Publisher.Builder(context).build().apply {
|
||||
setPublisherListener(publisherListener)
|
||||
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
|
||||
|
||||
view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
||||
localVideoPlatformView.container.addView(view)
|
||||
}
|
||||
|
||||
notifyFlutter(OpenTokSDKState.LOGGED_IN)
|
||||
session.publish(publisher)
|
||||
}
|
||||
|
||||
override fun onDisconnected(session: Session) {
|
||||
notifyFlutter(OpenTokSDKState.LOGGED_OUT)
|
||||
}
|
||||
|
||||
override fun onStreamReceived(session: Session, stream: Stream) {
|
||||
Log.d(
|
||||
"MainActivity",
|
||||
"onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId
|
||||
)
|
||||
if (subscriber == null) {
|
||||
subscriber = Subscriber.Builder(context, stream).build().apply {
|
||||
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
|
||||
setSubscriberListener(subscriberListener)
|
||||
session.subscribe(this)
|
||||
|
||||
remoteVideoPlatformView.container.addView(view)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStreamDropped(session: Session, stream: Stream) {
|
||||
Log.d(
|
||||
"MainActivity",
|
||||
"onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId
|
||||
)
|
||||
|
||||
if (subscriber != null) {
|
||||
subscriber = null
|
||||
|
||||
remoteVideoPlatformView.container.removeAllViews()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(session: Session, opentokError: OpentokError) {
|
||||
Log.d("MainActivity", "Session error: " + opentokError.message)
|
||||
notifyFlutter(OpenTokSDKState.ERROR)
|
||||
}
|
||||
}
|
||||
|
||||
private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener {
|
||||
override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
|
||||
Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId)
|
||||
}
|
||||
|
||||
override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
|
||||
Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId)
|
||||
}
|
||||
|
||||
override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
|
||||
Log.d("MainActivity", "PublisherKit onError: " + opentokError.message)
|
||||
notifyFlutter(OpenTokSDKState.ERROR)
|
||||
}
|
||||
}
|
||||
|
||||
var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener {
|
||||
override fun onConnected(subscriberKit: SubscriberKit) {
|
||||
Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId)
|
||||
}
|
||||
|
||||
override fun onDisconnected(subscriberKit: SubscriberKit) {
|
||||
Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId)
|
||||
notifyFlutter(OpenTokSDKState.LOGGED_OUT)
|
||||
}
|
||||
|
||||
override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) {
|
||||
Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message)
|
||||
notifyFlutter(OpenTokSDKState.ERROR)
|
||||
}
|
||||
}
|
||||
|
||||
fun initSession(call: MethodCall, result: MethodChannel.Result) {
|
||||
|
||||
val apiKey = requireNotNull(call.argument<String>("apiKey"))
|
||||
val sessionId = requireNotNull(call.argument<String>("sessionId"))
|
||||
val token = requireNotNull(call.argument<String>("token"))
|
||||
|
||||
notifyFlutter(OpenTokSDKState.WAIT)
|
||||
session = Session.Builder(context, apiKey, sessionId).build()
|
||||
session?.setSessionListener(sessionListener)
|
||||
session?.connect(token)
|
||||
result.success("")
|
||||
}
|
||||
|
||||
fun swapCamera(call: MethodCall, result: MethodChannel.Result) {
|
||||
publisher?.cycleCamera()
|
||||
result.success("")
|
||||
}
|
||||
|
||||
fun toggleAudio(call: MethodCall, result: MethodChannel.Result) {
|
||||
val publishAudio = requireNotNull(call.argument<Boolean>("publishAudio"))
|
||||
publisher?.publishAudio = publishAudio
|
||||
result.success("")
|
||||
}
|
||||
|
||||
fun toggleVideo(call: MethodCall, result: MethodChannel.Result) {
|
||||
val publishVideo = requireNotNull(call.argument<Boolean>("publishVideo"))
|
||||
publisher?.publishVideo = publishVideo
|
||||
result.success("")
|
||||
}
|
||||
|
||||
private fun notifyFlutter(state: OpenTokSDKState) {
|
||||
Handler(Looper.getMainLooper()).post {
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge")
|
||||
.invokeMethod("updateState", state.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
//package com.ejada.hmg.opentok
|
||||
//
|
||||
//import android.content.Context
|
||||
//import android.os.Handler
|
||||
//import android.os.Looper
|
||||
//import android.util.Log
|
||||
//import android.view.ViewGroup
|
||||
//import com.facebook.stetho.urlconnection.StethoURLConnectionManager
|
||||
//import com.opentok.android.*
|
||||
//import io.flutter.embedding.engine.FlutterEngine
|
||||
//import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
|
||||
//import io.flutter.plugin.common.MethodCall
|
||||
//import io.flutter.plugin.common.MethodChannel
|
||||
//
|
||||
//
|
||||
//enum class OpenTokSDKState {
|
||||
// LOGGED_OUT,
|
||||
// LOGGED_IN,
|
||||
// WAIT,
|
||||
// ERROR
|
||||
//}
|
||||
//
|
||||
//class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){
|
||||
// private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView
|
||||
// private lateinit var localVideoPlatformView: LocalVideoPlatformView
|
||||
//
|
||||
// init {
|
||||
// remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context)
|
||||
// flutterEngine
|
||||
// .platformViewsController
|
||||
// .registry
|
||||
// .registerViewFactory("remote-video-container", RemoteVideoFactory())
|
||||
//
|
||||
// localVideoPlatformView = LocalVideoFactory.getViewInstance(context)
|
||||
// flutterEngine
|
||||
// .platformViewsController
|
||||
// .registry
|
||||
// .registerViewFactory("local-video-container", LocalVideoFactory())
|
||||
// }
|
||||
//
|
||||
// private var session: Session? = null
|
||||
// private var publisher: Publisher? = null
|
||||
// private var subscriber: Subscriber? = null
|
||||
//
|
||||
//
|
||||
//
|
||||
// private val sessionListener: Session.SessionListener = object: Session.SessionListener {
|
||||
// override fun onConnected(session: Session) {
|
||||
// // Connected to session
|
||||
// Log.d("MainActivity", "Connected to session ${session.sessionId}")
|
||||
//
|
||||
// publisher = Publisher.Builder(context).build().apply {
|
||||
// setPublisherListener(publisherListener)
|
||||
// renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
|
||||
//
|
||||
// view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
||||
// localVideoPlatformView.container.addView(view)
|
||||
// }
|
||||
//
|
||||
// notifyFlutter(OpenTokSDKState.LOGGED_IN)
|
||||
// session.publish(publisher)
|
||||
// }
|
||||
//
|
||||
// override fun onDisconnected(session: Session) {
|
||||
// notifyFlutter(OpenTokSDKState.LOGGED_OUT)
|
||||
// }
|
||||
//
|
||||
// override fun onStreamReceived(session: Session, stream: Stream) {
|
||||
// Log.d(
|
||||
// "MainActivity",
|
||||
// "onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId
|
||||
// )
|
||||
// if (subscriber == null) {
|
||||
// subscriber = Subscriber.Builder(context, stream).build().apply {
|
||||
// renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
|
||||
// setSubscriberListener(subscriberListener)
|
||||
// session.subscribe(this)
|
||||
//
|
||||
// remoteVideoPlatformView.container.addView(view)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onStreamDropped(session: Session, stream: Stream) {
|
||||
// Log.d(
|
||||
// "MainActivity",
|
||||
// "onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId
|
||||
// )
|
||||
//
|
||||
// if (subscriber != null) {
|
||||
// subscriber = null
|
||||
//
|
||||
// remoteVideoPlatformView.container.removeAllViews()
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onError(session: Session, opentokError: OpentokError) {
|
||||
// Log.d("MainActivity", "Session error: " + opentokError.message)
|
||||
// notifyFlutter(OpenTokSDKState.ERROR)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener {
|
||||
// override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
|
||||
// Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId)
|
||||
// }
|
||||
//
|
||||
// override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
|
||||
// Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId)
|
||||
// }
|
||||
//
|
||||
// override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
|
||||
// Log.d("MainActivity", "PublisherKit onError: " + opentokError.message)
|
||||
// notifyFlutter(OpenTokSDKState.ERROR)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener {
|
||||
// override fun onConnected(subscriberKit: SubscriberKit) {
|
||||
// Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId)
|
||||
// }
|
||||
//
|
||||
// override fun onDisconnected(subscriberKit: SubscriberKit) {
|
||||
// Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId)
|
||||
// notifyFlutter(OpenTokSDKState.LOGGED_OUT)
|
||||
// }
|
||||
//
|
||||
// override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) {
|
||||
// Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message)
|
||||
// notifyFlutter(OpenTokSDKState.ERROR)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// fun initSession(call: MethodCall, result: MethodChannel.Result) {
|
||||
//
|
||||
// val apiKey = requireNotNull(call.argument<String>("apiKey"))
|
||||
// val sessionId = requireNotNull(call.argument<String>("sessionId"))
|
||||
// val token = requireNotNull(call.argument<String>("token"))
|
||||
//
|
||||
// notifyFlutter(OpenTokSDKState.WAIT)
|
||||
// session = Session.Builder(context, apiKey, sessionId).build()
|
||||
// session?.setSessionListener(sessionListener)
|
||||
// session?.connect(token)
|
||||
// result.success("")
|
||||
// }
|
||||
//
|
||||
// fun swapCamera(call: MethodCall, result: MethodChannel.Result) {
|
||||
// publisher?.cycleCamera()
|
||||
// result.success("")
|
||||
// }
|
||||
//
|
||||
// fun toggleAudio(call: MethodCall, result: MethodChannel.Result) {
|
||||
// val publishAudio = requireNotNull(call.argument<Boolean>("publishAudio"))
|
||||
// publisher?.publishAudio = publishAudio
|
||||
// result.success("")
|
||||
// }
|
||||
//
|
||||
// fun toggleVideo(call: MethodCall, result: MethodChannel.Result) {
|
||||
// val publishVideo = requireNotNull(call.argument<Boolean>("publishVideo"))
|
||||
// publisher?.publishVideo = publishVideo
|
||||
// result.success("")
|
||||
// }
|
||||
//
|
||||
// private fun notifyFlutter(state: OpenTokSDKState) {
|
||||
// Handler(Looper.getMainLooper()).post {
|
||||
// MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge")
|
||||
// .invokeMethod("updateState", state.toString())
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
@ -1,58 +1,58 @@
|
||||
package com.ejada.hmg.opentok
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.LinearLayout
|
||||
import com.ejada.hmg.R
|
||||
import io.flutter.plugin.common.StandardMessageCodec
|
||||
import io.flutter.plugin.platform.PlatformView
|
||||
import io.flutter.plugin.platform.PlatformViewFactory
|
||||
|
||||
class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
|
||||
|
||||
companion object {
|
||||
private lateinit var view: RemoteVideoPlatformView
|
||||
|
||||
fun getViewInstance(context: Context): RemoteVideoPlatformView {
|
||||
if(!this::view.isInitialized) {
|
||||
view = RemoteVideoPlatformView(context)
|
||||
}
|
||||
|
||||
return view
|
||||
}
|
||||
}
|
||||
|
||||
override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
|
||||
return getViewInstance(context)
|
||||
}
|
||||
}
|
||||
|
||||
class RemoteVideoPlatformView(context: Context) : PlatformView {
|
||||
private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context)
|
||||
|
||||
val container get() = videoContainer.subscriberContainer
|
||||
|
||||
override fun getView(): View {
|
||||
return videoContainer
|
||||
}
|
||||
|
||||
override fun dispose() {}
|
||||
}
|
||||
|
||||
class RemoteVideoContainer @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyle: Int = 0,
|
||||
defStyleRes: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyle, defStyleRes) {
|
||||
|
||||
var subscriberContainer: FrameLayout private set
|
||||
|
||||
init {
|
||||
val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true)
|
||||
subscriberContainer = view.findViewById(R.id.subscriber_container)
|
||||
}
|
||||
}
|
||||
//package com.ejada.hmg.opentok
|
||||
//
|
||||
//import android.content.Context
|
||||
//import android.util.AttributeSet
|
||||
//import android.view.LayoutInflater
|
||||
//import android.view.View
|
||||
//import android.widget.FrameLayout
|
||||
//import android.widget.LinearLayout
|
||||
//import com.ejada.hmg.R
|
||||
//import io.flutter.plugin.common.StandardMessageCodec
|
||||
//import io.flutter.plugin.platform.PlatformView
|
||||
//import io.flutter.plugin.platform.PlatformViewFactory
|
||||
//
|
||||
//class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
|
||||
//
|
||||
// companion object {
|
||||
// private lateinit var view: RemoteVideoPlatformView
|
||||
//
|
||||
// fun getViewInstance(context: Context): RemoteVideoPlatformView {
|
||||
// if(!this::view.isInitialized) {
|
||||
// view = RemoteVideoPlatformView(context)
|
||||
// }
|
||||
//
|
||||
// return view
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
|
||||
// return getViewInstance(context)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//class RemoteVideoPlatformView(context: Context) : PlatformView {
|
||||
// private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context)
|
||||
//
|
||||
// val container get() = videoContainer.subscriberContainer
|
||||
//
|
||||
// override fun getView(): View {
|
||||
// return videoContainer
|
||||
// }
|
||||
//
|
||||
// override fun dispose() {}
|
||||
//}
|
||||
//
|
||||
//class RemoteVideoContainer @JvmOverloads constructor(
|
||||
// context: Context,
|
||||
// attrs: AttributeSet? = null,
|
||||
// defStyle: Int = 0,
|
||||
// defStyleRes: Int = 0
|
||||
//) : LinearLayout(context, attrs, defStyle, defStyleRes) {
|
||||
//
|
||||
// var subscriberContainer: FrameLayout private set
|
||||
//
|
||||
// init {
|
||||
// val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true)
|
||||
// subscriberContainer = view.findViewById(R.id.subscriber_container)
|
||||
// }
|
||||
//}
|
@ -1,42 +1,42 @@
|
||||
package com.ejada.hmg.utils
|
||||
|
||||
import com.ejada.hmg.MainActivity
|
||||
import com.ejada.hmg.opentok.OpenTok
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
||||
class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) {
|
||||
|
||||
private lateinit var channel: MethodChannel
|
||||
private lateinit var openTok: OpenTok
|
||||
|
||||
companion object {
|
||||
private const val CHANNEL = "OpenTok-Platform-Bridge"
|
||||
}
|
||||
|
||||
fun create(){
|
||||
openTok = OpenTok(mainActivity, flutterEngine)
|
||||
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
|
||||
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
|
||||
when (call.method) {
|
||||
"initSession" -> {
|
||||
openTok.initSession(call, result)
|
||||
}
|
||||
"swapCamera" -> {
|
||||
openTok.swapCamera(call, result)
|
||||
}
|
||||
"toggleAudio" -> {
|
||||
openTok.toggleAudio(call, result)
|
||||
}
|
||||
"toggleVideo" -> {
|
||||
openTok.toggleVideo(call, result)
|
||||
}
|
||||
else -> {
|
||||
result.notImplemented()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//package com.ejada.hmg.utils
|
||||
//
|
||||
//import com.ejada.hmg.MainActivity
|
||||
//import com.ejada.hmg.opentok.OpenTok
|
||||
//import io.flutter.embedding.engine.FlutterEngine
|
||||
//import io.flutter.plugin.common.MethodCall
|
||||
//import io.flutter.plugin.common.MethodChannel
|
||||
//
|
||||
//class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) {
|
||||
//
|
||||
// private lateinit var channel: MethodChannel
|
||||
// private lateinit var openTok: OpenTok
|
||||
//
|
||||
// companion object {
|
||||
// private const val CHANNEL = "OpenTok-Platform-Bridge"
|
||||
// }
|
||||
//
|
||||
// fun create(){
|
||||
// openTok = OpenTok(mainActivity, flutterEngine)
|
||||
// channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
|
||||
// channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
|
||||
// when (call.method) {
|
||||
// "initSession" -> {
|
||||
// openTok.initSession(call, result)
|
||||
// }
|
||||
// "swapCamera" -> {
|
||||
// openTok.swapCamera(call, result)
|
||||
// }
|
||||
// "toggleAudio" -> {
|
||||
// openTok.toggleAudio(call, result)
|
||||
// }
|
||||
// "toggleVideo" -> {
|
||||
// openTok.toggleVideo(call, result)
|
||||
// }
|
||||
// else -> {
|
||||
// result.notImplemented()
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
Loading…
Reference in New Issue