Add dialog when failing to play DRM content

Changelog: added
This commit is contained in:
Kai 2025-01-07 13:59:19 -06:00
commit ce8ede5d40
No known key found for this signature in database
2 changed files with 20 additions and 0 deletions

View file

@ -31,11 +31,13 @@ import android.widget.ImageView
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat.startActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.media3.common.C import androidx.media3.common.C
import androidx.media3.common.Format import androidx.media3.common.Format
import androidx.media3.common.util.UnstableApi import androidx.media3.common.util.UnstableApi
import androidx.media3.datasource.HttpDataSource import androidx.media3.datasource.HttpDataSource
import androidx.media3.exoplayer.analytics.AnalyticsListener
import androidx.media3.ui.PlayerControlView import androidx.media3.ui.PlayerControlView
import androidx.media3.ui.TimeBar import androidx.media3.ui.TimeBar
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
@ -433,6 +435,21 @@ class VideoDetailView : ConstraintLayout {
_player.attachPlayer(); _player.attachPlayer();
_player.exoPlayer?.player?.addAnalyticsListener(object : AnalyticsListener {
override fun onDrmSessionManagerError(
eventTime: AnalyticsListener.EventTime, error: Exception
) {
super.onDrmSessionManagerError(eventTime, error)
UIDialogs.showDialog(context, R.drawable.ic_lock, context.getString(R.string.drm_not_supported), context.getString(R.string.open_and_play_in_mobile_browser), null, 1, UIDialogs.Action(context.getString(R.string.open_in_browser), {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(video?.url))
val options =
android.app.ActivityOptions.makeCustomAnimation(context, android.R.anim.fade_in, android.R.anim.fade_out)
startActivity(context, intent, options.toBundle())
}, UIDialogs.ActionStyle.NONE), UIDialogs.Action(context.getString(R.string.close), {}, UIDialogs.ActionStyle.PRIMARY)
)
}
})
_container_content_liveChat.onRaidNow.subscribe { _container_content_liveChat.onRaidNow.subscribe {
StatePlayer.instance.clearQueue(); StatePlayer.instance.clearQueue();
fragment.navigate<VideoDetailFragment>(it.targetUrl); fragment.navigate<VideoDetailFragment>(it.targetUrl);

View file

@ -34,6 +34,7 @@
<string name="preferred_quality_description">Default quality for watching a video</string> <string name="preferred_quality_description">Default quality for watching a video</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="close">Close</string> <string name="close">Close</string>
<string name="open_in_browser">Open In Browser</string>
<string name="never">Never</string> <string name="never">Never</string>
<string name="import_options">Select any of the following available import options.</string> <string name="import_options">Select any of the following available import options.</string>
<string name="there_is_an_update_available_do_you_wish_to_update">There is an update available, do you wish to update?</string> <string name="there_is_an_update_available_do_you_wish_to_update">There is an update available, do you wish to update?</string>
@ -240,6 +241,8 @@
<string name="locked_content_description">This content is locked</string> <string name="locked_content_description">This content is locked</string>
<string name="unknown">Unknown</string> <string name="unknown">Unknown</string>
<string name="tap_to_open_in_browser">Tap to open in browser</string> <string name="tap_to_open_in_browser">Tap to open in browser</string>
<string name="drm_not_supported">This device does not support the DRM required to play this content</string>
<string name="open_and_play_in_mobile_browser">Please try playing this content in a mobile browser on this device. If it plays open a bug report and share your device model and OS version.</string>
<string name="missing_plugin">Missing Plugin</string> <string name="missing_plugin">Missing Plugin</string>
<string name="viewers_are_raiding">Viewers are raiding</string> <string name="viewers_are_raiding">Viewers are raiding</string>
<string name="go_now">Go now</string> <string name="go_now">Go now</string>