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/NoticeTrafficAdapter.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficAdapter.java index 0652564d19..6bcfe25e95 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficAdapter.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/NoticeTrafficAdapter.java @@ -61,8 +61,8 @@ class NoticeTrafficAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { - Log.d(TAG, String.valueOf(data.size())); - return 9; + Log.d(TAG, "getItemCount++" + String.valueOf(data.size())); + return data.size(); } public class TrafficInfoHolder extends RecyclerView.ViewHolder { 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 fc3c160885..98784f5667 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 @@ -17,11 +17,9 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo; import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData; import com.mogo.eagle.core.data.notice.NoticeValue; import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.notice.CallerNoticeManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.widget.media.video.NoticeSimpleSmallVideoPlayer; -import com.mogo.eagle.core.widget.media.video.NoticeSimpleVideoPlayer; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.dialog.BaseFloatDialog; import com.mogo.service.imageloader.MogoImageView; @@ -30,6 +28,7 @@ import com.shuyu.gsyvideoplayer.GSYVideoManager; import com.mogo.utils.DateTimeUtils; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack; +import com.shuyu.gsyvideoplayer.utils.NetworkUtils; import com.shuyu.gsyvideoplayer.video.base.GSYVideoView; import java.util.ArrayList; @@ -43,7 +42,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog { private String TAG = "AINotice"; private Context mContext; private RecyclerView mRecyclerView; - private NoticeSimpleVideoPlayer mVideoPlayer; + private NoticeSimpleSmallVideoPlayer mVideoPlayer; private NoticeTrafficStylePushData mPushData; private ImageView close; private ImageView playImageView; @@ -51,6 +50,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog { private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); private TextView accept;//接受 private TextView refuse;//拒绝 + private TextView connect;//连接 private NoticeTrafficAdapter adapter; private ArrayList dataArrayList = new ArrayList(); private NoticeTrafficStyleInfo mTrafficStyleInfo; @@ -70,21 +70,46 @@ public class NoticeTrafficDialog extends BaseFloatDialog { setContentView(R.layout.notice_dialog_traffic_police); setCanceledOnTouchOutside(true); playerShow();//视频播放器 - recyclerVie();//下方详情信息列表 + recyclerVie();//详情信息列表 + otherFunctionButton(); + netWorkStatus(); + } - accept = findViewById(R.id.accept_traffic); - refuse = findViewById(R.id.refuse_traffic); - accept.setOnClickListener(v -> { - feedBackTraffic(1); + /** + * 根据推送消息渲染顶部图片/视频 + * type 0图片 1视频 + */ + private void playerShow() { + mVideoPlayer = findViewById(R.id.video_player); + thumbnailImage = findViewById(R.id.thumbnail_image); + playImageView = this.findViewById(R.id.start_for_traffic); + playImageView.setOnClickListener(v -> { + startLive(); }); - refuse.setOnClickListener(v -> { - feedBackTraffic(0); + close = findViewById(R.id.notice_traffic_dialog_close); + close.setOnClickListener(v -> { + releasePlayer(); + dismiss(); }); - //重新连接 - findViewById(R.id.notice_connect).setOnClickListener(v -> { - requestTrafficInfo(); + if (mPushData.getType() == 1) { + startLive(); + } else { + MogoApisHandler.getInstance().getApis().getImageLoaderApi().displayImage(mPushData.getPoiImgUrl(), + thumbnailImage); + thumbnailImage.setVisibility(View.VISIBLE); + playImageView.setVisibility(View.INVISIBLE); + } + mVideoPlayer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mVideoPlayer.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {/*播放中*/ + resume(); + } else { + pause(); + } + } }); - requestTrafficInfo(); + } private void recyclerVie() { @@ -106,15 +131,38 @@ public class NoticeTrafficDialog extends BaseFloatDialog { } + private void otherFunctionButton() { + accept = findViewById(R.id.accept_traffic); + refuse = findViewById(R.id.refuse_traffic); + connect = findViewById(R.id.notice_connect); + accept.setOnClickListener(v -> { + feedBackTraffic(1); + }); + refuse.setOnClickListener(v -> { + feedBackTraffic(0); + }); + //重新连接 + connect.setOnClickListener(v -> { + netWorkStatus(); + startLive(); + requestTrafficInfo(); + }); + requestTrafficInfo(); + } + /** * @param i 是否接受交通事故任务 * 0不接收 1接受 发起自动驾驶任务,显示引导线 */ private void feedBackTraffic(int i) { CallerNoticeManager.getNoticeProvider().feedBackNoticeTraffic(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), 1); - + if (i == 1) { + startAutoPilot(); + } + dismiss(); } + /** * 开启自动驾驶 */ @@ -131,6 +179,175 @@ public class NoticeTrafficDialog extends BaseFloatDialog { parameters.endLatLon = endLocation; } + /** + * 暂停 + */ + 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.notice_video_pause); + playImageView.setVisibility(View.GONE); + thumbnailImage.setVisibility(View.GONE); + } + + /** + * 播放结束后 + */ + private void complete(Bitmap firstbitmap) { + thumbnailImage.setVisibility(View.VISIBLE); + thumbnailImage.setImageBitmap(firstbitmap); + playImageView.setImageResource(R.drawable.notice_video_play); + playImageView.setVisibility(View.VISIBLE); + playImageView.setOnClickListener(v -> { + startLive(); + }); + thumbnailImage.setOnClickListener(v -> { + startLive(); + }); + } + + /** + * 视频播放 + */ + private void startLive() { + if (mPushData != null) { + try { + Log.d(TAG, "交警事故开始播放视频startLive"); + String videoUrl = mPushData.getPoiImgUrl(); + gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag("NoticeTrafficDialog") + .build(mVideoPlayer); + mVideoPlayer.getStartButton().performClick(); + liveCallBack(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private void liveCallBack() { + new Thread(new Runnable() { + @Override + public void run() { + Bitmap firstBitmap = BitmapHelper.getVideoThumbnail(mPushData.getPoiImgUrl());/*获取第一帧图*/ + mVideoPlayer.setVideoAllCallBack(new VideoAllCallBack() { + @Override + public void onAutoComplete(String url, Object... objects) { + complete(firstBitmap); + } + + @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) { + Log.d(TAG, "onPrepared"); + } + + @Override + public void onClickStartIcon(String url, Object... objects) { + Log.d(TAG, "onClickStartIcon"); + } + + @Override + public void onClickStartError(String url, Object... objects) { + Log.d(TAG, "onClickStartError"); + } + + @Override + public void onClickStopFullscreen(String url, Object... objects) { + Log.d(TAG, "onClickStopFullscreen"); + } + + @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) { + thumbnailImage.setVisibility(View.VISIBLE); + connect.setVisibility(View.VISIBLE); + Log.d(TAG, "onPlayError"); + } + + @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(); + } + /** * 获取交通事故详情 */ @@ -203,207 +420,18 @@ public class NoticeTrafficDialog extends BaseFloatDialog { } /** - * 根据推送消息渲染顶部图片/视频 - * type 0图片 1视频 + * 判断网络状态 */ - private void playerShow() { - mVideoPlayer = findViewById(R.id.video_player); - thumbnailImage = findViewById(R.id.thumbnail_image); - playImageView = this.findViewById(R.id.start_play); - playImageView.setOnClickListener(v -> { - startLive(); - }); - close = findViewById(R.id.notice_traffic_dialog_close); - close.setOnClickListener(v -> { - releasePlayer(); - dismiss(); - }); - if (mPushData.getType() == 1) { - startLive(); + private void netWorkStatus(){ + if (NetworkUtils.isAvailable(getContext())) { + Log.d(TAG, "网络可用"); + thumbnailImage.setVisibility(View.GONE); + connect.setVisibility(View.GONE); } else { - MogoApisHandler.getInstance().getApis().getImageLoaderApi().displayImage(mPushData.getPoiImgUrl(), - thumbnailImage); thumbnailImage.setVisibility(View.VISIBLE); - playImageView.setVisibility(View.INVISIBLE); - } - mVideoPlayer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mVideoPlayer.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {/*播放中*/ - resume(); - } else { - pause(); - } - } - }); - - } - - /** - * 暂停 - */ - 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.notice_video_pause); - playImageView.setVisibility(View.GONE); - thumbnailImage.setVisibility(View.GONE); - } - - /** - * 播放结束后 - */ - private void complete(Bitmap firstbitmap) { - thumbnailImage.setVisibility(View.VISIBLE); - thumbnailImage.setImageBitmap(firstbitmap); - playImageView.setImageResource(R.drawable.notice_video_play); - playImageView.setVisibility(View.VISIBLE); - playImageView.setOnClickListener(v -> { - startLive(); - }); - thumbnailImage.setOnClickListener(v -> { - startLive(); - }); - } - - /** - * 视频播放 - */ - private void startLive() { - if (mPushData != null) { - 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); - liveCallBack(); - } catch (Exception e) { - e.printStackTrace(); - } + connect.setVisibility(View.VISIBLE); } } - - private void liveCallBack() { - new Thread(new Runnable() { - @Override - public void run() { - Bitmap firstBitmap = BitmapHelper.getVideoThumbnail(mPushData.getPoiImgUrl());/*获取第一帧图*/ - mVideoPlayer.setVideoAllCallBack(new VideoAllCallBack() { - @Override - public void onAutoComplete(String url, Object... objects) { - complete(firstBitmap); - } - - @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/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 04a23a6c9d..338b51b386 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 @@ -31,7 +31,7 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> - 52px 35px - 26 + 26px 15px 600px