From 7c7aa781aa67e9d68f0e989f9d70e4f7f6b0763b Mon Sep 17 00:00:00 2001 From: mosazaid Date: Wed, 16 Jun 2021 11:12:48 +0300 Subject: [PATCH] video fix bugs --- .../main/kotlin/com/hmg/hmgDr/MainActivity.kt | 74 ++++++++++--------- .../hmg/hmgDr/ui/VideoCallResponseListener.kt | 2 + .../hmgDr/ui/fragment/VideoCallFragment.kt | 6 +- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt b/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt index 9d9581fe..7ddc03e4 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/MainActivity.kt @@ -20,6 +20,7 @@ import io.flutter.plugins.GeneratedPluginRegistrant class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, VideoCallResponseListener { private val CHANNEL = "Dr.cloudSolution/videoCall" + private lateinit var methodChannel: MethodChannel private var result: MethodChannel.Result? = null private var call: MethodCall? = null private val LAUNCH_VIDEO: Int = 1 @@ -29,15 +30,10 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine) - MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler(this) + methodChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) + methodChannel.setMethodCallHandler(this) } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - } - - override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { this.result = result @@ -67,7 +63,7 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, "closeVideoCall" -> { dialogFragment?.onCallClicked() } - "onCallConnected"->{ + "onCallConnected" -> { } else -> { @@ -87,7 +83,7 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, // intent.putExtra("sessionStatusModel", sessionStatusModel) // startActivityForResult(intent, LAUNCH_VIDEO) - if (dialogFragment == null){ + if (dialogFragment == null) { val arguments = Bundle() arguments.putString("apiKey", apiKey) arguments.putString("sessionId", sessionId) @@ -103,47 +99,47 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, it.isCancelable = true it.show(transaction, "dialog") } - } else if (!dialogFragment!!.isVisible){ + } else if (!dialogFragment!!.isVisible) { val transaction = supportFragmentManager.beginTransaction() dialogFragment!!.show(transaction, "dialog") } } - /* override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - var asd = ""; - if (requestCode == LAUNCH_VIDEO) { - if (resultCode == Activity.RESULT_OK) { - val result : SessionStatusModel? = data?.getParcelableExtra("sessionStatusNotRespond") - val callResponse : HashMap = HashMap() + /* override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + var asd = ""; + if (requestCode == LAUNCH_VIDEO) { + if (resultCode == Activity.RESULT_OK) { + val result : SessionStatusModel? = data?.getParcelableExtra("sessionStatusNotRespond") + val callResponse : HashMap = HashMap() - val sessionStatus : HashMap = HashMap() - val gson = GsonBuilder().serializeNulls().create() + val sessionStatus : HashMap = HashMap() + val gson = GsonBuilder().serializeNulls().create() - callResponse["callResponse"] = "CallNotRespond" - val jsonRes = gson.toJson(result) - callResponse["sessionStatus"] = jsonRes + callResponse["callResponse"] = "CallNotRespond" + val jsonRes = gson.toJson(result) + callResponse["sessionStatus"] = jsonRes - this.result?.success(callResponse) - } - if (resultCode == Activity.RESULT_CANCELED) { - val callResponse : HashMap = HashMap() - callResponse["callResponse"] = "CallEnd" + this.result?.success(callResponse) + } + if (resultCode == Activity.RESULT_CANCELED) { + val callResponse : HashMap = HashMap() + callResponse["callResponse"] = "CallEnd" - result?.success(callResponse) - } - } - }*/ + result?.success(callResponse) + } + } + }*/ override fun onCallFinished(resultCode: Int, intent: Intent?) { dialogFragment = null if (resultCode == Activity.RESULT_OK) { - val result : SessionStatusModel? = intent?.getParcelableExtra("sessionStatusNotRespond") - val callResponse : HashMap = HashMap() + val result: SessionStatusModel? = intent?.getParcelableExtra("sessionStatusNotRespond") + val callResponse: HashMap = HashMap() - val sessionStatus : HashMap = HashMap() + val sessionStatus: HashMap = HashMap() val gson = GsonBuilder().serializeNulls().create() callResponse["callResponse"] = "CallNotRespond" @@ -152,9 +148,8 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, this.result?.success(callResponse) } else if (resultCode == Activity.RESULT_CANCELED) { - val callResponse : HashMap = HashMap() + val callResponse: HashMap = HashMap() callResponse["callResponse"] = "CallEnd" - result?.success(callResponse) } } @@ -164,5 +159,12 @@ class MainActivity : FlutterFragmentActivity(), MethodChannel.MethodCallHandler, // Toast.makeText(this, message, Toast.LENGTH_LONG).show() } + override fun minimizeVideoEvent(isMinimize: Boolean) { + if (isMinimize) + methodChannel.invokeMethod("onCallConnected", null) + else + methodChannel.invokeMethod("onCallDisconnected", null) + } + } diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallResponseListener.kt b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallResponseListener.kt index d2ed15e0..eceed01e 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallResponseListener.kt +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallResponseListener.kt @@ -7,4 +7,6 @@ interface VideoCallResponseListener { fun onCallFinished(resultCode : Int, intent: Intent? = null) fun errorHandle(message: String) + + fun minimizeVideoEvent(isMinimize : Boolean) } \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt index f7f70e40..03883361 100644 --- a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt +++ b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/fragment/VideoCallFragment.kt @@ -420,13 +420,13 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session return } if (mSubscriber != null) { - mSubscriberViewContainer!!.removeView(mSubscriber!!.view) + mSubscriberViewContainer.removeView(mSubscriber!!.view) mSession!!.unsubscribe(mSubscriber) mSubscriber!!.destroy() mSubscriber = null } if (mPublisher != null) { - mPublisherViewContainer!!.removeView(mPublisher!!.view) + mPublisherViewContainer.removeView(mPublisher!!.view) mSession!!.unpublish(mPublisher) mPublisher!!.destroy() mPublisher = null @@ -482,6 +482,8 @@ class VideoCallFragment : DialogFragment(), PermissionCallbacks, Session.Session val res = if (isFullScreen) R.drawable.reducing else R.drawable.expand btnMinimize.setImageResource(res) setViewsVisibility() + + videoCallResponseListener?.minimizeVideoEvent(!isFullScreen) } private fun setViewsVisibility() {