diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 22d04a33fd..ad82747b49 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,7 +4,7 @@
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficDialog.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficDialog.java
index 4fe0f6e1aa..91a1e701c0 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficDialog.java
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficDialog.java
@@ -1,6 +1,9 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
import android.content.Context;
+import android.graphics.Bitmap;
+import android.util.Log;
+import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
@@ -12,7 +15,11 @@ import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.common.view.SpacesItemDecoration;
+import com.mogo.utils.BitmapHelper;
import com.mogo.utils.ResourcesHelper;
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
+import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack;
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoView;
import java.util.List;
@@ -22,16 +29,23 @@ import java.util.List;
* @since: 10/26/21
*/
public class NoticeTrafficDialog extends BaseFloatDialog {
+ private String TAG = "AINotice";
private Context mContext;
private RecyclerView mRecyclerView;
private SimpleVideoPlayer mVideoPlayer;
private NoticeTrafficStylePushData mPushData;
private ImageView close;
+ private ImageView playImageView;
+ private ImageView thumbnailImage;
+ private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder();
+
public NoticeTrafficDialog(@NonNull Context context, NoticeTrafficStylePushData pushData) {
super(context);
mContext = context;
mPushData = pushData;
+ mPushData.setPoiImgUrl("https://vd2.bdstatic.com/mda-mk1347dzxdmcre0y/sc/cae_h264/1635819498112313003/mda-mk1347dzxdmcre0y.mp4?v_from_s=hkapp-haokan-tucheng&auth_key=1635837585-0-0-5295f6658c7711ba7b4d3ef478a7fbaa&bcevod_channel=searchbox_feed&pd=1&pt=3&abtest=");
+ mPushData.setIsVideo(true);
initView();
}
@@ -42,6 +56,8 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
public void initView() {
setContentView(R.layout.notice_dialog_traffic_police);
mVideoPlayer = findViewById(R.id.video_player);
+ thumbnailImage = findViewById(R.id.thumbnail_image);
+ playImageView = this.findViewById(R.id.window_video_play);
close = findViewById(R.id.notice_traffic_dialog_close);
close.setOnClickListener(v -> {
dismiss();
@@ -61,18 +77,185 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
}
NoticeTrafficAdapter adapter = new NoticeTrafficAdapter(mContext);
mRecyclerView.setAdapter(adapter);
- startLive();
+
+ mVideoPlayer.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mVideoPlayer.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {/*播放中*/
+ resume();
+ } else {
+ pause();
+ }
+ }
+ });
+// startLive();
}
+ /**
+ * 暂停
+ */
+ private void pause() {
+ playImageView.setVisibility(View.VISIBLE);
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setOnClickListener(v -> {
+ mVideoPlayer.onVideoResume();
+ });
+ thumbnailImage.setOnClickListener(v -> {
+ mVideoPlayer.onVideoResume();
+ });
+ }
+
+ /**
+ * 继续
+ */
+ private void resume() {
+ playImageView.setImageResource(R.drawable.video_pause);
+ playImageView.setVisibility(View.GONE);
+ thumbnailImage.setVisibility(View.GONE);
+ }
+
+ /**
+ * 播放结束后
+ */
+ private void complete(Bitmap firstbitmap, String path) {
+ thumbnailImage.setVisibility(View.VISIBLE);
+ thumbnailImage.setImageBitmap(firstbitmap);
+ playImageView.setImageResource(R.drawable.video_play);
+ playImageView.setVisibility(View.VISIBLE);
+ playImageView.setOnClickListener(v -> {
+ startLive();
+ });
+ thumbnailImage.setOnClickListener(v -> {
+ startLive();
+ });
+ }
+
+
/**
* 视频播放
*/
private void startLive() {
if (mPushData != null && mPushData.getIsVideo() == true) {
-
+ try {
+ Log.d(TAG, "交警事故开始播放视频startLive");
+ String videoUrl = mPushData.getPoiImgUrl();
+ gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag("NoticeTrafficDialog")
+ .build(mVideoPlayer);
+ mVideoPlayer.getStartButton().performClick();
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setVisibility(View.GONE);
+ startVideoCallBack(videoUrl);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
+ private void startVideoCallBack(String path) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ Bitmap firstBitmap = BitmapHelper.getVideoThumbnail(path);/*获取第一帧图*/
+ mVideoPlayer.setVideoAllCallBack(new VideoAllCallBack() {
+ @Override
+ public void onAutoComplete(String url, Object... objects) {
+ complete(firstBitmap, path);
+ }
+
+ @Override
+ public void onClickResume(String url, Object... objects) {
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onClickStop(String url, Object... objects) {
+ Log.d(TAG, "onClickStop");
+ }
+
+ @Override
+ public void onStartPrepared(String url, Object... objects) {
+ Log.d(TAG, "onStartPrepared");
+ }
+
+ @Override
+ public void onPrepared(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartIcon(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartError(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStopFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickResumeFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickSeekbar(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickSeekbarFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onEnterFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onQuitFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onQuitSmallWidget(String url, Object... objects) {
+ }
+
+ @Override
+ public void onEnterSmallWidget(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekVolume(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekPosition(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekLight(String url, Object... objects) {
+ }
+
+ @Override
+ public void onPlayError(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartThumb(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickBlank(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickBlankFullscreen(String url, Object... objects) {
+ Log.d(TAG, "onClickBlankFullscreen");
+
+ }
+ });
+ }
+ }).start();
+ }
+
public void cancel() {
}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/FileUtils.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/FileUtils.java
new file mode 100644
index 0000000000..e558fa7a58
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/FileUtils.java
@@ -0,0 +1,29 @@
+package com.mogo.eagle.core.function.hmi.ui.utils;
+
+import java.util.regex.Pattern;
+
+/**
+ * @author Jing
+ * @description 文件工具类
+ * @since: 11/2/21
+ */
+public class FileUtils {
+
+ /**
+ * @param path 文件链接
+ * @return 视频文件
+ */
+ boolean isVideo(String path) {
+ String reg = "(mp4|flv|avi|rm|rmvb|wmv|mov)";
+ Pattern p = Pattern.compile(reg);
+ boolean boo = p.matcher("url").find();
+ return boo;
+ }
+
+ boolean isImage(String path) {
+ String reg = "(jpg|png|jpeg|gif|bmp)";
+ Pattern p = Pattern.compile(reg);
+ boolean boo = p.matcher("url").find();
+ return boo;
+ }
+}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_pause.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_pause.png
new file mode 100644
index 0000000000..2bc83b4e41
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_pause.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_play.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_play.png
new file mode 100644
index 0000000000..4c733621b6
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_play.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/notice_dialog_traffic_police.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/notice_dialog_traffic_police.xml
index c69d6efcd2..0c0a7e75e7 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/notice_dialog_traffic_police.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/notice_dialog_traffic_police.xml
@@ -43,6 +43,29 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/notice_traffic_dialog_title" />
+
+
+
+
-
+