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