I was developing some Conference application and got confused on how to handle PARTICIPANT_LEFT.action
in code. Here is my code
private var roomName: String? = null
private lateinit var anotherUser:String
private var username: String? = SharedUserObject.userID
private var jitsiMeetView: JitsiMeetView? = null
@SuppressLint("LogNotTimber")
@Suppress("DEPRECATION")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_call)
anotherUser = intent.getStringExtra("AnotherUser").toString()
SharedUserObject.checkCallActivity = true
// get data from Two Activities (IncomingCall , CallFrom )
// create jitsi call view
// if (!SharedUserObject.checkCallActivity) {
dataFromIntent
jitsiMeetView = JitsiMeetView(this@CallActivity)
val conferenceOptions = videoChatOptions
jitsiMeetView!!.join(conferenceOptions)
setContentView(jitsiMeetView)
jitsiMeetView!!.listener = this
// }
val intentFilter = IntentFilter()
intentFilter.addAction(BroadcastEvent.Type.PARTICIPANT_LEFT.action)
LocalBroadcastManager.getInstance(this).registerReceiver(BroadcastReceiver(applicationContext), intentFilter)
}
override fun requestPermissions(
strings: Array<String>,
i: Int,
permissionListener: PermissionListener
) {}
// this run when user accept the call and set it busy
@SuppressLint("LogNotTimber")
override fun onConferenceJoined(map: Map<String, Any>) {
SharedUserObject.inCall = true
}
@SuppressLint("LogNotTimber")
// this run when user end the call and set it not busy
override fun onConferenceTerminated(map: Map<String, Any>) {
SharedUserObject.inCall = false
//
SharedUserObject.checkCallActivity = false
jitsiMeetView?.leave()
jitsiMeetView?.dispose()
jitsiMeetView = null
finish()
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
override fun onConferenceWillJoin(map: Map<String, Any>) {
//LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(muteBroadcastIntent)
}
private val dataFromIntent: Unit
get() {
roomName = intent.getStringExtra("RoomName").toString()
username = ""
}
// Set call subject here. Connection with jitsi call server and create Call.
private val videoChatOptions: JitsiMeetConferenceOptions
get() {
var videoChatUrl: URL? = null
try {
videoChatUrl = URL("https://meet.jit.si")
} catch (e: Exception) {
e.printStackTrace()
}
val meetUserInfo = JitsiMeetUserInfo()
meetUserInfo.displayName = SharedUserObject.userID
return JitsiMeetConferenceOptions.Builder()
.setServerURL(videoChatUrl)
.setAudioOnly(true)
.setAudioMuted(false)
.setUserInfo(meetUserInfo)
.setSubject(roomName) // Set call subject here. use to display phone number here.
.setRoom(roomName)
.build()
}
override fun onDestroy() {
super.onDestroy()
SharedUserObject.checkCallActivity = false
jitsiMeetView?.leave()
jitsiMeetView?.dispose()
jitsiMeetView = null
JitsiMeetActivityDelegate.onHostDestroy(this)
}
}
I need that when user leaves the Conference then the Conference should end. I tried using BroadcastEvent.Type.PARTICIPANT_LEFT.action
but no success was received. Please guide me if there is some other way to implement it.