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 cfd79fe20a..926af520e4 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 @@ -2,26 +2,33 @@ package com.mogo.eagle.core.function.hmi.ui.notice; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.util.Log; import android.view.View; import android.widget.ImageView; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo; import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData; +import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack; +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.SimpleVideoPlayer; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.dialog.BaseFloatDialog; +import com.mogo.service.imageloader.MogoImageView; import com.mogo.utils.BitmapHelper; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; -import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack; import com.shuyu.gsyvideoplayer.video.base.GSYVideoView; /** * @author liujing - * @description 描述 + * @description 交警类型弹框 * @since: 10/26/21 */ public class NoticeTrafficDialog extends BaseFloatDialog { @@ -32,15 +39,23 @@ public class NoticeTrafficDialog extends BaseFloatDialog { private NoticeTrafficStylePushData mPushData; private ImageView close; private ImageView playImageView; - private ImageView thumbnailImage; + private MogoImageView thumbnailImage; private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); + private Bitmap firstBitmap; + private TextView accept;//接受 + private TextView refuse;//拒绝 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="); + //图片 + String image = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201609%2F26%2F20160926081306_GM2tv.thumb.1000_0.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638511084&t=92def7498b526dcba3fceda17c43fcb8"; + String video = "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.setPoiImgUrl(image); + mPushData.setType(0); + mPushData.setInfoId("905456829553946624"); initView(); } @@ -50,13 +65,7 @@ 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(); - }); + playerShow(); //网格绘制 try { mRecyclerView = findViewById(R.id.traffic_info_recyclerView); @@ -73,6 +82,67 @@ public class NoticeTrafficDialog extends BaseFloatDialog { NoticeTrafficAdapter adapter = new NoticeTrafficAdapter(mContext); mRecyclerView.setAdapter(adapter); + accept = findViewById(R.id.accept_traffic); + refuse = findViewById(R.id.refuse_traffic); + accept.setOnClickListener(v -> { + feedBackTraffic(1); + }); + refuse.setOnClickListener(v -> { + feedBackTraffic(0); + }); + //重新连接 + findViewById(R.id.notice_connect).setOnClickListener(v -> { + requestTrafficInfo(); + }); + } + + /** + * @param i 是否接受交通事故任务 + * 0不接收 1接受 + */ + private void feedBackTraffic(int i) { + CallerNoticeManager.getNoticeProvider().feedBackNoticeTraffic(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), 1); + } + + /** + * 获取交通事故详情 + */ + private void requestTrafficInfo() { + Log.d(TAG, "requestTrafficInfo"); + CallerNoticeManager.getNoticeProvider().requestAccidentInfo(mPushData.getInfoId(), MoGoAiCloudClientConfig.getInstance().getSn(), new NoticeNetCallBack() { + @Override + public void callBackWithResult(NoticeTrafficStyleInfo trafficInfo) { + Log.d(TAG, "交通事故详情::" + trafficInfo); + } + }); + } + + /** + * 根据推送消息渲染顶部图片/视频 + * type 0图片 1视频 + */ + private void playerShow() { + mVideoPlayer = findViewById(R.id.video_player); + thumbnailImage = findViewById(R.id.thumbnail_image); + playImageView = this.findViewById(R.id.notice_start); + playImageView.setOnClickListener(v -> { + startLive(); + }); + close = findViewById(R.id.notice_traffic_dialog_close); + close.setOnClickListener(v -> { + dismiss(); + }); + if (mPushData.getType() == 1) { + firstBitmap = BitmapHelper.getVideoThumbnail(mPushData.getPoiImgUrl());/*获取视频第一帧图*/ + complete(firstBitmap); + playImageView.setVisibility(View.VISIBLE); + } else { + MogoApisHandler.getInstance().getApis().getImageLoaderApi().displayImage(mPushData.getPoiImgUrl(), + thumbnailImage); + thumbnailImage.setImageBitmap(firstBitmap); + thumbnailImage.setVisibility(View.VISIBLE); + playImageView.setVisibility(View.INVISIBLE); + } mVideoPlayer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -83,7 +153,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog { } } }); -// startLive(); + } /** @@ -112,7 +182,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog { /** * 播放结束后 */ - private void complete(Bitmap firstbitmap, String path) { + private void complete(Bitmap firstbitmap) { thumbnailImage.setVisibility(View.VISIBLE); thumbnailImage.setImageBitmap(firstbitmap); playImageView.setImageResource(R.drawable.notice_video_play); @@ -125,7 +195,6 @@ public class NoticeTrafficDialog extends BaseFloatDialog { }); } - /** * 视频播放 */ @@ -139,118 +208,12 @@ public class NoticeTrafficDialog extends BaseFloatDialog { 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/res/drawable/notice_unsuccess_traffic.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/notice_unsuccess_traffic.png new file mode 100644 index 0000000000..b695dfcb86 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/notice_unsuccess_traffic.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 deleted file mode 100644 index 4c733621b6..0000000000 Binary files a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/video_play.png and /dev/null 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 a67be825e5..bdfcd635ca 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 @@ -38,7 +38,6 @@ android:layout_marginLeft="@dimen/dp_200" android:layout_marginTop="@dimen/dp_50" android:layout_marginRight="@dimen/dp_200" - android:src="@drawable/notice_unsuccess_image" app:layout_constraintBottom_toTopOf="@+id/module_push_dialog_bottom_title" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" @@ -47,25 +46,40 @@ + 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" /> + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="@id/video_player" + app:layout_constraintLeft_toLeftOf="@id/video_player" + app:layout_constraintRight_toRightOf="@id/video_player" + app:layout_constraintTop_toTopOf="@id/video_player" /> + + + app:layout_constraintRight_toRightOf="parent" /> getAccidentInfo(@FieldMap Map accidentParameters); + Observable getAccidentInfo(@FieldMap Map accidentParameters); /** - * 获取道路事故详情 + * 反馈对道路事件的操作 * * @param accidentParameters 请求数据(infoID事故ID;sn;status接受状态 0否 1是) * @return {@link BaseData} diff --git a/core/function-impl/mogo-core-function-notice/src/main/java/com/mogo/eagle/core/function/notice/network/NoticeNetWorkManager.java b/core/function-impl/mogo-core-function-notice/src/main/java/com/mogo/eagle/core/function/notice/network/NoticeNetWorkManager.java index a8573c4888..a6aaaa8647 100644 --- a/core/function-impl/mogo-core-function-notice/src/main/java/com/mogo/eagle/core/function/notice/network/NoticeNetWorkManager.java +++ b/core/function-impl/mogo-core-function-notice/src/main/java/com/mogo/eagle/core/function/notice/network/NoticeNetWorkManager.java @@ -5,7 +5,9 @@ import com.mogo.cloud.network.RetrofitFactory; import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.data.notice.NoticeNormalDetail; -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; +import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo; + +import com.mogo.eagle.core.function.api.notice.NoticeNetCallBack; import com.mogo.utils.logger.Logger; import java.util.HashMap; @@ -46,10 +48,11 @@ public class NoticeNetWorkManager { /** * 获取事故详细信息 * - * @param infoId 事故id - * @param sn + * @param infoId 事故id + * @param sn 车机sn + * @param callBack 回调 */ - public void requestAccidentInfo(String infoId, String sn) { + public void requestAccidentInfo(String infoId, String sn, NoticeNetCallBack callBack) { String snString = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn(); Map map = new HashMap<>(); map.put("sn", sn); @@ -57,15 +60,17 @@ public class NoticeNetWorkManager { mNoticeApiService.getAccidentInfo(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { + .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@NonNull BaseData baseData) { - + public void onNext(@NonNull NoticeTrafficStyleInfo noticeTrafficStyleInfo) { + if (noticeTrafficStyleInfo != null) { + callBack.callBackWithResult(noticeTrafficStyleInfo); + } } @Override @@ -87,12 +92,11 @@ public class NoticeNetWorkManager { * @param sn * @param status 是否接受 0否 1是 */ - public void sendAccidentAcceptStatus(String infoId, String sn, String status) { - String snString = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn(); + public void sendAccidentAcceptStatus(String infoId, String sn, int status) { Map map = new HashMap<>(); map.put("sn", sn); map.put("infoId", infoId); - map.put("status", status); + map.put("status", String.valueOf(status)); mNoticeApiService.sendAcceptStatus(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -129,7 +133,6 @@ public class NoticeNetWorkManager { Map map = new HashMap<>(); map.put("sn", sn); map.put("infoId", dbId); - mNoticeApiService.getNoticeDetail(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -158,5 +161,4 @@ public class NoticeNetWorkManager { } - } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStyleInfo.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStyleInfo.java index 5ac3e7863c..c0506d17eb 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStyleInfo.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStyleInfo.java @@ -1,13 +1,15 @@ package com.mogo.eagle.core.data.notice; +import com.mogo.eagle.core.data.BaseData; + import java.io.Serializable; /** * @author liujing - * @description 交通事故任务详情数据bean + * @description 交通事故任务详情数据 * @since: 10/26/21 */ -public class NoticeTrafficStyleInfo implements Serializable { +public class NoticeTrafficStyleInfo extends BaseData { private String infoId;//事故id private String poiType;//事故类型 private long dataCreateTime;//事故发生时间 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStylePushData.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStylePushData.java index c10d5b016b..f62fa64ce8 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStylePushData.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/NoticeTrafficStylePushData.java @@ -1,12 +1,14 @@ package com.mogo.eagle.core.data.notice; +import java.io.Serializable; + /** * @author Jing * @description 交警任务公告推送消息体 * 接口 http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=66917469 * @since: 10/28/21 */ -public class NoticeTrafficStylePushData { +public class NoticeTrafficStylePushData implements Serializable { private String msg; private String infoId; private String poiImgUrl; diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/IMoGoNoticeProvider.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/IMoGoNoticeProvider.java index c8ea129bcc..a5ab887ce0 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/IMoGoNoticeProvider.java +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/IMoGoNoticeProvider.java @@ -4,10 +4,10 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider; /** * @author Jing - * @description 云公告监听者 + * @description * @since: 10/27/21 */ public interface IMoGoNoticeProvider extends IMoGoFunctionServerProvider { - - + void feedBackNoticeTraffic(String infoId, String sn, int accept); + void requestAccidentInfo(String infoId, String sn,NoticeNetCallBack callBack); } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/NoticeNetCallBack.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/NoticeNetCallBack.java new file mode 100644 index 0000000000..54fd204423 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/notice/NoticeNetCallBack.java @@ -0,0 +1,12 @@ +package com.mogo.eagle.core.function.api.notice; + +import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo; + +/** + * @author Jing + * @description 网络请求回调 + * @since: 11/3/21 + */ +public interface NoticeNetCallBack { + void callBackWithResult(NoticeTrafficStyleInfo trafficInfo); +} diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/notice/CallerNoticeManager.java b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/notice/CallerNoticeManager.java index ad92134aed..f02b86fd56 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/notice/CallerNoticeManager.java +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/notice/CallerNoticeManager.java @@ -10,9 +10,7 @@ import static com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_AI_NOTICE */ public class CallerNoticeManager extends CallerBase { - private static IMoGoNoticeProvider getNoticeProvider() { + public static IMoGoNoticeProvider getNoticeProvider() { return getApiInstance(IMoGoNoticeProvider.class, PATH_AI_NOTICE); } - - } diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/CommonUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/CommonUtils.java index 144e1fbc62..b39ea6bcf0 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/CommonUtils.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/CommonUtils.java @@ -8,6 +8,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; @@ -24,17 +26,21 @@ import androidx.core.content.ContextCompat; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; +import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; +import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.DecimalFormat; import java.util.Enumeration; +import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java index 161d8f38e6..7844fbb8d6 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java @@ -24,7 +24,7 @@ public class RequestOptions { /** * Private constructor with some default initialization. */ - private RequestOptions( @CallerType Object caller ) { + public RequestOptions(@CallerType Object caller) { this.caller = caller; this.context = Util.getContext( caller ); this.parameter = Collections.emptyMap();