Merge branch 'PL' into dev_MogoAP_eagle-1030_211020_8.0.14

This commit is contained in:
liujing
2021-11-08 12:49:36 +08:00
5 changed files with 246 additions and 218 deletions

3
.idea/gradle.xml generated
View File

@@ -4,7 +4,7 @@
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>
<option name="testRunner" value="GRADLE" /> <option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules"> <option name="modules">
@@ -82,6 +82,7 @@
</set> </set>
</option> </option>
<option name="resolveModulePerSourceSet" value="false" /> <option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings> </GradleProjectSettings>
</option> </option>
</component> </component>

View File

@@ -61,8 +61,8 @@ class NoticeTrafficAdapter extends RecyclerView.Adapter {
@Override @Override
public int getItemCount() { public int getItemCount() {
Log.d(TAG, String.valueOf(data.size())); Log.d(TAG, "getItemCount++" + String.valueOf(data.size()));
return 9; return data.size();
} }
public class TrafficInfoHolder extends RecyclerView.ViewHolder { public class TrafficInfoHolder extends RecyclerView.ViewHolder {

View File

@@ -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.NoticeTrafficStylePushData;
import com.mogo.eagle.core.data.notice.NoticeValue; import com.mogo.eagle.core.data.notice.NoticeValue;
import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack; 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.call.notice.CallerNoticeManager;
import com.mogo.eagle.core.function.hmi.R; 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.NoticeSimpleSmallVideoPlayer;
import com.mogo.eagle.core.widget.media.video.NoticeSimpleVideoPlayer;
import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.BaseFloatDialog; import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.service.imageloader.MogoImageView; import com.mogo.service.imageloader.MogoImageView;
@@ -30,6 +28,7 @@ import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.mogo.utils.DateTimeUtils; import com.mogo.utils.DateTimeUtils;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack; import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack;
import com.shuyu.gsyvideoplayer.utils.NetworkUtils;
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView; import com.shuyu.gsyvideoplayer.video.base.GSYVideoView;
import java.util.ArrayList; import java.util.ArrayList;
@@ -43,7 +42,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
private String TAG = "AINotice"; private String TAG = "AINotice";
private Context mContext; private Context mContext;
private RecyclerView mRecyclerView; private RecyclerView mRecyclerView;
private NoticeSimpleVideoPlayer mVideoPlayer; private NoticeSimpleSmallVideoPlayer mVideoPlayer;
private NoticeTrafficStylePushData mPushData; private NoticeTrafficStylePushData mPushData;
private ImageView close; private ImageView close;
private ImageView playImageView; private ImageView playImageView;
@@ -51,6 +50,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder();
private TextView accept;//接受 private TextView accept;//接受
private TextView refuse;//拒绝 private TextView refuse;//拒绝
private TextView connect;//连接
private NoticeTrafficAdapter adapter; private NoticeTrafficAdapter adapter;
private ArrayList dataArrayList = new ArrayList(); private ArrayList dataArrayList = new ArrayList();
private NoticeTrafficStyleInfo mTrafficStyleInfo; private NoticeTrafficStyleInfo mTrafficStyleInfo;
@@ -70,21 +70,46 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
setContentView(R.layout.notice_dialog_traffic_police); setContentView(R.layout.notice_dialog_traffic_police);
setCanceledOnTouchOutside(true); setCanceledOnTouchOutside(true);
playerShow();//视频播放器 playerShow();//视频播放器
recyclerVie();//下方详情信息列表 recyclerVie();//详情信息列表
otherFunctionButton();
netWorkStatus();
}
accept = findViewById(R.id.accept_traffic); /**
refuse = findViewById(R.id.refuse_traffic); * 根据推送消息渲染顶部图片/视频
accept.setOnClickListener(v -> { * type 0图片 1视频
feedBackTraffic(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 -> { close = findViewById(R.id.notice_traffic_dialog_close);
feedBackTraffic(0); close.setOnClickListener(v -> {
releasePlayer();
dismiss();
}); });
//重新连接 if (mPushData.getType() == 1) {
findViewById(R.id.notice_connect).setOnClickListener(v -> { startLive();
requestTrafficInfo(); } 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() { 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 是否接受交通事故任务 * @param i 是否接受交通事故任务
* 0不接收 1接受 发起自动驾驶任务,显示引导线 * 0不接收 1接受 发起自动驾驶任务,显示引导线
*/ */
private void feedBackTraffic(int i) { private void feedBackTraffic(int i) {
CallerNoticeManager.getNoticeProvider().feedBackNoticeTraffic(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), 1); 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; 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() { private void netWorkStatus(){
mVideoPlayer = findViewById(R.id.video_player); if (NetworkUtils.isAvailable(getContext())) {
thumbnailImage = findViewById(R.id.thumbnail_image); Log.d(TAG, "网络可用");
playImageView = this.findViewById(R.id.start_play); thumbnailImage.setVisibility(View.GONE);
playImageView.setOnClickListener(v -> { connect.setVisibility(View.GONE);
startLive();
});
close = findViewById(R.id.notice_traffic_dialog_close);
close.setOnClickListener(v -> {
releasePlayer();
dismiss();
});
if (mPushData.getType() == 1) {
startLive();
} else { } else {
MogoApisHandler.getInstance().getApis().getImageLoaderApi().displayImage(mPushData.getPoiImgUrl(),
thumbnailImage);
thumbnailImage.setVisibility(View.VISIBLE); thumbnailImage.setVisibility(View.VISIBLE);
playImageView.setVisibility(View.INVISIBLE); connect.setVisibility(View.VISIBLE);
}
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();
}
} }
} }
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() { public void cancel() {
} }

View File

@@ -31,7 +31,7 @@
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<!--图/视频--> <!--图/视频-->
<com.mogo.eagle.core.widget.media.video.NoticeSimpleVideoPlayer <com.mogo.eagle.core.widget.media.video.NoticeSimpleSmallVideoPlayer
android:id="@+id/video_player" android:id="@+id/video_player"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/notice_traffic_acc_image_height" android:layout_height="@dimen/notice_traffic_acc_image_height"
@@ -48,14 +48,13 @@
android:layout_height="0dp" android:layout_height="0dp"
android:background="@drawable/notice_unsuccess_traffic" android:background="@drawable/notice_unsuccess_traffic"
android:scaleType="fitXY" android:scaleType="fitXY"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/video_player" app:layout_constraintBottom_toBottomOf="@id/video_player"
app:layout_constraintEnd_toEndOf="@id/video_player" app:layout_constraintEnd_toEndOf="@id/video_player"
app:layout_constraintStart_toStartOf="@id/video_player" app:layout_constraintStart_toStartOf="@id/video_player"
app:layout_constraintTop_toTopOf="@id/video_player" /> app:layout_constraintTop_toTopOf="@id/video_player" />
<!--播放按钮--> <!--播放按钮-->
<ImageView <ImageView
android:id="@+id/start_play" android:id="@+id/start_for_traffic"
android:layout_width="@dimen/dp_100" android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100" android:layout_height="@dimen/dp_100"
android:layout_centerInParent="true" android:layout_centerInParent="true"

View File

@@ -57,7 +57,7 @@
<dimen name="notice_play_height_small">52px</dimen> <dimen name="notice_play_height_small">52px</dimen>
<dimen name="notice_play_marginleft_small">35px</dimen> <dimen name="notice_play_marginleft_small">35px</dimen>
<dimen name="notice_play_marginright_small">26</dimen> <dimen name="notice_play_marginright_small">26px</dimen>
<dimen name="notice_current_time_margin_small">15px</dimen> <dimen name="notice_current_time_margin_small">15px</dimen>
<dimen name="notice_seekbar_width_small">600px</dimen> <dimen name="notice_seekbar_width_small">600px</dimen>