如何显示响应中的视频或图像?

问题描述

我收到来自 JSON API 的响应,其中“视频”标签包含视频或图像名称及其扩展名,如下所示。如果该标签包含视频,我想显示视频(我正在 Web 视图中加载视频)然后隐藏图像视图,或者如果它包含图像则显示图像然后隐藏 Web 视图。

即将出现的问题是,如果响应位置具有 .mp4 并且图像视图可见但响应图像未在 Picasso 中显示,则 web 视图可见性消失。

回复

    [
{
  
    "Video": "8100931.mp4"
},{
    
    "Video": "218519.jpeg",}]

布局:

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/llVideoPost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="visible">

        <WebView
            android:id="@+id/wvPostVideo"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:focusable="false"
            android:screenReaderFocusable="false"
            android:visibility="visible"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

        <ImageView
            android:id="@+id/imgPostimage"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:contentDescription="@string/todo"
            android:scaleType="fitXY"
            android:visibility="gone"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

    </androidx.constraintlayout.widget.ConstraintLayout>

我试过这个代码 调用响应代码

String videoTag= businessList.get(position).getVideo();
   
 
    if (businessList.get(position).getVideo().endsWith(".mp4")) {
        holder.wvPostVideo.setVisibility(View.VISIBLE);
        holder.imgPostimage.setVisibility(View.GONE);
        holder.wvPostVideo.loadUrl("https://smakerspace.s3.ap-south-1.amazonaws.com/Video/" + videoTag);
    } else if (businessList.get(position).getVideo().endsWith(".jpeg")) {

        holder.wvPostVideo.setVisibility(View.GONE);
        holder.imgPostimage.setVisibility(View.VISIBLE);
        Picasso.get()
                .load("https://smakerspace.s3.ap-south-1.amazonaws.com/upload/"+videoTag)
                .rotate(90)
                .into(holder.imgPostimage);
    }

解决方法

Laravel

因为您已将这些图像和视频文件存储在一个 db 文件夹中 并且请使用 Videoview 作为视频播放器,它可以轻松地将视频播放到 android 中

,

您可以先尝试以编程方式下载图像,然后尝试设置为任何 ImageView,而不是将 url 传递给 picasso。

或者您可以使用任何其他客户端来验证 API 是否工作正常并返回有效图像。

一旦上述经过验证并发现工作正常,下一步是检查我们是否获得了正确的 imgPostImage 实例