From 81d73b7a3810260c69662f9872d574cb754564da Mon Sep 17 00:00:00 2001
From: Matthieu <24-artectrex@users.noreply.shinice.net>
Date: Thu, 10 Feb 2022 18:24:44 +0100
Subject: [PATCH] Add video play support
---
app/src/main/AndroidManifest.xml | 29 ++++++++-----
.../app/posts/MediaViewerActivity.kt | 42 +++++++++++++++++++
.../pixeldroid/app/posts/StatusViewHolder.kt | 20 ++++++++-
.../pixeldroid/app/profile/ProfileActivity.kt | 7 +++-
.../ProfilePostsRecyclerViewAdapter.kt | 1 +
.../searchDiscover/SearchDiscoverFragment.kt | 5 +++
.../main/res/drawable/play_circle_filled.xml | 9 ++++
.../main/res/layout/activity_mediaviewer.xml | 12 ++++++
app/src/main/res/layout/album_image_view.xml | 11 +++++
.../res/layout/fragment_profile_posts.xml | 17 +++++++-
app/src/main/res/values/strings.xml | 7 ++--
11 files changed, 143 insertions(+), 17 deletions(-)
create mode 100644 app/src/main/java/org/pixeldroid/app/posts/MediaViewerActivity.kt
create mode 100644 app/src/main/res/drawable/play_circle_filled.xml
create mode 100644 app/src/main/res/layout/activity_mediaviewer.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0ac6a1e0..447f538c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,6 +22,10 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup">
+
+ tools:ignore="LockedOrientationActivity">
+
+
+
+
@@ -83,11 +91,11 @@
tools:ignore="LockedOrientationActivity" />
+ tools:ignore="LockedOrientationActivity">
@@ -100,11 +108,11 @@
+ tools:ignore="LockedOrientationActivity">
@@ -118,16 +126,16 @@
+ tools:ignore="LockedOrientationActivity" />
+ tools:ignore="LockedOrientationActivity">
@@ -156,7 +164,6 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
-
\ No newline at end of file
diff --git a/app/src/main/java/org/pixeldroid/app/posts/MediaViewerActivity.kt b/app/src/main/java/org/pixeldroid/app/posts/MediaViewerActivity.kt
new file mode 100644
index 00000000..5ac282af
--- /dev/null
+++ b/app/src/main/java/org/pixeldroid/app/posts/MediaViewerActivity.kt
@@ -0,0 +1,42 @@
+package org.pixeldroid.app.posts
+
+import android.os.Bundle
+import androidx.core.net.toUri
+import androidx.media2.common.MediaMetadata
+import androidx.media2.common.UriMediaItem
+import androidx.media2.player.MediaPlayer
+import org.pixeldroid.app.databinding.ActivityMediaviewerBinding
+import org.pixeldroid.app.utils.BaseActivity
+
+class MediaViewerActivity : BaseActivity() {
+
+ private lateinit var binding: ActivityMediaviewerBinding
+
+ companion object {
+ const val VIDEO_URL_TAG = "video_url_mediavieweractivity"
+ const val VIDEO_DESCRIPTION_TAG = "video_description_mediavieweractivity"
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityMediaviewerBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ val uri: String = intent.getStringExtra(VIDEO_URL_TAG).orEmpty()
+ val description: String? = intent.getStringExtra(VIDEO_DESCRIPTION_TAG)
+
+ val mediaItem: UriMediaItem = UriMediaItem.Builder(uri.toUri()).build()
+ mediaItem.metadata = MediaMetadata.Builder()
+ .putString(MediaMetadata.METADATA_KEY_TITLE, description ?: "")
+ .build()
+
+ val mediaPlayer = MediaPlayer(this)
+ mediaPlayer.setMediaItem(mediaItem)
+ mediaPlayer.prepare()
+
+ binding.videoView.setPlayer(mediaPlayer)
+
+ // Start actually playing the video
+ mediaPlayer.play()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/pixeldroid/app/posts/StatusViewHolder.kt b/app/src/main/java/org/pixeldroid/app/posts/StatusViewHolder.kt
index 1a2fbbf2..62891e34 100644
--- a/app/src/main/java/org/pixeldroid/app/posts/StatusViewHolder.kt
+++ b/app/src/main/java/org/pixeldroid/app/posts/StatusViewHolder.kt
@@ -37,6 +37,8 @@ import com.karumi.dexter.listener.PermissionDeniedResponse
import com.karumi.dexter.listener.PermissionGrantedResponse
import com.karumi.dexter.listener.single.BasePermissionListener
import kotlinx.coroutines.launch
+import org.pixeldroid.app.posts.MediaViewerActivity.Companion.VIDEO_DESCRIPTION_TAG
+import org.pixeldroid.app.posts.MediaViewerActivity.Companion.VIDEO_URL_TAG
import retrofit2.HttpException
import java.io.IOException
import kotlin.math.roundToInt
@@ -594,6 +596,7 @@ private class AlbumViewPagerAdapter(private val media_attachments: List 1) {
albumIcon.visibility = View.VISIBLE
} else {
albumIcon.visibility = View.GONE
+ if(post.media_attachments?.get(0)?.type == Attachment.AttachmentType.video) {
+ videoIcon.visibility = View.VISIBLE
+ } else videoIcon.visibility = View.GONE
+
}
postPreview.setOnClickListener {
diff --git a/app/src/main/java/org/pixeldroid/app/profile/ProfilePostsRecyclerViewAdapter.kt b/app/src/main/java/org/pixeldroid/app/profile/ProfilePostsRecyclerViewAdapter.kt
index fd5fb36f..5a33a222 100644
--- a/app/src/main/java/org/pixeldroid/app/profile/ProfilePostsRecyclerViewAdapter.kt
+++ b/app/src/main/java/org/pixeldroid/app/profile/ProfilePostsRecyclerViewAdapter.kt
@@ -8,4 +8,5 @@ import org.pixeldroid.app.R
class ProfilePostViewHolder(val postView: View) : RecyclerView.ViewHolder(postView) {
val postPreview: ImageView = postView.findViewById(R.id.postPreview)
val albumIcon: ImageView = postView.findViewById(R.id.albumIcon)
+ val videoIcon: ImageView = postView.findViewById(R.id.albumIcon)
}
\ No newline at end of file
diff --git a/app/src/main/java/org/pixeldroid/app/searchDiscover/SearchDiscoverFragment.kt b/app/src/main/java/org/pixeldroid/app/searchDiscover/SearchDiscoverFragment.kt
index a0530e7c..a19a88d8 100644
--- a/app/src/main/java/org/pixeldroid/app/searchDiscover/SearchDiscoverFragment.kt
+++ b/app/src/main/java/org/pixeldroid/app/searchDiscover/SearchDiscoverFragment.kt
@@ -19,6 +19,7 @@ import org.pixeldroid.app.utils.api.objects.Status
import org.pixeldroid.app.posts.PostActivity
import org.pixeldroid.app.utils.BaseFragment
import org.pixeldroid.app.utils.ImageConverter
+import org.pixeldroid.app.utils.api.objects.Attachment
import org.pixeldroid.app.utils.bindingLifecycleAware
import retrofit2.HttpException
import java.io.IOException
@@ -120,6 +121,10 @@ class SearchDiscoverFragment : BaseFragment() {
holder.albumIcon.visibility = View.VISIBLE
} else {
holder.albumIcon.visibility = View.GONE
+ if(post?.media_attachments?.get(0)?.type == Attachment.AttachmentType.video) {
+ holder.videoIcon.visibility = View.VISIBLE
+ } else holder.videoIcon.visibility = View.GONE
+
}
ImageConverter.setSquareImageFromURL(holder.postView, post?.getPostPreviewURL(), holder.postPreview, post?.media_attachments?.firstOrNull()?.blurhash)
holder.postPreview.setOnClickListener {
diff --git a/app/src/main/res/drawable/play_circle_filled.xml b/app/src/main/res/drawable/play_circle_filled.xml
new file mode 100644
index 00000000..4e719f75
--- /dev/null
+++ b/app/src/main/res/drawable/play_circle_filled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_mediaviewer.xml b/app/src/main/res/layout/activity_mediaviewer.xml
new file mode 100644
index 00000000..d28a8047
--- /dev/null
+++ b/app/src/main/res/layout/activity_mediaviewer.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/album_image_view.xml b/app/src/main/res/layout/album_image_view.xml
index b4042911..462eab66 100644
--- a/app/src/main/res/layout/album_image_view.xml
+++ b/app/src/main/res/layout/album_image_view.xml
@@ -14,4 +14,15 @@
android:adjustViewBounds="true"
tools:ignore="ContentDescription" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_profile_posts.xml b/app/src/main/res/layout/fragment_profile_posts.xml
index 666365b5..9df72daa 100644
--- a/app/src/main/res/layout/fragment_profile_posts.xml
+++ b/app/src/main/res/layout/fragment_profile_posts.xml
@@ -38,9 +38,24 @@
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
- tools:visibility="visible"
+ tools:visibility="gone"
android:contentDescription="@string/post_is_album" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index db4c064a..572f2652 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -64,7 +64,7 @@
"Polls"
"Other"
-
+
- "%d new notification"
- "%d new notifications"
@@ -73,8 +73,6 @@
%1$s and %2$s
-
-
"What's an instance?"
"You might be confused by the text field asking for the domain of your 'instance'.
@@ -174,6 +172,8 @@ For more info about Pixelfed, you can check here: https://pixelfed.org"
Add a comment
Submit comment
This post is an album
+ This post is a video
+
- "%d\nPost"
@@ -259,4 +259,5 @@ For more info about Pixelfed, you can check here: https://pixelfed.org"
Couldn\'t fetch latest notifications
Camera permission not granted, grant the permission in settings if you want to let PixelDroid use the camera
Storage permission not granted, grant the permission in settings if you want to let PixelDroid show the thumbnail
+ Play video
\ No newline at end of file