diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/BitmapHelper.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/BitmapHelper.java index a2a84d73ac..b63655c408 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/BitmapHelper.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/BitmapHelper.java @@ -28,6 +28,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; +import java.util.HashMap; import javax.microedition.khronos.egl.EGL10; import javax.microedition.khronos.egl.EGLConfig; @@ -645,7 +646,12 @@ public class BitmapHelper { Bitmap b = null; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { - retriever.setDataSource( filePath ); + retriever = new MediaMetadataRetriever(); + if (Build.VERSION.SDK_INT >= 14) + retriever.setDataSource(filePath, new HashMap()); + else + retriever.setDataSource(filePath); + // mediaMetadataRetriever.setDataSource(videoPath); b = retriever.getFrameAtTime(); } catch ( IllegalArgumentException e ) { e.printStackTrace(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index 7d314f7d9a..6f5d93dda6 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -1,33 +1,27 @@ package com.mogo.module.v2x.scenario.scene.road; import android.content.Context; -import android.net.Uri; +import android.graphics.Bitmap; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; -import androidx.constraintlayout.widget.ConstraintLayout; - import com.mogo.map.IDestroyable; -import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerExploreWayItem; import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.module.v2x.view.TextureVideoView; -import com.mogo.service.imageloader.MogoImageView; +import com.mogo.utils.BitmapHelper; import com.mogo.utils.logger.Logger; import java.util.ArrayList; -import retrofit2.http.Url; - import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -37,6 +31,8 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private V2XWindowStatusListener mV2XWindowStatusListener; private TextureVideoView mVideoView; private ImageView closeImage; + private ImageView mThumbnailImageView; + private ImageView windowPalyImageView; public V2XRoadVideoWindow() { this(V2XServiceManager.getContext(), null); @@ -59,6 +55,8 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID LayoutInflater.from(context).inflate(R.layout.window_road_video, this); mVideoView = findViewById(R.id.roadVideoView); closeImage = findViewById(R.id.roadVideoClose); + mThumbnailImageView = findViewById(R.id.thumbnail_image); + windowPalyImageView = findViewById(R.id.window_video_play); closeImage.setOnClickListener(v -> { close(); }); @@ -76,23 +74,43 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID return; } if (path.contains(".mp4")) { - mVideoView.setVisibility(VISIBLE); - mVideoView.setVideoPath(path); - mVideoView.setOnPreparedListener(mediaPlayer -> { - Logger.w(MODULE_NAME, "全屏准备。。。。。"); - }); + videoViewStartWithPath(path); + mVideoView.setOnCompletionListener(mediaPlayer -> { - Logger.w(MODULE_NAME, "全屏展示结束..."); + Logger.w(MODULE_NAME, "视频播放结束..."); + Bitmap bitmap = BitmapHelper.getVideoThumbnail(path); + mThumbnailImageView.setVisibility(View.VISIBLE); + mThumbnailImageView.setImageBitmap(bitmap); + + windowPalyImageView.setVisibility(View.VISIBLE); + windowPalyImageView.setOnClickListener(v -> { + videoViewStartWithPath(path); + + }); if (mV2XWindowStatusListener != null) { mV2XWindowStatusListener.onViewClose(); } }); mVideoView.start(); + } } } + /* + * 视频开始播放 + * */ + private void videoViewStartWithPath(String path) { + mVideoView.setVisibility(VISIBLE); + mVideoView.setVideoPath(path); + mVideoView.setOnPreparedListener(mediaPlayer -> { + Logger.w(MODULE_NAME, "全屏准备。。。。。"); + mThumbnailImageView.setVisibility(View.GONE); + windowPalyImageView.setVisibility(View.GONE); + }); + } + @Override public void close() { //移除窗体 diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml index 53fde60538..3ac98e63f0 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml @@ -20,7 +20,6 @@ android:layout_height="match_parent" android:background="@color/live_video_progress_bar_loading_color" android:clickable="false" - android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -29,16 +28,22 @@ +