mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 20:19:42 +01:00
avoid IOException for ChatController#initMediaPlayer
Exception java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:558) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936) Caused by java.lang.reflect.InvocationTargetException: at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548) Caused by java.io.IOException: Prepare failed.: status=0x1 at android.media.MediaPlayer._prepare at android.media.MediaPlayer.prepare (MediaPlayer.java:1309) at com.nextcloud.talk.controllers.ChatController.initMediaPlayer (ChatController.kt:1023) at com.nextcloud.talk.controllers.ChatController.startPlayback (ChatController.kt:981) at com.nextcloud.talk.controllers.ChatController.access$startPlayback (ChatController.kt:219) at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1111) at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1109) at com.nextcloud.talk.controllers.ChatController.downloadFileToCache$lambda$18 (ChatController.kt:1109) at com.nextcloud.talk.controllers.ChatController.$r8$lambda$6crsUAwqqfwhlukFd40yEwEwluI at com.nextcloud.talk.controllers.ChatController$$ExternalSyntheticLambda9.onChanged at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133) at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151) at androidx.lifecycle.LiveData.setValue (LiveData.java:309) at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50) at androidx.lifecycle.LiveData$1.run (LiveData.java:93) at android.os.Handler.handleCallback (Handler.java:942) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:201) at android.os.Looper.loop (Looper.java:288) at android.app.ActivityThread.main (ActivityThread.java:7872) Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
be5a60dc77
commit
332b856cfe
@ -1004,6 +1004,7 @@ class ChatController(args: Bundle) :
|
|||||||
adapter?.update(message)
|
adapter?.update(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
private fun initMediaPlayer(message: ChatMessage) {
|
private fun initMediaPlayer(message: ChatMessage) {
|
||||||
if (message != currentlyPlayedVoiceMessage) {
|
if (message != currentlyPlayedVoiceMessage) {
|
||||||
currentlyPlayedVoiceMessage?.let { stopMediaPlayer(it) }
|
currentlyPlayedVoiceMessage?.let { stopMediaPlayer(it) }
|
||||||
@ -1012,15 +1013,22 @@ class ChatController(args: Bundle) :
|
|||||||
if (mediaPlayer == null) {
|
if (mediaPlayer == null) {
|
||||||
val fileName = message.selectedIndividualHashMap!!["name"]
|
val fileName = message.selectedIndividualHashMap!!["name"]
|
||||||
val absolutePath = context.cacheDir.absolutePath + "/" + fileName
|
val absolutePath = context.cacheDir.absolutePath + "/" + fileName
|
||||||
mediaPlayer = MediaPlayer().apply {
|
|
||||||
setDataSource(absolutePath)
|
|
||||||
prepare()
|
|
||||||
}
|
|
||||||
currentlyPlayedVoiceMessage = message
|
|
||||||
message.voiceMessageDuration = mediaPlayer!!.duration / VOICE_MESSAGE_SEEKBAR_BASE
|
|
||||||
|
|
||||||
mediaPlayer!!.setOnCompletionListener {
|
try {
|
||||||
stopMediaPlayer(message)
|
mediaPlayer = MediaPlayer().apply {
|
||||||
|
setDataSource(absolutePath)
|
||||||
|
prepare()
|
||||||
|
}
|
||||||
|
|
||||||
|
currentlyPlayedVoiceMessage = message
|
||||||
|
message.voiceMessageDuration = mediaPlayer!!.duration / VOICE_MESSAGE_SEEKBAR_BASE
|
||||||
|
|
||||||
|
mediaPlayer!!.setOnCompletionListener {
|
||||||
|
stopMediaPlayer(message)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "failed to initialize mediaPlayer", e)
|
||||||
|
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "mediaPlayer was not null. This should not happen!")
|
Log.e(TAG, "mediaPlayer was not null. This should not happen!")
|
||||||
|
Loading…
Reference in New Issue
Block a user