Added method to take screenshot of video call and save it into media store
This commit is contained in:
parent
bb704a25b9
commit
908ef58162
2 changed files with 33 additions and 6 deletions
|
@ -28,11 +28,14 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
import org.linphone.compatibility.Compatibility
|
||||||
import org.linphone.contact.GenericContactViewModel
|
import org.linphone.contact.GenericContactViewModel
|
||||||
import org.linphone.core.Call
|
import org.linphone.core.Call
|
||||||
import org.linphone.core.CallListenerStub
|
import org.linphone.core.CallListenerStub
|
||||||
|
import org.linphone.core.Factory
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.utils.Event
|
import org.linphone.utils.Event
|
||||||
|
import org.linphone.utils.FileUtils
|
||||||
import org.linphone.utils.LinphoneUtils
|
import org.linphone.utils.LinphoneUtils
|
||||||
|
|
||||||
class CallViewModelFactory(private val call: Call) :
|
class CallViewModelFactory(private val call: Call) :
|
||||||
|
@ -86,6 +89,23 @@ open class CallViewModel(val call: Call) : GenericContactViewModel(call.remoteAd
|
||||||
startTimer(call)
|
startTimer(call)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onSnapshotTaken(call: Call, filePath: String) {
|
||||||
|
Log.i("[Call View Model] Snapshot taken, saved at $filePath")
|
||||||
|
val content = Factory.instance().createContent()
|
||||||
|
content.filePath = filePath
|
||||||
|
content.type = "image"
|
||||||
|
content.subtype = "jpeg"
|
||||||
|
content.name = filePath.substring(filePath.indexOf("/") + 1)
|
||||||
|
|
||||||
|
viewModelScope.launch {
|
||||||
|
if (Compatibility.addImageToMediaStore(coreContext.context, content)) {
|
||||||
|
Log.i("[Call View Model] Adding snapshot ${content.name} to Media Store terminated")
|
||||||
|
} else {
|
||||||
|
Log.e("[Call View Model] Something went wrong while copying file to Media Store...")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -120,6 +140,13 @@ open class CallViewModel(val call: Call) : GenericContactViewModel(call.remoteAd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun takeScreenshot() {
|
||||||
|
if (call.currentParams.videoEnabled()) {
|
||||||
|
val fileName = System.currentTimeMillis().toString() + ".jpeg"
|
||||||
|
call.takeVideoSnapshot(FileUtils.getFileStoragePath(fileName).absolutePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun startTimer(call: Call) {
|
private fun startTimer(call: Call) {
|
||||||
timer?.cancel()
|
timer?.cancel()
|
||||||
|
|
||||||
|
|
|
@ -213,23 +213,23 @@ class ChatMessageViewModel(
|
||||||
when (content.type) {
|
when (content.type) {
|
||||||
"image" -> {
|
"image" -> {
|
||||||
if (Compatibility.addImageToMediaStore(coreContext.context, content)) {
|
if (Compatibility.addImageToMediaStore(coreContext.context, content)) {
|
||||||
Log.i("[Chat Message] Adding image ${content.name} terminated")
|
Log.i("[Chat Message] Adding image ${content.name} to Media Store terminated")
|
||||||
} else {
|
} else {
|
||||||
Log.e("[Chat Message] Something went wrong while copying file...")
|
Log.e("[Chat Message] Something went wrong while copying file to Media Store...")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"video" -> {
|
"video" -> {
|
||||||
if (Compatibility.addVideoToMediaStore(coreContext.context, content)) {
|
if (Compatibility.addVideoToMediaStore(coreContext.context, content)) {
|
||||||
Log.i("[Chat Message] Adding video ${content.name} terminated")
|
Log.i("[Chat Message] Adding video ${content.name} to Media Store terminated")
|
||||||
} else {
|
} else {
|
||||||
Log.e("[Chat Message] Something went wrong while copying file...")
|
Log.e("[Chat Message] Something went wrong while copying file to Media Store...")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"audio" -> {
|
"audio" -> {
|
||||||
if (Compatibility.addAudioToMediaStore(coreContext.context, content)) {
|
if (Compatibility.addAudioToMediaStore(coreContext.context, content)) {
|
||||||
Log.i("[Chat Message] Adding audio ${content.name} terminated")
|
Log.i("[Chat Message] Adding audio ${content.name} to Media Store terminated")
|
||||||
} else {
|
} else {
|
||||||
Log.e("[Chat Message] Something went wrong while copying file...")
|
Log.e("[Chat Message] Something went wrong while copying file to Media Store...")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|
Loading…
Reference in a new issue