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

View File

@@ -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 {

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.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() {
}

View File

@@ -31,7 +31,7 @@
app:layout_constraintRight_toRightOf="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:layout_width="0dp"
android:layout_height="@dimen/notice_traffic_acc_image_height"
@@ -48,14 +48,13 @@
android:layout_height="0dp"
android:background="@drawable/notice_unsuccess_traffic"
android:scaleType="fitXY"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/video_player"
app:layout_constraintEnd_toEndOf="@id/video_player"
app:layout_constraintStart_toStartOf="@id/video_player"
app:layout_constraintTop_toTopOf="@id/video_player" />
<!--播放按钮-->
<ImageView
android:id="@+id/start_play"
android:id="@+id/start_for_traffic"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:layout_centerInParent="true"

View File

@@ -57,7 +57,7 @@
<dimen name="notice_play_height_small">52px</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_seekbar_width_small">600px</dimen>